As Flutter developers, we've all been there. Your app crashes in production, users abandon it, and you don't find out until the 1-star reviews start rolling in. Traditional crash analytics tools are great, but they come with their own problems: complex setup, vendor lock-in, privacy concerns, and that dreaded delay before you actually see what went wrong.
What if you could get crash reports instantly, exactly where your team already communicates?
The Problem with Traditional Crash Analytics
Don't get me wrong — tools like Firebase Crashlytics and Sentry are powerful. But they have downsides:
- Delayed notifications: You often learn about crashes hours later
- Context switching: Checking another dashboard breaks your flow
- Privacy concerns: Sensitive data going to third-party servers
- Overkill for small teams: Full-featured analytics when you just need crash alerts
- Cost: Many solutions get expensive as your user base grows
Introducing crash_reporter
I built crash_reporter to solve a simple problem: get crash reports instantly, in the tools you already use, with zero third-party analytics involved.
It's a lightweight Flutter plugin that sends crash reports, errors, and custom logs to multiple platforms simultaneously — Telegram, Slack, Discord, and custom webhooks.
Why This Approach Works
Real-time notifications where you already are
Your team lives in Slack or Discord. Your ops team monitors Telegram. Why not send crash reports there directly?
Multi-platform flexibility
Enable one service or all four. Send production crashes to Slack, development errors to Discord, and critical alerts to Telegram — simultaneously.
Complete privacy control
No external analytics SDKs. No data leaves your app except what you explicitly send. Perfect for apps handling sensitive user data or operating in regulated industries.
Lightweight and dependency-free
No bloated SDKs. Just a simple, focused package that does one thing well.
Getting Started in 5 Minutes
1. Add the Package
dependencies:
crash_reporter: ^1.0.0
2. Set Up Your Notification Channels
Choose one or more platforms:
Telegram (my personal favorite for quick alerts):
- Search for @botfather and create a bot
- Get your Chat ID from @InstantChatIDBot
Slack: Create an Incoming Webhook in your workspace
Discord: Create a webhook in your server settings
Custom Webhook: Use any HTTP endpoint you control
3. Initialize in Your main.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
CrashReporter.initialize(
telegramConfig: TelegramConfig(
botToken: 'YOUR_BOT_TOKEN',
chatId: YOUR_CHAT_ID,
),
slackConfig: SlackConfig(
webhookUrl: 'YOUR_SLACK_WEBHOOK',
),
notificationConfig: NotificationConfig(
enableTelegram: true,
enableSlack: true,
sendCrashReports: true,
sendStartupEvents: true,
),
);
// Get notified when your app starts
CrashReporter.sendAppStartup();
// Catch all Flutter errors
FlutterError.onError = (details) {
CrashReporter.reportCrash(
error: details.exception,
stackTrace: details.stack ?? StackTrace.current,
context: 'Flutter UI Error',
fatal: true,
);
};
// Catch all Dart errors
PlatformDispatcher.instance.onError = (error, stack) {
CrashReporter.reportCrash(
error: error,
stackTrace: stack,
context: 'Runtime Error',
fatal: true,
);
return true;
};
runApp(const MyApp());
}
That's it! You're now getting instant crash reports.
Real-World Use Cases
Development Teams
Get instant feedback during testing. No more "it crashed but I don't know why" from QA.
Solo Developers
Monitor your production app without complex analytics setup. One Telegram bot gives you everything you need.
Multi-Environment Workflows
// Development: Discord only
// Staging: Slack only
// Production: Telegram + Custom webhook to your backend
Custom Business Logic
try {
await processPayment();
} catch (e, s) {
CrashReporter.reportCrash(
error: e,
stackTrace: s,
context: 'Payment Failed',
fatal: true,
extraData: {
'user_id': currentUser.id,
'amount': orderTotal,
'payment_method': paymentType,
},
);
}
Advanced Features
Track Custom Events
Not just crashes — track any important app events:
CrashReporter.sendEvent("User completed onboarding");
CrashReporter.sendEvent("Premium subscription activated");
Rich Context with Extra Data
Add custom metadata to understand exactly what happened:
CrashReporter.reportCrash(
error: error,
stackTrace: stackTrace,
context: 'Data Sync Failed',
fatal: false,
extraData: {
'sync_type': 'full',
'records_processed': 1523,
'network_status': 'wifi',
'battery_level': '45%',
},
);
App Startup Notifications
Know instantly when your app is deployed:
CrashReporter.sendAppStartup();
Perfect for tracking deployments across environments.
Privacy-First Design
In an era of data breaches and privacy regulations, crash_reporter gives you complete control:
- ✅ No third-party analytics servers
- ✅ You control what data is sent
- ✅ All credentials stored securely in memory
- ✅ GDPR compliant by design
- ✅ Perfect for healthcare, finance, and other regulated industries
When Should You Use This?
Perfect for:
- Small to medium teams wanting instant notifications
- Apps handling sensitive data
- Developers who prefer their existing communication tools
- Multi-environment setups (dev/staging/prod)
- Projects where you need custom crash handling
Consider traditional analytics if:
- You need advanced features like user sessions, ANR tracking, or performance monitoring
- You have a large team needing detailed crash analytics dashboards
- You want automatic grouping and duplicate detection
The Bottom Line
crash_reporter isn't trying to replace Firebase Crashlytics or Sentry. It's a focused tool for developers who want instant crash notifications in their existing workflow, without the overhead of full analytics platforms.
If you've ever wanted to:
- Get a Telegram message the moment your app crashes in production
- Send different crashes to different channels based on severity
- Keep complete control over your crash data
- Set up crash reporting in 5 minutes instead of 5 hours
Then crash_reporter might be exactly what you need.
Try It Out
Install it today and get your first crash report in minutes:
flutter pub add crash_reporter
Check out the full documentation and examples on pub.dev and the source code on GitHub.
Have feedback or feature requests? I'd love to hear how you're using crash_reporter! Drop a comment below or open an issue on GitHub.
Found this helpful? Give it a 👍 on pub.dev and star it on GitHub to help other developers discover it.
Happy coding, and may your crashes always be caught! 🚀
Top comments (0)