As the .NET MAUI ecosystem gains momentum, developers are keen to adopt robust error monitoring solutions for their mobile apps. Two popular contenders in this space are Sentry and Firebase Crashlytics. In this article, we’ll explore why Sentry stands out as a powerful choice for capturing both managed and unmanaged errors in .NET MAUI applications.
Features Comparison
Feature
Sentry
Firebase Crashlytics
Target Audience
Growing teams requiring deeper context, insights, and customizable workflow tools.
Hobbyists, solopreneurs, and small teams.
Insights & Context
Provides detailed insights into solving crashes and errors.
Offers basic crash reporting and error tracking.
Custom Workflow Tools
Customizable workflow tools for efficient issue management.
Limited customization options.
Product Investments
Enables innovation and scalability through product investments.
Basic functionality without extensive investment.
Real-time Monitoring
Real-time monitoring of app health and performance.
Real-time crash reporting.
These service features are pointing out for .NET MAUI applications.
Personal Experience
While developing mobile apps in .NET MAUI, I found out Sentry to be better than Firebase Crashlytics in a few areas outlined below:
Contexts,
It is a powerful way to see and track custom data from the device itself, also user information by allowing to set custom context of a given event. As developers, as much context we get of the error such as environment, culture, etc. the better. So, context are really useful.
Breadcrumbs,
We all know what breadcrumbs are for websites, in Sentry, we get these to understand from start to end, when the app started and the crash occurred, you see a graphical UI with the series of events that are helpful.
.NET Full Stack Trace,
This is probably the most wanted feature for error handling, for us as .NET developers, if we know on which code line the exception occurred then that will help us a lot.
Free for one user, this means only one user per Sentry account, which is fine for most of the cases.
Implementation
This is pretty easy, basically add the following NuGet package into your .csproj file:
Then configure it on the startup:
.UseSentry(options =>
{
// The DSN is the only required setting.
options.Dsn = “https://XXXXXXXXXXXX.ingest.us.sentry.io/XXXXXXX”;
// Use debug mode if you want to see what the SDK is doing.
// Debug messages are written to stdout with Console.Writeline,
// and are viewable in your IDE’s debug console or with ‘adb logcat’, etc.
// This option is not recommended when deploying your application.
options.Debug = true;
// Set TracesSampleRate to 1.0 to capture 100% of transactions for tracing.
// We recommend adjusting this value in production.
options.TracesSampleRate = 1.0;
// Other Sentry options can be set here.
})
The official documentation can be found here.
One More Thing
It may happen that when using Sentry on debug mode you get an exception when running on emulators, to solve this issue, what I did was just to set the directive #IF RELEASE so it loads Sentry on release mode only.
Conclusion
In the ever-evolving world of .NET MAUI development, choosing the right error monitoring tool can make a significant difference. While Firebase Crashlytics offers a straightforward solution for basic crash reporting, Sentry stands out with its comprehensive insights and customizable workflow tools. By opting for Sentry, you equip your team with the power to swiftly identify and resolve issues, ensuring a smoother and more reliable user experience.