Sentry tips
Sentry is our error and exception handling software of choice. We use the Sentry React Native library to track performance analytics in our apps. You can find the official documentation at the link here.
Guidelines
Issues with < 10 occurrences
Given the size of our user base, when an issue happens to less than 10 users we would be better off not even looking at it until / if it starts happening to more people. The only exception to this rule is if the issue is clearly caused by a mistake we made in our TypeScript code.
Always check the releases affected by an issue
Simply put: if an issue is only affecting an older version of the app, then we can safely mark the issue as “Resolved”
Ignoring issues
Sentry has a really cool feature that lets us ignore issues until it becomes a bigger problem:
Sentry Troubleshooting Tips
Not every issue reported on Sentry needs to be addressed.
In fact, a lot of them are simply impossible to reproduce.
This section shows some of the issues you can safely ignore when browsing through Sentry.
Invalid memory addresses
Issues like EXC_BAD_ACCESS are impossible to reproduce as they always point to a different memory address. The only exception to this rule is if an EXC_BAD_ACCESS is consistently happening for many (20+) users. Still, investigating its cause will be mission impossible. Most likely caused by heap corruption.
JSON Parse errors
JSON Parse errors are easy to fix: they only happen when calling JSON.parse
with strings that are not valid “stringified-objects”.
C++ / C errors (EXC_XXXXXX)
Issues such as these will also be impossible to reproduce simply because they happen in the C++ or C layer. In other words, this is closed source and we can't change this stuff anyways. Most likely caused by heap corruption.
SIGABRT errors
Also impossible to debug. Most likely caused by heap corruption.
SKDrawable errors
SkDrawable is a class from SkiaSharp. SkiaSharp is a 2D graphics system for . NET and C# powered by the open-source Skia graphics engine that is used extensively in Google products. This is most likely an issue coming from the Android Webview. Things to try:
→ Disable hardware acceleration for android in all webviews
→ Change the androidLayerType prop of the Webviews
****to hardware