These are chat archives for SudoPlz/react-native-bugsnag

6th
Jul 2016
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 10:41
@kattrali I'll be here for the next 8 hours at least, if you need anything. Hmm let me see if I understand this. Do you want me to POST to notify.bugsnag.com/js ? Currently I use your iOS AND Android sdk to send error reports so I don't call any endpoints myself.
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 10:46
@kattrali So to explain what we currently do: 1st we get ALL the javascript errors and pass them to the native side (either Obj-C or Java), then we call your (iOS or Android) sdk and notify with all the data we gathered from javascript. So the stacktrace has all the native errors and the first item of the native stacktrace , is the WHOLE javascript stacktrace. Now it would be nice if I could configure bugsnag to translate some parts of the stacktrace in the dashboard on the fly using a sourcemap I have uploaded... Is there a way to dictate that?
Delisa Mason
@kattrali
Jul 06 2016 16:20
@SudoPlz Yes, POST to notify.bugsnag.com/js. There is a setting in both the android and iOS SDKs to change the endpoint: http://docs.bugsnag.com/platforms/ios-objc/configuration-options/#notifyurl and http://docs.bugsnag.com/platforms/android/configuration-options/#setendpoint
Regarding the stacktrace, do you want the native stacktrace at all, or just the JS one?
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:21
no I did this library because I want them all
both the native one and the javascript
Delisa Mason
@kattrali
Jul 06 2016 16:21
we could potentially rename the default stacktrace to "Native stacktrace" or something, so the JS one is the default
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:21
because we have some native modules
Delisa Mason
@kattrali
Jul 06 2016 16:21
gotcha
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:22
so you're saying that if I change the endpoint to notify.bugsnag.com/js I'll be able to see the javascript stacktrace with correct line numbers and files?
@kattrali I have a suggestion to make.
Delisa Mason
@kattrali
Jul 06 2016 16:23
correct, though I'm going to make sure we are processing both stack traces
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:23
that might help you guys process it
process the stacktrace
I could add the javascript part of the stacktrace as a custom field, (either metadata, or error data you name it)
so that you can distinguish which part is javascript
if that helps you
so that you can render it in a better way on the dashboard
your idea of a native stacktrace and a javascript stacktrace combined is really cool
so I want to help you figure which is which
Delisa Mason
@kattrali
Jul 06 2016 16:25
sending the JS stacktrace as metadata would be pretty cool 🤔
thanks for the idea
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:26
I'm currently sending it with the name jsStacktrace
and it shows to my dashboard as custom type
Delisa Mason
@kattrali
Jul 06 2016 16:26
and I'd assume that doesn't unminify, since it isn't in the stacktrace field
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:27
no it doesn't
neither does the stacktrace field itself until now, of course I'm not yet using the modified url endpoint
also there will be different source-maps for each version
and currently theres no way to know which version of source-maps we're using
Delisa Mason
@kattrali
Jul 06 2016 16:27
there is
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:28
really? thats really nice to know
is there such a way on the dashboard or through a call ?
Delisa Mason
@kattrali
Jul 06 2016 16:28
we have a deployment API to match the appVersion property to a particular source map
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:28
aaah I see
by the version name I specify when uploading the source-maps right?
Delisa Mason
@kattrali
Jul 06 2016 16:28
it looks like we'll have to do some work to better support multiple stacktraces though. currently, we only have support for a single stacktrace, and one type of symbolication per event (iOS dSYM, Android Proguard, JS source maps, etc)
yep!
and then the appVersion specified within the library in the app
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:29
sounds good
well it would be a good start to get it working with the custom field
because I believe updating the whole dashboard would take more time
later in the future you could add a different project type (instead of iOS or javascript, or Other, you could make a CrossPlatform project type, or even a React-Native one)
Delisa Mason
@kattrali
Jul 06 2016 16:30
its about equal amounts of work, really. either stacktrace needs to become an array, or we have another first class metadata property
I think we should have either a "React Native" project type or maybe "Hybrid"
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:31
yeah
I could provide an array of objects that have fields like, lineNumber, column, file, message
if that makes your life easier
Delisa Mason
@kattrali
Jul 06 2016 16:33
can you send me an example of the two stacktraces, or a project name so I could look it up to get a feel for how the data looks?
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:34
Sure
React-Native javascript stacktrace:
java.lang.Error Placeavote error test android. 
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:139178 ReactJS.onSignInBtnPressed
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:53710 ReactJS.touchableHandlePress
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:23053 ReactJS._performSideEffectsForTransition
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:22969 ReactJS._receiveSignal
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:22743 ReactJS.touchableHandleResponderRelease
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16777 ReactJS.invokeGuardedCallback
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16610 ReactJS.executeDispatch
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16633 ReactJS.executeDispatchesInOrder
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16087 ReactJS.executeDispatchesAndRelease
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16098 ReactJS.executeDispatchesAndReleaseTopLevel
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16912 ReactJS.forEachAccumulated
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16260 ReactJS.processEventQueue
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16937 ReactJS.runEventQueueInBatch
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:16948 ReactJS.handleTopLevel
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:15880 ReactJS.<unknown>
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:17876 ReactJS.perform
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:32929 ReactJS.batchedUpdates
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:17106 ReactJS.batchedUpdates
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:15879 ReactJS._receiveRootNodeIDEvent
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:15941 ReactJS.receiveTouches
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:7413 ReactJS.__callFunction
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:7320 ReactJS.<unknown>
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:7271 ReactJS.guard
    index.android.bundle?platform=android&dev=true&hot=false&minify=false:7319 ReactJS.callFunctionReturnFlushedQueue
Delisa Mason
@kattrali
Jul 06 2016 16:37
In the meantime, since the simple hacks won't work to give you both a symbolicated iOS or Android stacktrace and a JS one, I'm going to draft how we should update the error reporting API to support multiple stacktraces and types
thanks!
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:40
An Android stacktrace (I'm sure you're already familiar with that)
Caused: java.lang.RuntimeException Could not connect to development server.
Try the following to fix the issue:
Ensure that the packager server is running
Ensure that your device/emulator is connected to your machine and has USB debugging enabled - run 'adb devices' to see a list of connected devices
If you're on a physical device connected to the same machine, run 'adb reverse tcp:8081 tcp:8081' to forward requests from your device
If your device is on the same Wi-Fi network, set 'Debug server host & port for device' in 'Dev settings' to y 
    ReactBridge.java:-2 com.facebook.react.bridge.ReactBridge.loadScriptFromAssets
    JSBundleLoader.java:32 com.facebook.react.bridge.JSBundleLoader$1.loadScript
    CatalystInstanceImpl.java:148 com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle
    ReactInstanceManagerImpl.java:851 com.facebook.react.ReactInstanceManagerImpl$4.call
    ReactInstanceManagerImpl.java:832 com.facebook.react.ReactInstanceManagerImpl$4.call
    MessageQueueThreadImpl.java:73 com.facebook.react.bridge.queue.MessageQueueThreadImpl$1.run
    Handler.java:739 android.os.Handler.handleCallback
    Handler.java:95 android.os.Handler.dispatchMessage
    MessageQueueThreadHandler.java:31 com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
    Looper.java:148 android.os.Looper.loop
    MessageQueueThreadImpl.java:197 com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run
    Thread.java:818 java.lang.Thread.run
Delisa Mason
@kattrali
Jul 06 2016 16:40
yep! good to know its in the familiar format.
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:40
well I'm not touching the native code
the error just gets caught by your native sdks
I don't touch any of that
I only append/add the javascript part
Delisa Mason
@kattrali
Jul 06 2016 16:41
right, just wasn't sure if RN made any runtime adjustments
good to know
this is really cool though, you guys have done some awesome work!
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:42
Well we like your service
Delisa Mason
@kattrali
Jul 06 2016 16:42
:)
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:43
Also we think this will attract lots of new customers to your service
because alogn with getsentry, you are the only other option
Delisa Mason
@kattrali
Jul 06 2016 16:43
well its definitely fun building developer tools.
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:43
yeah it is
Delisa Mason
@kattrali
Jul 06 2016 16:45
the suggestions are really helpful too, keep em coming. also complaints, since its nice to know what the pain points are
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:46
Well the dashobard is a bit confusing
it would be nice if there was some kind of breadcrumbs
to actually know you're IN a screen and you can go back, or something like that
for example when investigating an error
Delisa Mason
@kattrali
Jul 06 2016 16:47
that's a good one
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:47
Also have a simple way of knowing what filters are currently active
I've found myself trying to figure what filters are on at the moment.
It would be nice to preview all those on the top bar you have
and just be able to remove them all at once
I understand we can do that through the search bar
but it would be so much easier if it was just a toggle button or something
just an idea..
Delisa Mason
@kattrali
Jul 06 2016 16:49
gotcha. sounds like we could make the filters more discoverable then.
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 16:50
yeap
Delisa Mason
@kattrali
Jul 06 2016 16:50
there's a lot more than would fit as a list of toggles, though you can save sets that you use often.
(in the hamburger menu to the left of the filter bar)
Delisa Mason
@kattrali
Jul 06 2016 16:56
for example, I have a "just deployed" filter which is "last hour, new" to see which bugs appeared right after I did a deployment
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 17:56
aha I see
also I'm not sure if that is already possible, but I would like it if I could just keep all the error notifications and get an email each x amount of time.
For example, 3 Crashes were reported. I don't want to get 3 emails once they happened. I want to get 1 email that says there were 3 crashes with a minimum time of lets say 6 hours. During those 6 hours I don't want another email.
After the 6 hour period, if there were other crashes that took place, it would be nice to get notified.
And be able to configured that amount of time someone might want to only be notified once per 2 days.
Delisa Mason
@kattrali
Jul 06 2016 18:10
that makes sense. there are snooze settings where you can say "notify me when this happens 10 times" or "notify me when the number of errors like this spike". Its the little clock icon in the sidebar or action bar
Ioannis Kokkinidis
@SudoPlz
Jul 06 2016 22:26
@/all Guys my iOS knowledge is failing me, I have trouble getting rid of the 'Bugsnag/Bugsnag.h' file not found on the #import <Bugsnag/Bugsnag.h> line in RNBugsnag.m file of ios. Can you please help me get rid of this? I've spent the past 2 hours on it and Xcode doesn't cooperate at all. I switched from manual installation of Bugsnag to Cocoapods, and apparently something is missing from my Build Settings..... Others might experience the same problem too if we don't fix it.
This message was deleted
Important: Note that it only happens when I archive a project and NOT on debug... That could be a hint I guess.!