<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Caleb Jesusegun</title>
    <description>The latest articles on Forem by Caleb Jesusegun (@calebj).</description>
    <link>https://forem.com/calebj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F455585%2F81727ab4-1f30-4ff8-9822-0085f9b77ef5.jpeg</url>
      <title>Forem: Caleb Jesusegun</title>
      <link>https://forem.com/calebj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/calebj"/>
    <language>en</language>
    <item>
      <title>How to Integrate Firebase Crashlytics in your Flutter App</title>
      <dc:creator>Caleb Jesusegun</dc:creator>
      <pubDate>Tue, 10 Jan 2023 14:42:07 +0000</pubDate>
      <link>https://forem.com/calebj/how-to-integrate-firebase-crashlytics-in-your-flutter-app-5fn1</link>
      <guid>https://forem.com/calebj/how-to-integrate-firebase-crashlytics-in-your-flutter-app-5fn1</guid>
      <description>&lt;p&gt;Firebase Crashlytics is a lightweight, real-time crash reporter that collects, organize and group crash report highlighting the circumstances that led to them. It provides you with a platform to track, monitor, and prioritize these unexpected crash issues that arise in your mobile apps.  For more reasons why you need Firebase Crashlytics, visit this &lt;a href="https://dev.to/calebj/why-you-need-firebase-crashlytics-in-your-flutter-apps-3lk"&gt;article post&lt;/a&gt; that explains in detail.&lt;/p&gt;

&lt;p&gt;In this article, we’ll be looking at how to integrate Firebase Crashlytics into a sample flutter app. This is a Firebase login authentication app that makes use of the provider state management architecture. To follow up with the integration of Firebase Crashlytics, check out the starter project on &lt;a href="https://github.com/calebjesusegun/firebase_authentication_app/tree/starter_project" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Specifically, we’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up Crashlytics on the Firebase Console&lt;/li&gt;
&lt;li&gt;Integrating Crashlytics in a Flutter app&lt;/li&gt;
&lt;li&gt;Platform Integration for IOS&lt;/li&gt;
&lt;li&gt;Configure Crash Handlers&lt;/li&gt;
&lt;li&gt;Testing our sample app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Shall we?&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrating Crashlytics on Firebase Console
&lt;/h3&gt;

&lt;p&gt;First of all, Open the Firebase console to get started with Crashlytics. Then go to the &lt;strong&gt;Release &amp;amp; Monitor&lt;/strong&gt; section in the side panel of the console and click on ‘&lt;strong&gt;Crashlytics&lt;/strong&gt;’. Next, you’ll need to select the application either Android or IOS that you’re building for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1pzripbvqonw205f7u6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1pzripbvqonw205f7u6.png" alt="Firebase Crashlytics" width="800" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When this is done, click on the &lt;strong&gt;Enable Crashlytics&lt;/strong&gt; button to set up Crashlytics. After it’s been setup, you’ll be navigated to the Crashlytics Dashboard&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zd3qixy1g9byoceyajj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zd3qixy1g9byoceyajj.png" alt="Firebase Crashlytics Dashboard" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Integrating Crashlytics in a Flutter app&lt;/p&gt;

&lt;p&gt;We have set up Crashlytics in our Firebase console, the next step is to integrate it into our authentication app. Check out the starter project on &lt;a href="https://github.com/calebjesusegun/firebase_authentication_app/tree/starter_project" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The first step is to add the Firebase dependency that is responsible for connecting your Flutter app to your firebase project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F664ecnskb1wl7mebev9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F664ecnskb1wl7mebev9y.png" alt="firebase core" width="800" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, within the main top-level function in our flutter app ensure &lt;code&gt;WidgetsFlutterBinding&lt;/code&gt; is initialized and then initialize Firebase&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6q6yoqy5ddma84vf1w9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6q6yoqy5ddma84vf1w9.png" alt="WidgetsFlutterBinding" width="800" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we add the firebase_crashlytics dependency in pubspec.yaml file&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82glyfy0fmu08marf2ac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82glyfy0fmu08marf2ac.png" alt="firebase_crashlytics dependency" width="800" height="60"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we add the dependency to the android/app/build.gradle file path using the command below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjuvrn9n9rmbdug8q91i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjuvrn9n9rmbdug8q91i.png" alt="dependency" width="800" height="58"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then lastly we need to add the classpath in the android/build.gradle file&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehwpwssxcolqe73w64zi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehwpwssxcolqe73w64zi.png" alt="classpath" width="800" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Platform Integration for IOS
&lt;/h3&gt;

&lt;p&gt;To generate crash reports for IOS apps, Firebase Crashlytics needs to access your project's debug symbol (dSYM) files. You can configure Xcode to automatically produce your dSYMs, process them, and upload the files whenever you build your app through the following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open your project's Xcode workspace and select its project file in the left navigation.&lt;/li&gt;
&lt;li&gt;From the TARGETS list, select your main build target.&lt;/li&gt;
&lt;li&gt;Then click on the Build Settings tab, click All and search for debug information format.&lt;/li&gt;
&lt;li&gt;Set the Debug Information Format to DWARF with dSYM File for all your build types. This allows Xcode to produce dSYMs for your builds.&lt;/li&gt;
&lt;li&gt;Next is to process your dSYMs and upload the files.&lt;/li&gt;
&lt;li&gt;Click the Build Phases tab and select + &amp;gt; New Run Script Phase. &lt;/li&gt;
&lt;li&gt;Make sure to double-check that the new run script phase is your project's last build phase otherwise Crashlytics won't properly process dSYMs.&lt;/li&gt;
&lt;li&gt;Then expand the new Run Script section and add the following script under the Shell label&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe167pfletkst75zttpvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe167pfletkst75zttpvv.png" alt="Run Script" width="800" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then lastly in the input files section, add the paths for the locations of the following files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
The location of your project's dSYM files:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr803z0dfd98qgy8r43a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr803z0dfd98qgy8r43a.png" alt="project's dSYM files" width="800" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Then the location of your project's built Info.plist file:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckvznnmecxvno2pu5b6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckvznnmecxvno2pu5b6f.png" alt="Info.plist" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more information on dSYM files and how to manually upload dSYM files, visit &lt;a href="https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=ios" rel="noopener noreferrer"&gt;Get Deobfuscated Reports&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure Crash Handlers
&lt;/h3&gt;

&lt;p&gt;Crashlytics is now enabled in our authentication app. You can automatically catch all errors that are thrown within the Flutter framework by overriding &lt;code&gt;FlutterError.onError&lt;/code&gt; with &lt;code&gt;FirebaseCrashlytics.instance.recordFlutterFatalError&lt;/code&gt; in the main top-level function of the app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F531kg0atkwmbftg7ozjy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F531kg0atkwmbftg7ozjy.png" alt="Uncaught Errors" width="800" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When it comes to asynchronous errors that are not handled by the Flutter framework, you use &lt;code&gt;PlatformDispatcher.instance.onError&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8r0tr3ibzo8jp8zu65i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8r0tr3ibzo8jp8zu65i.png" alt="Asynchronous Errors" width="800" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes not all errors are caught by Flutter, there are zoned errors that can also occur as well. A common use-case where a Flutter error would not be enough is when an exception happens inside of an onPressed button. To catch such errors, you can use &lt;code&gt;runZonedGuarded&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcybp5z0obp1ahndo7yoo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcybp5z0obp1ahndo7yoo.png" alt="Uncaught errors in Flutter" width="800" height="684"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing our sample app
&lt;/h3&gt;

&lt;p&gt;In order to check whether the Firebase Crashlytics is active or not in the app, Go to the login_view and comment out the function that authenticates a user that wants to log in. Add this line of code in order to force a crash in our app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmu4m29o6pzslc7xqosjy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmu4m29o6pzslc7xqosjy.png" alt="Testing the sample app" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will make the app crash forcefully. Then you can go to the Crashlytics Dashboard to check the status report of the crash.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55bbq85hkrwnk2ba44fi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55bbq85hkrwnk2ba44fi.png" alt="Firebase Crashlytics" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;We’ve successfully integrated Firebase Crashlytics into our sample authentication app. In this article, you were introduced to Firebase Crashlytics, how to easily integrate it into your mobile apps and how to test for unexpected crashes when they occur.&lt;/p&gt;

&lt;p&gt;Check out the complete &lt;a href="https://github.com/calebjesusegun/firebase_authentication_app" rel="noopener noreferrer"&gt;source code&lt;/a&gt; for the sample app. If you have any questions or inquiries, feel free to reach out to me on Twitter: &lt;a href="https://twitter.com/CalebJesusegun" rel="noopener noreferrer"&gt;@CalebJ&lt;/a&gt; or LinkedIn: &lt;a href="https://www.linkedin.com/in/caleb-jesusegun/" rel="noopener noreferrer"&gt;@CalebJ&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Why you need Firebase Crashlytics in your Flutter Apps</title>
      <dc:creator>Caleb Jesusegun</dc:creator>
      <pubDate>Wed, 21 Dec 2022 09:07:39 +0000</pubDate>
      <link>https://forem.com/calebj/why-you-need-firebase-crashlytics-in-your-flutter-apps-3lk</link>
      <guid>https://forem.com/calebj/why-you-need-firebase-crashlytics-in-your-flutter-apps-3lk</guid>
      <description>&lt;p&gt;You have just finished building your first mobile app using the Flutter framework and now you’re excited to release it to both stores &lt;em&gt;(play store and app store)&lt;/em&gt;. But a few questions keep popping up in your mind before or after the release date;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How do you track unexpected crashes that happen while the users make use of the app?&lt;/li&gt;
&lt;li&gt;How do you troubleshoot to get detailed information about a crash and its impact on the users of the app?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A user expectation is to have a seamless experience while engaging a mobile app. Bad user experience leads to app uninstalls and negative app reviews that eventually affect the brand image. This fundamentally creates a need for a stable app that is bug-free (crash-free). Although this is feasible, it is not always the case. Some crashes may occur in runtime but not in debug mode,  making it difficult to detect and quickly resolve. Therefore a real-time crash reporter is needed to monitor such crashes.&lt;/p&gt;

&lt;p&gt;In this article, we will take a deep dive into Firebase Crashlytics and what it entails. Specifically, we’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Brief Introduction to Flutter and Firebase&lt;/li&gt;
&lt;li&gt;What is Firebase Crashlytics&lt;/li&gt;
&lt;li&gt;Benefits of Integrating Firebase Crashlytics in your Flutter app&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So…let’s get into it&lt;/p&gt;




&lt;h3&gt;
  
  
  Brief Introduction to Flutter and Firebase
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is Flutter
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Flutter is an open-source UI software development kit created by Google that uses Dart as the programming language. It is used to develop cross-platform applications for Android, iOS, Linux, macOS, Windows, and the web from a single codebase.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Flutter provides many advanced packages to work with databases such as Cloud Firestore provided by Firebase. Check out the &lt;a href="https://flutter.dev/" rel="noopener noreferrer"&gt;Official Flutter Documentation&lt;/a&gt; for more information on Flutter.&lt;/p&gt;

&lt;h4&gt;
  
  
  What is Firebase
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Firebase is a Google-backed application development software that enables developers to develop iOS, Android, and Web apps. It provides tools for tracking analytics, reporting and fixing app crashes, creating marketing and product experiments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Firebase also provides various plugins for pertinent functions such as cloud firestore, firebase analytics, and firebase crashlytics. Check out the &lt;a href="https://firebase.google.com/" rel="noopener noreferrer"&gt;Official Firebase Documentation&lt;/a&gt; for more information on Firebase.&lt;/p&gt;




&lt;h3&gt;
  
  
  What is Firebase Crashlytics
&lt;/h3&gt;

&lt;p&gt;Firebase Crashlytics is a lightweight, real-time crash reporter that collects, organize and group crash report highlighting the circumstances that led to them. It provides you with a platform to track, monitor, and prioritize these unexpected crash issues that arise in your mobile apps. This ensures app stability, simplifies debugging, and makes troubleshooting easier by giving you a snapshot of the problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxse43v8l6tbq5tmge6la.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxse43v8l6tbq5tmge6la.png" alt="Firebase Crashlytics Dashboard" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A crash report may contain the following information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The name and version of the local operating system.&lt;/li&gt;
&lt;li&gt;The runtime type of the error, for example, StateError or NoSuchMethodError.&lt;/li&gt;
&lt;li&gt;The stack trace generated by the crash includes the lines of code causing the crashes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Firebase Crashlytics also allows you to customize your crash reports by adding logs, keys, etc. It provides real-time alerts when a crash report suddenly increases in severity.&lt;/p&gt;

&lt;p&gt;The 3 core aspects of Firebase Crashlytics are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Logs&lt;/strong&gt;: Firebase Crashlytics logs each event of an app crash alongside the details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crash reports&lt;/strong&gt;: Firebase Crashlytics gives details on Crash reports whenever a crash occurs in the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack traces&lt;/strong&gt;: In the case of the app recovering from an error, Firebase Crashlytics helps to nonetheless report the error with the help of Dart Stack trace.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Benefits of Integrating Firebase Crashlytics in your Flutter app
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Access to Crash-Free Users (CFU) Metrics to Debug Faster&lt;/strong&gt;&lt;br&gt;
The Crash-Free Users metric provided by Firebase Crashlytics helps developers monitor and determine the health of their app based on the percentage of users who have not experienced a crash during the entire selected time range. This is made possible and accurate through the Crashlytics Flutter SDK which provides an API for capturing fatal event crashes that a user experiences in your mobile app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrc8kabdtel2g3huu41d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrc8kabdtel2g3huu41d.png" alt="Crash Free Users Metric" width="572" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Receive Crash Report Notifications in real-time with Crashlytics Alerts&lt;/strong&gt;&lt;br&gt;
Critical user issues or crash reports may occur at any time and the need to be notified as soon as they occur is very important. With the help of &lt;a href="https://firebase.google.com/docs/crashlytics/velocity-alerts" rel="noopener noreferrer"&gt;Velocity alerts&lt;/a&gt; in Firebase Crashlytics, you can configure real-time alerts by different levels of your app’s stability such as high-priority alerts, regression alerts, and new issue alerts.  They are particularly useful in the case of feature flags, when an issue in your app crosses a threshold that has been defined, it is a great signal to turn off the feature and investigate further. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Gain user insights with Custom logs and data&lt;/strong&gt;&lt;br&gt;
Firebase Crashlytics helps you track the state and sequence of your app usage prior to a crash through &lt;a href="https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=android#add-logs" rel="noopener noreferrer"&gt;custom logs&lt;/a&gt;. It shows up within the stack trace in your Crashlytics dashboard displaying all the crash report logs in one place.&lt;br&gt;
    Custom data gives you an insight into the user’s device information such as the brand name, model, android/ios version, etc, this helps when it comes to grouping various crash reports&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5whsgkd1xzaxlrou4ly7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5whsgkd1xzaxlrou4ly7.png" alt="Custom Data" width="800" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Reproduce crashes faster with a predefined Google Analytics event&lt;/strong&gt;&lt;br&gt;
When there is a need to capture every event your user triggers in your app manually, it can be very frustrating. However, through the help of Firebase Crashlytics with Google Analytics, you can automatically capture these events&lt;br&gt;
    They also further enhance the data captured with custom logs. It is found within your stack trace in the Crashlytics dashboard and it displays actions a user has taken prior to a crash as well as pertinent parameters within the event.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft99ep5v8qxphdwvyn9jv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft99ep5v8qxphdwvyn9jv.png" alt="Stack Trace Report" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In Conclusion, the mobile app ecosystem is very competitive therefore ensuring that your app doesn’t crash frequently is integral to the app's success. Firebase Crashlytics provides essential tools that help you debug crashes and get the most out of the crash reports. &lt;/p&gt;

&lt;p&gt;This article has explained the core aspects and benefits of integrating Firebase Crashlytics before or after the release of your app. Check out &lt;a href="https://firebase.google.com/docs/crashlytics" rel="noopener noreferrer"&gt;Firebase Crashlytics&lt;/a&gt; for further detailed information. In the next article post, we will look at how to integrate Firebase Crashlytics into your Flutter app. Thanks for reading.&lt;/p&gt;

&lt;p&gt;If you have any questions or inquiries, feel free to reach out to me on Twitter: &lt;a href="https://twitter.com/CalebJesusegun" rel="noopener noreferrer"&gt;@CalebJ&lt;/a&gt; or LinkedIn: &lt;a href="https://www.linkedin.com/in/caleb-jesusegun/" rel="noopener noreferrer"&gt;@CalebJ&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>cloud</category>
      <category>devto</category>
    </item>
  </channel>
</rss>
