Bugsnag est une plateforme de surveillance des erreurs et de stabilité des applications qui détecte, regroupe et hiérarchise automatiquement les bugs dans les environnements de production avec un contexte de diagnostic complet. Selon la Documentation Bugsnag, 2025, Bugsnag traite 6 milliards d'événements par mois pour plus de 7 000 clients, dont Airbnb, Lyft, Slack et PagerDuty.
Points clés
Bugsnag est une plateforme de surveillance de la stabilité des applications fondée en 2013 et acquise par SmartBear en 2019. La principale différence entre Bugsnag et ses concurrents est l'accent mis sur la stabilité en tant que métrique clé du produit, et pas seulement sur le nombre d'erreurs. La plateforme fournit un tableau de bord unifié pour iOS, Android, React Native, Flutter, le web et les services backend.
Chaque erreur dans Bugsnag reçoit une évaluation automatique de gravité (critical, warning, info) basée sur le contexte : si un crash s'est produit, si une fonction de paiement a été affectée ou si l'erreur se répète pour de nombreux utilisateurs. L'équipe ne voit pas seulement une liste de bugs, mais un backlog hiérarchisé indiquant l'impact sur l'activité.
Selon SmartBear (2024), les équipes utilisant Bugsnag réduisent le temps moyen de résolution de 40% grâce au regroupement automatique des doublons et au contexte complet de chaque événement. La plateforme s'intègre avec Slack, PagerDuty, Jira, GitHub et GitLab pour la création automatique de tâches à partir des erreurs.
Stability Score est la métrique clé de Bugsnag, affichant le pourcentage de sessions terminées sans erreur. La valeur est calculée comme le rapport entre les sessions sans crash et le nombre total de sessions sur une période. Un score de 99,9% signifie qu'une session sur 1 000 contient une erreur.
Les seuils du Stability Score sont intégrés au CI/CD : si après le déploiement d'une nouvelle version, le score tombe en dessous d'un seuil défini (par exemple 99,5%), Bugsnag bloque automatiquement la version ou envoie une alerte critique dans Slack. Le Release health dashboard montre la dynamique du score pour chaque version de l'application, permettant de suivre l'impact d'un changement spécifique sur la stabilité.
Bugsnag utilise un algorithme de classification automatique des erreurs avec trois niveaux de gravité. Critical — crashs de l'application, erreurs dans les scénarios de paiement affectant plus de 5% des utilisateurs. Warning — erreurs non fatales (exceptions gérées) affectant des fonctions individuelles. Info — journaux, avertissements de faible priorité. Cette approche évite la fatigue des alertes, où des centaines de notifications empêchent de se concentrer sur les problèmes vraiment critiques.
| Gravité | Exemple | Action |
|---|---|---|
| Critical | Crash au démarrage de l'application | Notification immédiate |
| Warning | Erreur de chargement de l'avatar | Tâche Jira pour le prochain sprint |
| Info | Délai d'attente lors du scan QR | Journalisation sans notification |
L'installation du SDK Bugsnag prend 5 minutes : ajouter une dépendance et initialiser avec une clé API du projet. Le SDK Bugsnag Android prend en charge Kotlin et Java, intercepte automatiquement les exceptions Java, les ANR et les erreurs natives (C/C++) via des signaux.
Le SDK est ajouté via Gradle et initialisé dans Application.onCreate. Bugsnag collecte automatiquement les informations sur l'appareil : modèle, version de l'OS, mémoire libre, niveau de batterie. Auto-notify est activé par défaut et envoie toutes les exceptions non gérées au serveur 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)
}
}
Le code initialise le SDK Bugsnag avec un suivi automatique des sessions et un temps de démarrage maximal de 5 secondes. Si l'application ne démarre pas dans ce délai, Bugsnag enregistre un événement de « démarrage lent » comme avertissement.
Le SDK Bugsnag iOS prend en charge Swift et Objective-C, intercepte NSException, les exceptions Mach (SIGABRT, SIGSEGV) et les signaux du système d'exploitation. Le SDK est compatible avec iOS 11+ et SwiftUI, et crée automatiquement des breadcrumbs pour tous les événements d'interface utilisateur : tapotements, transitions, gestes.
import Bugsnag
class AppDelegate: UIResponder, UIApplicationDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Bugsnag.start(withApiKey: "YOUR_API_KEY")
// configuration supplémentaire
return true
}
}
Le code Swift initialise Bugsnag avec une configuration minimale. Toutes les exceptions non gérées et les crashs sont automatiquement envoyés au tableau de bord Bugsnag avec le contexte complet de l'appareil et la pile d'appels.
Les Breadcrumbs dans Bugsnag sont un journal structuré des événements précédant une erreur. Chaque breadcrumb contient un horodatage, un type (navigation, request, state, error, manual) et des métadonnées arbitraires. Bugsnag enregistre automatiquement des breadcrumbs pour les événements d'interface utilisateur dans iOS et Android, les changements d'état de l'application (arrière-plan, premier plan) et les requêtes réseau.
Les développeurs peuvent ajouter des breadcrumbs personnalisés pour la logique métier : « l'utilisateur a ajouté un article au panier », « demande de création de commande envoyée ». Lorsqu'une erreur se produit, tous les breadcrumbs des 30 dernières secondes sont joints à l'événement. Bugsnag prend également en charge le « state » — un dictionnaire de données arbitraire transmis avec toutes les erreurs de session.
Bugsnag.leaveBreadcrumb(
message = "Order created",
metadata = mapOf(
"order_id" to "ORD-12345",
"total" to "49.99"
),
type = BreadcrumbType.STATE
)
Bugsnag.setExtraData(
"user_tier", "premium"
)
Le code laisse un breadcrumb concernant la création de la commande et définit des informations supplémentaires sur le forfait de l'utilisateur. Lorsqu'une erreur se produit dans cette session, Bugsnag joint le contexte avec le numéro de commande et le type d'utilisateur.
Bugsnag compte automatiquement les sessions — chaque lancement d'application est considéré comme une nouvelle session. Le rapport entre les sessions avec erreurs et le nombre total de sessions forme le Stability Score. Le session tracking affecte la tarification : Bugsnag est sous licence en fonction du nombre de sessions suivies, et non du volume d'erreurs, ce qui le distingue des modèles de tarification par événement de Sentry et de ses concurrents.
Release tracking est un mécanisme qui lie chaque erreur à une version spécifique de l'application et à un commit du référentiel. Bugsnag détecte automatiquement la version à partir d'Info.plist (iOS) ou de build.gradle (Android) et affiche le nombre d'erreurs par version dans le tableau de bord. Cela permet de voir immédiatement si un problème a été introduit par la dernière version.
Si après le déploiement de la version 2.4.1, le nombre d'erreurs critiques a augmenté de 3 fois par rapport à la 2.4.0, Bugsnag marque cette version comme « instable » et envoie une alerte. L'intégration CI/CD permet de bloquer la promotion d'un build vers le staging ou la production si le Stability Score tombe en dessous du seuil. Les plugins pour Jenkins, GitHub Actions et GitLab CI transmettent les métriques de stabilité au pipeline.
Selon le Bugsnag Stability Benchmark (2024), 68% des erreurs dans les applications mobiles sont introduites par les nouvelles versions, et ne sont pas des bugs anciens. Le release tracking réduit le temps de détection des régressions de plusieurs heures à quelques minutes après le déploiement.
Il y a trois acteurs principaux sur le marché de la surveillance des erreurs : Bugsnag, Sentry et Firebase Crashlytics. Bugsnag se distingue par son modèle de tarification basé sur les sessions (plutôt que sur les événements), l'accent mis sur le Stability Score et la hiérarchisation automatique par gravité. Sentry offre une surveillance plus approfondie des performances avec du tracing distribué et est open source. Crashlytics est une solution gratuite aux fonctionnalités de base, intégrée à l'écosystème Firebase.
| Caractéristique | Bugsnag | Sentry | Crashlytics |
|---|---|---|---|
| Prix (départ) | Gratuit jusqu'à 5 000 sessions | Gratuit jusqu'à 5 000 événements | Gratuit |
| Surveillance des performances | Limitée | Complete avec tracing distribué | Non |
| SDK pour Flutter | Oui | Oui | Limité |
| Auto-hébergement | Non | Oui (open source) | Non |
| Stability Score | Oui (métrique clé) | Non | Non |
Le choix entre les outils dépend des priorités : si la métrique clé est la stabilité de l'application en production, Bugsnag fournit la métrique la plus intuitive. Si une analyse approfondie des performances avec tracing distribué est nécessaire — Sentry. Pour une surveillance de base gratuite avec intégration à l'écosystème Google — Crashlytics.
Questions fréquentes
L'algorithme prend en compte trois facteurs : le type d'exception (crash ou gérée), le nombre d'utilisateurs affectés et le contexte du scénario. La gravité Critical est attribuée si l'erreur s'est produite sur l'écran principal ou dans un flux de paiement et a affecté plus de 1% des utilisateurs. Le développeur peut remplacer manuellement la gravité via l'API ou la configuration du SDK.
Oui, Bugsnag fournit des SDK pour React Native (avec prise en charge de la nouvelle architecture) et Flutter (compatible avec Dart 3.x). Les deux SDK prennent en charge la collecte automatique de breadcrumbs pour la navigation, les requêtes réseau et l'état de l'application, ainsi que l'instrumentation personnalisée pour la logique métier.
Oui, Bugsnag fournit une intégration bidirectionnelle avec Jira : une nouvelle erreur peut créer automatiquement une tâche dans Jira, et la fermeture d'une tâche dans Jira fait passer l'erreur à l'état « résolue » dans Bugsnag. Jira Cloud et Jira Server (via Jira Connect) sont pris en charge.
Le SDK Bugsnag ajoute environ 1,5 Mo à la taille de l'APK/IPA dans une build de version. C'est moins que Sentry (environ 2 Mo) mais plus que Firebase Crashlytics (environ 0,8 Mo). Il est recommandé de supprimer le SDK des builds de débogage pour accélérer la compilation, en le conservant uniquement pour les configurations de test et de version.
Oui, Bugsnag prend en charge les langages backend : Ruby, Python, Node.js, Java, .NET, Go, PHP. Les erreurs backend sont affichées dans le même tableau de bord que les erreurs mobiles, regroupées par service. Cela permet de suivre la stabilité de bout en bout : si une API tombe, le développeur peut voir si le problème vient du client ou du serveur.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi