Bugsnag је платформа за мониторинг грешака и стабилности апликација која аутоматски открива, групише и приоритизује багове у production окружењу са комплетним дијагностичким контекстом. Према Bugsnag Documentation, 2025, Bugsnag обрађује 6 милијарди догађаја месечно за више од 7 000 клијената, укључујући Airbnb, Lyft, Slack и PagerDuty.
Главне тачке
Bugsnag је платформа за мониторинг стабилности апликација, основана 2013. године и купљена од стране SmartBear 2019. године. Главна разлика Bugsnag-а од конкурената је фокус на стабилности као кључној метрици производа, а не само на броју грешака. Платформа пружа јединствену контролну таблу за iOS, Android, React Native, Flutter, веб и backend сервисе.
Свака грешка у Bugsnag-у добија аутоматску процену severity (critical, warning, info) на основу контекста: да ли се догодио краш апликације, да ли је погођена функција плаћања, да ли се грешка понавља за многе кориснике. Тим види не само листу багова, већ приоритизовани backlog са утицајем на посао.
Према 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)
}
}
Код иницијализује Bugsnag SDK са аутоматским праћењем сесија и максималним временом покретања од 5 секунди. Ако се апликација не покрене за то време, Bugsnag ће забележити догађај „slow launch" као упозорење.
Bugsnag iOS SDK подржава Swift и Objective-C, пресреће NSException, Mach изузетке (SIGABRT, SIGSEGV) и сигнале оперативног система. SDK је компатибилан са iOS 11+ и SwiftUI, аутоматски креира breadcrumbs за све UI догађаје: кликове, навигацију, гестове.
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-у су структурирани дневник догађаја који претходе грешци. Сваки breadcrumbs садржи временску ознаку, тип (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 — механизам повезивања сваке грешке са одређеном верзијом апликације и комитом у репозиторијуму. Bugsnag аутоматски одређује верзију из Info.plist (iOS) или build.gradle (Android) и приказује на контролној табли број грешака по верзијама. Ово омогућава да се одмах види да ли је проблем унет последњим издањем.
Ако је након примене верзије 2.4.1 број критичних грешака порастао 3 пута у односу на 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 | Да (кључна метрика) | Не | Не |
Избор између алата зависи од приоритета: ако је кључни показатељ стабилност апликације у production-у, 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).
Bugsnag SDK додаје приближно 1.5 MB величини APK/IPA у release билду. То је мање од Sentry-а (око 2 MB), али више од Firebase Crashlytics-а (око 0.8 MB). Препоручује се уклањање SDK-а из debug билдова ради убрзавања компилације, остављајући га само за тест и release конфигурације.
Да, Bugsnag подржава backend језике: Ruby, Python, Node.js, Java, .NET, Go, PHP. Backend грешке се приказују на истој контролној табли као и мобилне, са груписањем по сервисима. Ово омогућава праћење свеобухватне стабилности: ако је API пао, програмер види да ли је проблем везан за клијента или сервер.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође