{"id":842,"date":"2026-08-10T12:38:42","date_gmt":"2026-08-10T07:08:42","guid":{"rendered":"https:\/\/www.shakebug.com\/blog\/?p=842"},"modified":"2026-08-11T10:49:23","modified_gmt":"2026-08-11T05:19:23","slug":"flutter-crash-reporting-sdk-setup-guide","status":"publish","type":"post","link":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/","title":{"rendered":"Flutter Crash Reporting: Complete Setup Guide with Shakebug"},"content":{"rendered":"<p>A Flutter app can crash in two places: the Dart layer and the native layer underneath it (Kotlin\/Java on Android, Swift\/Objective-C on iOS). A crash reporting SDK that only catches Dart exceptions misses the native crashes, and vice versa. This guide walks through adding <a href=\"https:\/\/www.shakebug.com\/mobile-app-bug-reporting\/flutter\">Shakebug&#8217;s Flutter SDK<\/a> to your app so both layers are covered, plus the shake-to-report flow that captures a screenshot, screen recording, network logs, console logs, and device state alongside every crash and bug report.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Why_Flutter_crash_reporting_needs_both_layers\"><\/span>Why Flutter crash reporting needs both layers<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Flutter exceptions surface through <code>FlutterError.onError<\/code> and, for errors outside the Flutter framework (async gaps, isolates), through <code>PlatformDispatcher.instance.onError<\/code> or a <code>runZonedGuarded<\/code> wrapper. Native crashes \u2014 a bad platform channel call, a third-party native SDK conflict, an out-of-memory kill \u2014 don&#8217;t go through either of those. They show up in Android&#8217;s crash reporting (via <code>Thread.UncaughtExceptionHandler<\/code> or a native signal handler) or iOS&#8217;s crash reporting (via <code>NSSetUncaughtExceptionHandler<\/code> or a signal handler), completely separate from anything Dart-side.<\/p>\n<p>Shakebug&#8217;s Flutter plugin wraps the same native Android\/iOS crash handlers Shakebug ships standalone, and covers Dart-layer exceptions automatically once you wrap your app in <code>ShakebugSDK<\/code> \u2014 there&#8217;s no separate handler to wire up for either layer, <code>allowCrashReport<\/code> (on by default) covers both.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Before_you_start\"><\/span>Before you start<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>You&#8217;ll need:<\/p>\n<ul>\n<li>A Flutter project (works with FFI, platform channels, or plain Dart \u2014 no framework requirements beyond Flutter itself)<\/li>\n<li>Android Studio or Xcode set up for your existing Android\/iOS build targets<\/li>\n<li>A Shakebug account (free, no credit card)<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Step_1_Create_a_Shakebug_account\"><\/span>Step 1: Create a Shakebug account<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Go to shakebug.com and sign up. Create a new app in the dashboard and select Flutter as the platform \u2014 this generates the app keys you&#8217;ll need in Step 2 and preconfigures the dashboard for Dart + native crash grouping.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_2_Get_your_app_keys\"><\/span>Step 2: Get your app keys<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Every Shakebug app has separate keys per platform binary:<\/p>\n<ul>\n<li><strong>Android app key<\/strong> \u2014 used when your Flutter app builds an Android target<\/li>\n<li><strong>iOS app key<\/strong> \u2014 used when your Flutter app builds an iOS target<\/li>\n<\/ul>\n<p>Copy both from Dashboard &gt; App Settings &gt; Application Keys. You&#8217;ll pass these into the SDK during initialization in Step 6.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_3_Install_the_Flutter_package\"><\/span>Step 3: Install the Flutter package<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Add the dependency to <code>pubspec.yaml<\/code>:<\/p>\n<pre><code>dependencies:\r\n  flutter:\r\n    sdk: flutter\r\n  shakebug: ^1.0.9<\/code><\/pre>\n<p>Then install:<\/p>\n<pre><code>flutter pub get<\/code><\/pre>\n<p>Or skip the manual edit and run this from your project root \u2014 it does both steps for you:<\/p>\n<pre><code>flutter pub add shakebug<\/code><\/pre>\n<p>Full platform docs, including optional configuration flags, are in Shakebug&#8217;s <a href=\"https:\/\/www.shakebug.com\/installation-docs#Flutter\">Flutter installation guide<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_4_Configure_Android\"><\/span>Step 4: Configure Android<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Add these permissions to <code>android\/app\/src\/main\/AndroidManifest.xml<\/code>:<\/p>\n<pre><code>&lt;uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"\/&gt;\r\n&lt;uses-permission android:name=\"android.permission.VIBRATE\"\/&gt;<\/code><\/pre>\n<p>Only if you enable screen-capture-triggered reporting on Android 11+:<\/p>\n<pre><code>&lt;uses-permission android:name=\"android.permission.CAPTURE_VIDEO_OUTPUT\"\/&gt;<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Step_5_Configure_iOS\"><\/span>Step 5: Configure iOS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Add these keys to <code>ios\/Runner\/Info.plist<\/code>:<\/p>\n<pre><code>&lt;key&gt;NSCameraUsageDescription&lt;\/key&gt;\r\n&lt;string&gt;Shakebug captures screenshots and optional video for bug reports.&lt;\/string&gt;\r\n&lt;key&gt;NSMicrophoneUsageDescription&lt;\/key&gt;\r\n&lt;string&gt;Shakebug records audio when video capture is enabled.&lt;\/string&gt;<\/code><\/pre>\n<p>No manual <code>pod install<\/code> step is needed \u2014 Flutter&#8217;s build handles CocoaPods automatically for this integration.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_6_Initialize_in_maindart\"><\/span>Step 6: Initialize in main.dart<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code>import 'package:flutter\/material.dart';\r\nimport 'package:shakebug\/shakebug.dart';\r\n\r\nvoid main() {\r\n  runApp(\r\n    ShakebugSDK(\r\n      androidAppKey: 'YOUR_ANDROID_APP_KEY',\r\n      iosAppKey: 'YOUR_IOS_APP_KEY',\r\n      child: MaterialApp(\r\n        home: const HomeScreen(),\r\n      ),\r\n    ),\r\n  );\r\n}<\/code><\/pre>\n<p>That&#8217;s it \u2014 no error handlers to wire up. <code>allowCrashReport<\/code> defaults to true, so once your app is wrapped in <code>ShakebugSDK<\/code>, crash capture runs automatically for both the Dart and native layers.<\/p>\n<p>A few optional calls, usable anywhere after <code>ShakebugSDK<\/code> is mounted:<\/p>\n<p><strong>Identify the current user<\/strong><\/p>\n<pre><code>await ShakebugSDK.setcustomUser(id: '12345', name: 'John Doe', email: 'john@example.com');<\/code><\/pre>\n<p><strong>Attach a custom event to the next report<\/strong><\/p>\n<pre><code>await ShakebugSDK.addEventKey(name: 'button_clicked', value: 'login_submit');<\/code><\/pre>\n<p><strong>Read a Remote Code value from the dashboard<\/strong><\/p>\n<pre><code>final remote = await ShakebugSDK.fetchRemoteCodeValue('welcome_message');<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Step_7_Test_the_integration\"><\/span>Step 7: Test the integration<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Trigger a manual test report before you ship \u2014 a button that throws inside its onPressed handler is enough:<\/p>\n<pre><code>ElevatedButton(\r\n  onPressed: () {\r\n    throw Exception('Shakebug test crash');\r\n  },\r\n  child: const Text('Trigger test crash'),\r\n)<\/code><\/pre>\n<p>Run the app on a physical device (shake gesture won&#8217;t fire reliably on some emulators), shake the device or tap the button, and confirm the report lands in the Shakebug dashboard with the screenshot, device info, and stack trace attached. Test both an Android build and an iOS build separately \u2014 a working Android integration doesn&#8217;t guarantee the iOS native hook is wired up, since they&#8217;re configured independently in Steps 4 and 5.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"What_you_get_beyond_a_stack_trace\"><\/span>What you get beyond a stack trace<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A stack trace tells you where the code broke. It doesn&#8217;t tell you what the user was doing, what they saw, or what the last few network calls returned. Shakebug attaches to every crash and every manual report:<\/p>\n<ul>\n<li>An annotated screenshot and optional screen recording of the moment it happened<\/li>\n<li>Network request\/response logs leading up to the crash<\/li>\n<li>Console logs<\/li>\n<li>Full device state (OS version, memory, battery, orientation, connectivity)<\/li>\n<li>Session Journey \u2014 the sequence of screens and actions that led to the crash, not just the crash itself<\/li>\n<\/ul>\n<p>Crash AI clusters duplicate crashes into a single issue automatically, so a crash hitting 400 users doesn&#8217;t show up as 400 separate tickets. And because Shakebug also tracks sessions, retention cohorts, and events, the same SDK that reports the crash can show whether it&#8217;s concentrated in a specific user segment or app version \u2014 without wiring up a second analytics SDK.<\/p>\n<p>Shakebug&#8217;s free plan doesn&#8217;t require a credit card, which matters if you&#8217;re evaluating a crash reporting tool for a side project or an early-stage app before committing to a paid plan.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Frequently_asked_questions\"><\/span>Frequently asked questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Whats_the_best_bug_reporting_tool_for_Flutter\"><\/span><strong>What&#8217;s the best bug reporting tool for Flutter?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>It depends on whether you need crash reporting alone or crash reporting plus a way for testers and users to report non-crash bugs with full context. Firebase Crashlytics is a solid, free option if you only need Dart\/native crash stack traces and are already in the Firebase ecosystem. If you also need shake-to-report bug submissions with screenshots, screen recordings, and network logs attached \u2014 useful for QA teams and beta testers, not just crash triage \u2014 Shakebug covers both crash reporting and manual bug reporting in one SDK across Flutter, iOS, Android, <a href=\"https:\/\/www.shakebug.com\/blog\/react-native-crash-reporting-guide-shakebug\/\">React Native<\/a>, and web.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Does_Shakebug_catch_native_crashes_in_a_Flutter_app_or_only_Dart_exceptions\"><\/span><strong>Does Shakebug catch native crashes in a Flutter app, or only Dart exceptions?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Both, automatically. The Flutter plugin wraps Shakebug&#8217;s native Android and iOS crash handlers, so once you wrap your app in <code>ShakebugSDK<\/code>, native crashes and Dart exceptions are captured the same way \u2014 there&#8217;s no separate configuration per layer.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Does_adding_a_crash_reporting_SDK_slow_down_my_Flutter_app\"><\/span><strong>Does adding a crash reporting SDK slow down my Flutter app?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Crash and bug reporting SDKs generally run in the background and only activate fully (screenshot, recording) at the moment of a shake gesture or a crash, not continuously.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Can_I_use_Shakebug_alongside_Firebase_Crashlytics\"><\/span><strong>Can I use Shakebug alongside Firebase Crashlytics?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Technically yes \u2014 nothing stops you from running two crash reporting SDKs \u2014 but you&#8217;ll get duplicate alerting and split data. Most teams pick one as the system of record for crash triage.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Does_this_work_with_Flutter_web\"><\/span><strong>Does this work with Flutter web?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Not through this package. The shakebug Flutter plugin covers Android and iOS only. For a Flutter app&#8217;s web build, you&#8217;d need Shakebug&#8217;s separate JavaScript SDK, which isn&#8217;t documented as a tested integration path for Flutter-web output specifically.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Flutter app can crash in two places: the Dart layer and the native layer underneath it (Kotlin\/Java on Android, Swift\/Objective-C on iOS). A crash reporting SDK that only catches Dart exceptions misses the native crashes, and vice versa. This guide walks through adding Shakebug&#8217;s Flutter SDK to your app so both layers are covered, [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":843,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[83],"tags":[],"class_list":["post-842","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-flutter-crash-reporting"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Flutter Crash Reporting SDK Setup Guide - Shakebug<\/title>\n<meta name=\"description\" content=\"Add crash and bug reporting to your Flutter app in minutes. Step-by-step Shakebug SDK setup for Android and iOS, with an FAQ on picking a Flutter bug reporting tool.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flutter Crash Reporting SDK Setup Guide - Shakebug\" \/>\n<meta property=\"og:description\" content=\"Add crash and bug reporting to your Flutter app in minutes. Step-by-step Shakebug SDK setup for Android and iOS, with an FAQ on picking a Flutter bug reporting tool.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Shakebug\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-10T07:08:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-11T05:19:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3000\" \/>\n\t<meta property=\"og:image:height\" content=\"2000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Charmi Gheewala\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Charmi Gheewala\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/\"},\"author\":{\"name\":\"Charmi Gheewala\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/4f5fcd39b06001b71935092e575b8fb0\"},\"headline\":\"Flutter Crash Reporting: Complete Setup Guide with Shakebug\",\"datePublished\":\"2026-08-10T07:08:42+00:00\",\"dateModified\":\"2026-08-11T05:19:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/\"},\"wordCount\":1035,\"publisher\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png\",\"articleSection\":[\"Flutter Crash Reporting\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/\",\"url\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/\",\"name\":\"Flutter Crash Reporting SDK Setup Guide - Shakebug\",\"isPartOf\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png\",\"datePublished\":\"2026-08-10T07:08:42+00:00\",\"dateModified\":\"2026-08-11T05:19:23+00:00\",\"description\":\"Add crash and bug reporting to your Flutter app in minutes. Step-by-step Shakebug SDK setup for Android and iOS, with an FAQ on picking a Flutter bug reporting tool.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage\",\"url\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png\",\"contentUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png\",\"width\":3000,\"height\":2000,\"caption\":\"Integrate Shakebug in Flutter App\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.shakebug.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flutter Crash Reporting: Complete Setup Guide with Shakebug\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#website\",\"url\":\"https:\/\/www.shakebug.com\/blog\/\",\"name\":\"Shakebug - Blog\",\"description\":\"Shakebug\",\"publisher\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.shakebug.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#organization\",\"name\":\"Shakebug - Blog\",\"url\":\"https:\/\/www.shakebug.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png\",\"contentUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png\",\"width\":192,\"height\":76,\"caption\":\"Shakebug - Blog\"},\"image\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/4f5fcd39b06001b71935092e575b8fb0\",\"name\":\"Charmi Gheewala\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/04\/228222518_138283981782120_5883453821041377581_n.jpg\",\"contentUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/04\/228222518_138283981782120_5883453821041377581_n.jpg\",\"caption\":\"Charmi Gheewala\"},\"description\":\"A full-stack developer with over 5 years of work experience in designing, developing, and implementing mobile &amp; web applications using a variety of technologies and programming languages. In a challenging role as a full-stack developer, I would like to utilize my wide range of development experience and practical technical know-how\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flutter Crash Reporting SDK Setup Guide - Shakebug","description":"Add crash and bug reporting to your Flutter app in minutes. Step-by-step Shakebug SDK setup for Android and iOS, with an FAQ on picking a Flutter bug reporting tool.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/","og_locale":"en_US","og_type":"article","og_title":"Flutter Crash Reporting SDK Setup Guide - Shakebug","og_description":"Add crash and bug reporting to your Flutter app in minutes. Step-by-step Shakebug SDK setup for Android and iOS, with an FAQ on picking a Flutter bug reporting tool.","og_url":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/","og_site_name":"Shakebug","article_published_time":"2026-08-10T07:08:42+00:00","article_modified_time":"2026-08-11T05:19:23+00:00","og_image":[{"width":3000,"height":2000,"url":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png","type":"image\/png"}],"author":"Charmi Gheewala","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Charmi Gheewala","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#article","isPartOf":{"@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/"},"author":{"name":"Charmi Gheewala","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/4f5fcd39b06001b71935092e575b8fb0"},"headline":"Flutter Crash Reporting: Complete Setup Guide with Shakebug","datePublished":"2026-08-10T07:08:42+00:00","dateModified":"2026-08-11T05:19:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/"},"wordCount":1035,"publisher":{"@id":"https:\/\/www.shakebug.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png","articleSection":["Flutter Crash Reporting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/","url":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/","name":"Flutter Crash Reporting SDK Setup Guide - Shakebug","isPartOf":{"@id":"https:\/\/www.shakebug.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png","datePublished":"2026-08-10T07:08:42+00:00","dateModified":"2026-08-11T05:19:23+00:00","description":"Add crash and bug reporting to your Flutter app in minutes. Step-by-step Shakebug SDK setup for Android and iOS, with an FAQ on picking a Flutter bug reporting tool.","breadcrumb":{"@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#primaryimage","url":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png","contentUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/08\/shakebug-flutter-blog-banner.png","width":3000,"height":2000,"caption":"Integrate Shakebug in Flutter App"},{"@type":"BreadcrumbList","@id":"https:\/\/www.shakebug.com\/blog\/flutter-crash-reporting-sdk-setup-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.shakebug.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Flutter Crash Reporting: Complete Setup Guide with Shakebug"}]},{"@type":"WebSite","@id":"https:\/\/www.shakebug.com\/blog\/#website","url":"https:\/\/www.shakebug.com\/blog\/","name":"Shakebug - Blog","description":"Shakebug","publisher":{"@id":"https:\/\/www.shakebug.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.shakebug.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.shakebug.com\/blog\/#organization","name":"Shakebug - Blog","url":"https:\/\/www.shakebug.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png","contentUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png","width":192,"height":76,"caption":"Shakebug - Blog"},"image":{"@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/4f5fcd39b06001b71935092e575b8fb0","name":"Charmi Gheewala","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/04\/228222518_138283981782120_5883453821041377581_n.jpg","contentUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/04\/228222518_138283981782120_5883453821041377581_n.jpg","caption":"Charmi Gheewala"},"description":"A full-stack developer with over 5 years of work experience in designing, developing, and implementing mobile &amp; web applications using a variety of technologies and programming languages. In a challenging role as a full-stack developer, I would like to utilize my wide range of development experience and practical technical know-how"}]}},"_links":{"self":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts\/842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/comments?post=842"}],"version-history":[{"count":5,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts\/842\/revisions"}],"predecessor-version":[{"id":848,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts\/842\/revisions\/848"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/media\/843"}],"wp:attachment":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/media?parent=842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/categories?post=842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/tags?post=842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}