Bugsnag یک پلتفرم مانیتورینگ خطا و پایداری برنامه است که به طور خودکار باگها را در محیط تولید با زمینه تشخیصی کامل شناسایی، گروهبندی و اولویتبندی میکند. طبق Bugsnag Documentation, 2025، Bugsnag ماهانه 6 میلیارد رویداد را برای بیش از 7 000 مشتری پردازش میکند، از جمله Airbnb، Lyft، Slack و PagerDuty.
نکات اصلی
Bugsnag یک پلتفرم مانیتورینگ پایداری برنامه است که در سال 2013 تأسیس شد و در سال 2019 توسط SmartBear خریداری شد. تفاوت اصلی Bugsnag با رقبا تمرکز بر پایداری به عنوان معیار کلیدی محصول است، نه صرفاً تعداد خطاها. این پلتفرم یک داشبورد واحد برای iOS، Android، React Native، Flutter، وب و سرویسهای بکاند فراهم میکند.
هر خطا در Bugsnag بر اساس زمینه ارزیابی خودکار severity (critical, warning, info) دریافت میکند: آیا کرش برنامه رخ داده، آیا عملکرد پرداخت تحت تأثیر قرار گرفته، آیا خطا برای بسیاری از کاربران تکرار میشود. تیم نه فقط لیست باگها، بلکه یک بکلاگ اولویتبندی شده با نشاندهنده تأثیر بر کسبوکار را میبیند.
به گفته SmartBear (2024)، تیمهایی که از Bugsnag استفاده میکنند، میانگین زمان حل حادثه را به لطف گروهبندی خودکار تکراریها و زمینه کامل هر رویداد 40% کاهش میدهند. این پلتفرم با Slack، PagerDuty، Jira، GitHub و GitLab برای ایجاد خودکار وظایف مربوط به خطاها یکپارچه میشود.
Stability Score — معیار کلیدی Bugsnag که درصد جلسات تکمیلشده بدون خطا را نشان میدهد. مقدار به عنوان نسبت تعداد جلسات بدون کرش به تعداد کل جلسات در یک دوره محاسبه میشود. نمره 99.9% به این معنی است که 1 از 1000 جلسه حاوی خطا است.
آستانههای Stability Score با CI/CD یکپارچه شدهاند: اگر پس از استقرار نسخه جدید، نمره زیر آستانه تعیینشده (مثلاً 99.5%) کاهش یابد، Bugsnag به طور خودکار انتشار را مسدود میکند یا یک هشدار بحرانی به Slack ارسال میکند. Release health dashboard پویایی نمره را برای هر نسخه برنامه نشان میدهد و امکان ردیابی تأثیر تغییر خاص بر پایداری را فراهم میکند.
Bugsnag از الگوریتم طبقهبندی خودکار خطاها در سه سطح severity استفاده میکند. Critical — کرشهای برنامه، خطاهای سناریوهای پرداخت که بیش از 5% کاربران را تحت تأثیر قرار میدهند. Warning — خطاهای غیرمرگبار (handled exceptions) که بر عملکردهای جداگانه تأثیر میگذارند. Info — لاگها، هشدارهای کماولویت. این رویکرد از "خستگی از هشدار" جلوگیری میکند، زمانی که صدها اعلان تمرکز روی مشکلات واقعاً بحرانی را غیرممکن میکند.
| Severity | مثال | اقدام |
|---|---|---|
| Critical | کرش هنگام ورود به برنامه | اعلان فوری |
| Warning | خطای بارگذاری آواتار | وظیفه در Jira برای اسپرینت بعدی |
| Info | تایماوت هنگام اسکن QR | ثبت لاگ بدون اعلان |
نصب Bugsnag SDK 5 دقیقه طول میکشد: افزودن وابستگی و مقداردهی اولیه با کلید API پروژه. Bugsnag Android SDK از Kotlin و Java پشتیبانی میکند، به طور خودکار استثناهای Java، ANR و خطاهای Native (C/C++) را از طریق سیگنالها میگیرد.
SDK از طریق Gradle متصل میشود و در Application.onCreate مقداردهی اولیه میشود. Bugsnag به طور خودکار اطلاعات دستگاه را جمعآوری میکند: مدل، نسخه سیستمعامل، حافظه آزاد، سطح شارژ باتری. Auto-notify به طور پیشفرض فعال است و تمام استثناهای مدیریتنشده را به سرور Bugsnag ارسال میکند.
import com.bugsnag.android.Bugsnag
import com.bugsnag.android.Configuration
class App : Application() {
override fun onCreate() {
super.onCreate()
val config = Configuration("YOUR_API_KEY")
config.autoTrackSessions = true
config.launchDurationMillis = 5_000
Bugsnag.start(this, config)
}
}
کد SDK Bugsnag را با ردیابی خودکار جلسات و حداکثر زمان راهاندازی 5 ثانیه مقداردهی اولیه میکند. اگر برنامه در این مدت راهاندازی نشود، Bugsnag رویداد "slow launch" را به عنوان هشدار ثبت میکند.
Bugsnag iOS SDK از Swift و Objective-C پشتیبانی میکند، NSException، استثناهای Mach (SIGABRT، SIGSEGV) و سیگنالهای سیستمعامل را میگیرد. SDK با iOS 11+ و SwiftUI سازگار است، به طور خودکار برای همه رویدادهای UI breadcrumbs ایجاد میکند: کلیکها، انتقالها، ژستها.
import Bugsnag
class AppDelegate: UIResponder, UIApplicationDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Bugsnag.start(withApiKey: "YOUR_API_KEY")
// پیکربندی اضافی
return true
}
}
کد Swift Bugsnag را با حداقل پیکربندی راهاندازی میکند. همه استثناهای مدیریتنشده و کرشها به طور خودکار با زمینه کامل دستگاه و پشته فراخوانی به داشبورد Bugsnag ارسال میشوند.
Breadcrumbs در Bugsnag یک لاگ ساختاریافته از رویدادهای قبل از خطا است. هر breadcrumb شامل یک برچسب زمانی، نوع (navigation, request, state, error, manual) و ابرداده دلخواه است. Bugsnag به طور خودکار breadcrumbs را برای رویدادهای UI در iOS و Android، تغییرات وضعیت برنامه (background, foreground) و درخواستهای شبکه ثبت میکند.
توسعهدهنده میتواند breadcrumbs سفارشی برای منطق کسبوکار اضافه کند: "کاربر محصول را به سبد خرید اضافه کرد"، "درخواست ایجاد سفارش ارسال شد". هنگام بروز خطا تمام breadcrumbs 30 ثانیه آخر به رویداد پیوست میشوند. Bugsnag همچنین "state" را پشتیبانی میکند — یک دیکشنری داده دلخواه که با تمام خطاهای جلسه منتقل میشود.
Bugsnag.leaveBreadcrumb(
message = "Order created",
metadata = mapOf(
"order_id" to "ORD-12345",
"total" to "49.99"
),
type = BreadcrumbType.STATE
)
Bugsnag.setExtraData(
"user_tier", "premium"
)
کد یک breadcrumb درباره ایجاد سفارش باقی میگذارد و اطلاعات اضافی درباره تعرفه کاربر تنظیم میکند. در صورت بروز خطا در این جلسه، Bugsnag زمینهای با شماره سفارش و نوع کاربر به آن ضمیمه میکند.
Bugsnag به طور خودکار تعداد جلسات را شمارش میکند — هر بار راهاندازی برنامه یک جلسه جدید محسوب میشود. نسبت جلسات با خطا به تعداد کل جلسات Stability Score را تشکیل میدهد. Session tracking در قیمتگذاری در نظر گرفته میشود: Bugsnag بر اساس تعداد جلسات ردیابیشده مجوزدهی میشود، نه حجم خطاها، که آن را از مدلهای پرداخت به ازای رویداد در Sentry و رقبا متمایز میکند.
Release tracking — مکانیزم ارتباط هر خطا با نسخه خاص برنامه و commit در مخزن. Bugsnag به طور خودکار نسخه را از Info.plist (iOS) یا build.gradle (Android) تعیین میکند و در داشبورد تعداد خطاها را بر اساس نسخه نمایش میدهد. این امکان را فراهم میکند که بلافاصله ببینیم آیا مشکل با آخرین انتشار ایجاد شده است یا خیر.
اگر پس از استقرار نسخه 2.4.1 تعداد خطاهای بحرانی نسبت به 2.4.0 سه برابر افزایش یابد، Bugsnag این نسخه را به عنوان "ناپایدار" علامتگذاری میکند و هشدار ارسال میکند. یکپارچگی CI/CD امکان مسدود کردن ارتقای بیلد به staging یا production را در صورت کاهش Stability Score زیر آستانه فراهم میکند. افزونههای Jenkins، GitHub Actions و GitLab CI معیارهای پایداری را به pipeline منتقل میکنند.
طبق Bugsnag Stability Benchmark (2024)، 68% خطاها در برنامههای موبایل توسط نسخههای جدید وارد میشوند و باگهای قدیمی نیستند. Release tracking زمان تشخیص پسرفت را از ساعتها به چند دقیقه پس از استقرار کاهش میدهد.
در بازار error monitoring سه بازیگر اصلی وجود دارد: Bugsnag، Sentry و Firebase Crashlytics. Bugsnag با مدل قیمتگذاری مبتنی بر جلسات (نه رویدادها)، تمرکز بر Stability Score و اولویتبندی خودکار severity متمایز میشود. Sentry performance monitoring عمیقتری با distributed tracing و کد منبع باز ارائه میدهد. Crashlytics — راهحل رایگان با عملکردهای پایه، یکپارچه با اکوسیستم Firebase.
| ویژگی | Bugsnag | Sentry | Crashlytics |
|---|---|---|---|
| قیمت (شروع) | رایگان تا 5 000 جلسه | رایگان تا 5 000 رویداد | رایگان |
| Performance monitoring | محدود | کامل با distributed tracing | خیر |
| SDK برای Flutter | بله | بله | محدود |
| Self-hosted | خیر | بله (open source) | خیر |
| Stability Score | بله (معیار کلیدی) | خیر | خیر |
انتخاب بین ابزارها به اولویتها بستگی دارد: اگر شاخص کلیدی پایداری برنامه در تولید است، Bugsnag واضحترین معیار را ارائه میدهد. اگر تحلیل عمیق عملکرد با distributed tracing نیاز است — Sentry. برای مانیتورینگ پایه رایگان با یکپارچگی با اکوسیستم Google — Crashlytics.
سوالات متداول
الگوریتم سه عامل را در نظر میگیرد: نوع استثنا (کرش یا handled)، تعداد کاربران تحت تأثیر و زمینه سناریو. Critical severity اگر خطا در صفحه اصلی یا جریان پرداخت رخ داده و بیش از 1% کاربران را تحت تأثیر قرار داده باشد، اختصاص مییابد. توسعهدهنده میتواند severity را به صورت دستی از طریق API یا پیکربندی SDK تغییر دهد.
بله، Bugsnag SDK برای React Native (با پشتیبانی از new architecture) و Flutter (سازگاری با Dart 3.x) ارائه میدهد. هر دو SDK از جمعآوری خودکار breadcrumbs برای ناوبری، درخواستهای شبکه و وضعیت برنامه و همچنین ابزار دقیق سفارشی برای منطق کسبوکار پشتیبانی میکنند.
بله، Bugsnag یکپارچگی دوطرفه با Jira فراهم میکند: یک خطای جدید میتواند به طور خودکار یک وظیفه در Jira ایجاد کند، و بسته شدن یک وظیفه در Jira وضعیت خطا را به "resolved" در Bugsnag تغییر میدهد. Jira Cloud و Jira Server (از طریق Jira Connect) پشتیبانی میشوند.
SDK Bugsnag تقریباً 1.5 MB به اندازه APK/IPA در بیلد release اضافه میکند. این کمتر از Sentry (حدود 2 MB) اما بیشتر از Firebase Crashlytics (حدود 0.8 MB) است. توصیه میشود SDK را از بیلدهای debug برای سرعت بخشیدن به کامپایل حذف کنید و فقط برای پیکربندیهای تست و release نگه دارید.
بله، Bugsnag از زبانهای بکاند پشتیبانی میکند: Ruby, Python, Node.js, Java, .NET, Go, PHP. خطاهای بکاند در همان داشبورد خطاهای موبایل با گروهبندی بر اساس سرویسها نمایش داده میشوند. این امکان ردیابی سرتاسری پایداری را فراهم میکند: اگر API از کار بیفتد، توسعهدهنده میبیند که آیا مشکل مربوط به کلاینت است یا سرور.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید