Sauter au contenu principal

App Health Check : Le guide 2026 pour les applications JavaScript

Un guide pratique d'audit de l'état d'une application Capacitor et Electron. Contrôles en temps réel, mises à jour, télémétrie, sécurité, scripts CI et étapes de reversion.

App Health Check : Le guide 2026 pour les applications JavaScript

Une mise à jour JavaScript routine est déployée le vendredi après-midi. L'application s'ouvre, l'authentification semble normale et les comptes de crash restent sans remarque. Puis la procédure de paiement commence à échouer pour un sous-ensemble de dispositifs, tandis que les tableaux de bord de l'App Store et du Play Console restent trop en retard pour permettre une décision de reversion confiante.

Cet incident révèle la faiblesse de considérer un Vérification de l'état de l'application en tant que revue de tableau de bord. Une mise en production saine n'est pas seulement celle qui évite de planter. Elle doit démarrer rapidement, afficher les écrans importants, terminer les parcours critiques, atteindre la bonne version de backend, et fournir suffisamment de télémétrie pour que l'ingénieur en charge puisse agir avant que les données de magasin retardées ne rattrapent.

Table des matières

L'Incident de l'Après-Midi de Vendredi Qui Déclenche Ce Manuel

Le premier rapport sonne généralement vague : « Le checkout est cassé pour certains utilisateurs. » Le support a quelques captures d'écran, l'ingénierie a un bundle récent, et les consoles du magasin montrent aucune regression évidente. L'équipe compare les journaux, reproduit le flux sur un appareil, et découvre que l'erreur dépend d'une combinaison d'état d'actualisation, de forme de réponse backend, et d'une ancienne coquille native.

C'est pas une session de débogage. C'est une faillite du système de mise en production.

Les tableaux de bord majeurs des magasins d'applications sont encore en retard de 24 heures pour la plupart des indicateurs clés de performance et jusqu'à 72 heures pour les taux de crash et d'ANRselon la référence de retard de telemétrie du magasin. Ces tableaux de bord restent utiles pour l'analyse de tendance, mais ils sont trop lents pour servir comme seul déclencheur de retour en arrière pendant une incident en direct.

Règle pratique : Les consoles du magasin vous disent ce qui s'est passé après le retard de signalement. Votre metteur à jour et votre telemétrie de runtime doivent vous dire ce que fait la mise en production actuelle.

A un check de santé récurrent, l'équipe dispose de trois niveaux d'évidence :

  • Qualité de l'exécution : crashs, ANR, comportement de démarrage, affichage de l'écran, erreurs et pression sur les ressources.
  • Résultats de l'utilisateur : achèvement de la connexion, succès de la commande de paiement, confirmation de paiement et autres parcours que les utilisateurs reconnaissent comme un succès ou un échec.
  • Livraison de la mise à jour : adoption, installations échouées, appareils bloqués, comportement de canal et état de retrait.

Chaque niveau nécessite un levier opérationnel correspondant. Une régression de crash peut nécessiter l'arrêt d'une mise à jour ou la réversion d'un bundle JavaScript. Une dépendance de serveur en panne nécessite une remédiation de service, pas un retrait de l'application. Un chemin de mise à jour brisé nécessite des contrôles de canal et une enquête au niveau de l'appareil.

La réponse pratique devrait commencer par un calendrier, pas une enquête de responsabilité. Enregistrez quand le bundle a été publié, lequel canal l'a reçu, quand le premier parcours échoué est apparu et lesquelles versions ont été affectées. Ensuite, utilisez un guide de réponse à l'incident pour les équipes mobiles pour attribuer un propriétaire, conserver les preuves et décider si l'action la plus sûre est une pause de canal, un retrait ou une mise à jour native. Le but de ce processus est simple :

The purpose of this process is simple: réduire les échecs silencieux et raccourcir la distance entre un signal mauvais et une action sécurisée. Le reste de la vérification de l'état de santé devrait être conçu autour de cet objectif.

Définir les critères de santé qui prédisent la douleur de l'utilisateur

Une mise en production le vendredi peut faire apparaître des tableaux de bord de magasin verts alors que les utilisateurs échouent à se connecter, à effectuer un achat ou à recevoir la mise à jour. Définissez « sain » avant cet incident, en termes qui relient chaque signal à une mise en production, une décision CI ou un retour en arrière. Les données de télémétrie ont également un trou de 24 à 72 heures, donc les événements côté appareil doivent couvrir la période avant que les rapports de plateforme deviennent fiables.

Le premier niveau décrit si les utilisateurs peuvent effectuer des travaux significatifs :

  1. Sessions sans crash. Utilisez le point de référence largement cité de environ 99,93 % pour iOS et 99,81 % pour Android, documenté dans le framework de référence de l'état de santé de l'application. Traitez ces valeurs comme des indicateurs de revue, pas des garanties universelles. Ségmentez-les par mise en production, système d'exploitation, famille de dispositif et groupe de déploiement. Une chute spécifique à la mise en production devrait suspendre l'expansion ou déclencher un retour en arrière du bundle.
  2. Comportement des ANR A un interface gelée peut bloquer la connexion, le paiement ou la confirmation sans provoquer une panne. Groupes les ANR par version et flux, puis vérifiez les opérations de pont de navigation, les appels de plugin et les opérations de pont natif qui peuvent bloquer le thread principal. La correction peut appartenir à code ou CI, tandis que le levier de déploiement est un arrêt.
  3. Préparation et disponibilité de l'écran. Mesurez le temps nécessaire pour interagir, et non seulement le lancement du processus. Un shell qui s'ouvre rapidement mais laisse le premier écran utile vide est toujours malade. Définissez un seuil de CI pour les régressions et inspectez les traces de l'appareil lorsque cela échoue.
  4. Le succès de la voie critique. Les connexions, les recherches, les paiements, la synchronisation et les déconnections nécessitent des événements de réussite explicites. Une réponse HTTP ne prouve pas que l'utilisateur a atteint la confirmation. Un déclenchement devrait identifier la voie affectée avant que personne ne choisisse le roulage.

Une liste de quatre principaux indicateurs de santé de l'application utilisés pour mesurer et prédire les points de douleur de l'utilisateur.

Separez les portes de déploiement des signaux de diagnostic.

Les portes de déploiement comprennent généralement des sessions sans panne, des ANR, la préparation, l'authentification et la voie utilisateur la plus précieuse. Les signaux de diagnostic comprennent la pression de la mémoire, l'impact sur la batterie, la croissance de l'espace de stockage, la latence de réseau, les classes d'erreurs HTTP et la rendu de la navigation Web. Ils expliquent la failure et guident la remédiation, mais ne devraient pas bloquer automatiquement chaque déploiement.

Écrivez chaque critère avec quatre champs :

Champ Exemple
Signal Vérification de la transaction
Segment Lancement, plateforme, région, famille de dispositif
Règle de revue Comparer avec le groupe stable précédent
Action Arrêter la mise en production, inspecter les journaux, ou rétablir le bundle

Utilisez cela Conseils de surveillance de la santé de l'application En tant que point de départ, affectez ensuite chaque signal à une personne ou une rotation et documentez le levier qui peut modifier son résultat. Gardez les signaux bruts visibles. Un seul score peut cacher une grave erreur de paiement derrière une activité de fond saine.

Une mise en production saine est stable, réactive, observable et capable de terminer les tâches que les utilisateurs valorisent. Elle est également connectée à une action que l'ingénieur de garde peut prendre.

Vérifications de temps d'exécution que vous pouvez configurer cette semaine

Instrumentez l'application où l'utilisateur expérimente du travail, et non seulement où le processus signale la vie. Une application Capacitor peut capturer les exceptions JavaScript, les crashes natives, les échecs de pont, les temps de navigation, et les événements de parcours. Une application Electron peut ajouter les échecs de processus de rendu, les erreurs de processus principal, les échecs de préchargement, la disponibilité de la fenêtre, et les observations de ressources.

Une vérification de santé d'application pratique mesure la stabilité et la performance ensembley compris le taux de crash, le taux d'ANR, le temps de démarrage, le temps de rendu de l'écran, le taux d'erreur, et l'utilisation des ressources. La la ligne directrice de la vérification de santé de la performance mobile met également l'accent sur la segmentation par version de mise en production et par cohorte de déploiement. Sans cette segmentation, une ancienne version saine peut cacher une nouvelle version en faillite.

Démarrez par les signaux qui changent une décision

Capturer un identifiant de session, une version de l'application, une version de la coquille native, une plateforme, une classe de dispositif, une région, et un canal de déploiement avec chaque événement de santé. Évitez d'insérer des données personnelles dans ces champs. Le contexte permet à l'ingénieur de garde de répondre « qui est touché ? » avant d'ouvrir un débogueur.

Définissez un cible et une réponse pour chaque signal :

  • Crashes : Comparez les sessions sans crash avec les indicateurs de référence du plateau ci-dessus. Une baisse spécifique à la version devrait suspendre le groupe affecté tandis que les ingénieurs identifient la limite de pile ou de plugin.
  • ANRs : Groupez les événements par écran et par opération. Les gelages répétés pendant une appelle de pont indiquent une remédiation différente de celle des gelages pendant la migration de la base de données.
  • Temps de démarrage : Marquez le point à partir duquel l'écran interactif est utilisable. Un résultat lent peut provenir d'actifs web surdimensionnés, d'une initialisation synchrone, de vérifications de certificats ou d'un plugin qui s'exécute avant la navigation.
  • Rendu de l'écran : Émettez des événements de début et de disponibilité autour de la commande, de la connexion, de la recherche et d'autres écrans de haute valeur. Les événements de disponibilité manquants révèlent souvent une erreur silencieuse qui ne sera pas signalée par les rapports de crash.
  • Taux d'erreur : Enregistrez les classes d'erreurs normalisées, les familles de statut et les noms d'opération. N'enregistrez pas les jetons, les détails de paiement ou les corps de requête complets.
  • Utilisation des ressources : Surveillez la mémoire, le stockage, le comportement de la batterie et les pannes de réseau comme preuves de soutien. Une tendance de ressources compte le plus lorsque cela se corrèl’avec un voyage échoué ou une ANR.

La table ci-dessous est délibérément conservatrice. Lorsque le bref fournit un point de référence, il est inclus. Les autres bandes devraient être choisies à partir de votre propre ligne de base stable plutôt que d'être inventées comme des limites universelles.

Signal Unité Bande saine Pourquoi cela compte
Taux de session sans crash Pourcentage Environ 99,93 % sur iOS, 99,81 % sur Android comme points de référence Détection des sessions qui se terminent inopinément
Taux d'ANR Événements ou sessions Pas de régression spécifique à la version de sortie par rapport au groupe stable Identifie les interfaces figées
Temps de lancement Millisecondes ou secondes Stable par rapport à la version précédente Montre si l'application devient utilisable rapidement
Temps de rendu de l'écran Millisecondes ou secondes Stable pour les écrans critiques Révèle les parcours lents ou incomplets
Taux d'erreur Événements par opération Stable par opération et version Connecte les erreurs de serveur ou de client aux tâches de l'utilisateur
Utilisation des ressources Mesures de mémoire, de stockage, de batterie et de réseau Aucune dégradation inexplicable liée à une version spécifique Aide à expliquer les gel, les sorties et les appareils dégradés

Instrumentez l'action, et non seulement l'alarme

Un événement de panne devrait se lier à une version et à un chemin de reversion. Une erreur de vérification devrait se lier à l'étape échouée et à la classe de réponse. Une régression de lancement devrait se lier à la phase d'initialisation qui a consommé le temps.

Pour les Capacitor équipes, maintenez l'instrumentation proche des limites JavaScript et natives, puis validez-la sur des appareils physiques. Pour Electron, collectez des contextes de processus de rendu et principal séparément car un processus peut échouer tandis que l'autre semble en bonne santé. Le Capacitor ensemble de suivi de performances peut aider les équipes à relier ces signaux à une investigation au niveau de la version.

Surchages de santé et vérifications CI qui détectent les problèmes avant que les utilisateurs ne le fassent

Aucun processus en cours n'est une preuve que l'application est prête. Votre backend peut accepter une connexion TCP tout en ayant une pool de base de données épuisée, une cache non disponible ou un service externe critique en temps d'attente.

Utilisez un point de terminaison de disponibilité dédié et non authentifié comme /healthz. Le point de terminaison doit retourner 200 lorsque l'application et les dépendances critiques sont en bonne santé, et 503 lorsqu'elles ne le sont pas, en suivant les lignes directrices de mise en œuvre du point de terminaison de santé . Ces lignes directrices recommandent également de garder le check sous500 ms , en vérifiant la base de données, la cache et les services externes critiques, et en définissant des temps d'attente pour chaque dépendance.Faites que la réponse soit utile et limitée

Retournez une réponse de forme stable et compacte. Incluez un statut global et des états de composants lisibles par machine, mais n'exposez jamais des informations d'identification, des traces de pile, des hostnames internes ou des configurations sensibles. Un check de disponibilité doit échouer clairement lorsque une dépendance requise est indisponible, tandis que les services optionnels doivent rester diagnostiques si l'application peut toujours servir sa fonctionnalité de base.

Validez plus que le statut __CAPGO_KEEP_0__:

Validate more than the status code:

  • Vérifiez que la réponse est un JSON valide avec les champs attendus.
  • Vérifiez que l'endpoint atteint la version de backend prévue.
  • Testez la route à partir de régions et de routes réseau pertinentes.
  • Fixez des temps limites independants afin qu'une dépendance lente ne bloque pas l'ensemble de l'itération.
  • Maintenez séparés la disponibilité et la prêtêt lorsque l'infrastructure doit distinguer l'échec du processus de l'échec de la dépendance.

Une réponse 200 avec un JSON mal formé ou un certificat expiré n'est pas une application saine du point de vue de l'utilisateur.

Un diagramme illustrant les cinq étapes des portes de qualité de l'intégration continue, incluant la construction, les tests de santé, l'analyse, l'intégration et la mise en production.

Insérez le contrôle dans le chemin de la mise en production.

Lancez l'endpoint contre un environnement de prévisualisation déployé en CI. Exercez ensuite les API opérations utilisées par l'application, suivies d'un petit ensemble de flux de l'interface utilisateur critiques sur un émulateur ou une ferme de dispositifs. La construction doit échouer lorsque l'environnement ne peut pas satisfaire le même contrat de prêtêt que la production exige.

Un GitHub Job d'Actions peut rester simple :

  • Construirez le bundle web et la coquille native.
  • Déployez dans un environnement isolé.
  • Poller /healthz avec un temps d'attente.
  • Valider l'état et la forme de réponse.
  • Lancer les tests d'intégration pour la connexion et un parcours critique de revenus.
  • Publiez uniquement après que toutes les portes passent.

Ne faites pas que l'endpoint effectue des écritures ou des migrations destructrices. Gardez-le répétitif, bon marché et sûr à appeler fréquemment. L'endpoint est une porte de sortie de version, pas une deuxième application.

Mises à jour, Metteurs à jour et le point aveugle entre le magasin et l'appareil

Une mise à jour peut être sonore sur le plan technique et encore échouer opérationnellement si les appareils ne la reçoivent pas, ne l'installent pas ou ne signalent pas son état. Cela fait partie de la santé de l'application, pas d'un détail de livraison.

Considérez un bundle JavaScript qui change la validation de la caisse. La coquille native installée par le magasin reste disponible, mais le canal d'actualisation délivre les nouveaux actifs web à un sous-ensemble d'appareils. Certains appareils s'installent avec succès. D'autres échouent à la validation ou restent bloqués parce que leur version native n'est pas compatible. Les tableaux de bord du magasin ne montrent pas immédiatement la différence entre ces états.

L'écart de reporting est significatif. Les tableaux de bord du magasin peuvent être en retard de 24 heures pour la plupart des indicateurs clés de performance et jusqu'à 72 heures pour les taux de crash et d'ANR, comme décrit dans le Visibilité de la version mobile de référenceNear-real-time updater telemetry remplit l'intervalle en montrant les appareils qui ont reçu un bundle, ceux qui ont échoué à l'installation, ceux qui ont reculé, et ceux qui n'ont jamais vérifié.

Screenshot de https://capgo.app

Traitez les canaux comme des limites de sécurité

Utilisez des canaux séparés pour les versions bêta, de test et de production, avec des règles de compatibilité explicites. Une mise en production ne doit pas inclure un shell natif qui manque d'un plugin ou d'une capacité de configuration requise. Suivez l'adoption et les échecs par canal, version de mise en production, plateforme et version d'application signalée.

Les leviers opérationnels sont concrets :

  • Les garde-fous : Empêchez un bundle incompatibles d'atteindre un shell non supporté.
  • Les lancements d'audience : Démarrez avec un groupe contrôlé, puis élargissez lorsque les signaux de runtime et de parcours restent sains.
  • La livraison différentielle : Envoyez uniquement les actifs modifiés où l'updater le supporte, réduisant ainsi le travail et les données impliqués dans une mise à jour.
  • Protection de rollback : Restaurer le bundle précédent connu-good lorsqu'une installation ou une validation de démarrage échoue.
  • Comparaison de version : Comparer la santé de la mise en page, de lancement, de WebView et de la cohorte pour le nouveau groupe de contrôle stable.

Capgo est une option pour les équipes de Capacitor et Electron qui nécessitent des mises à jour signées de JavaScript, CSS, de configuration et d'actifs, des canaux ciblés, des journaux par appareil, des métriques d'adoption et de failure, ainsi que des contrôles de rollback. Son Vue d'ensemble des mises à jour en temps réel pour Capacitor Décrit le modèle de mise à jour et comment les équipes peuvent connecter l'état de livraison aux décisions de publication.

Le principe important n'est pas le fournisseur. C'est le boucle de feedback. Une mise en production devrait produire des preuves, et ces preuves devraient contrôler si la prochaine cohorte reçoit le bundle.

Hygiène de sécurité, de permissions et de télémétrie pour les applications JavaScript

Une application peut paraître stable tout en portant un risque inacceptable par les permissions, la confiance dans les mises à jour ou la télémétrie. Pour les publications de Capacitor et Electron, auditez les plugins et le contenu web intégré comme partie de la surface d'attaque.

Démarrer par ces vérifications :

  • Liste autorisée des plugins : Supprimez les plugins inutilisés, examinez leurs capacités natives et vérifiez l'accès aux contacts, aux fichiers, à la localisation, à la caméra, au microphone ou aux intentions externes.
  • Révision des liens profonds : Testez les schémas de URL et les intentions Android. Un lien non fiable ne doit pas ouvrir un flux privilégié ou contourner l'authentification.
  • Vérification du bundle : Vérifiez les signatures avant d'appliquer les mises à jour, rejetez les payloads incomplets ou inattendus et conservez le dernier bundle connu pour la récupération.
  • Stockage des jetons : Conservez les informations d'identification dans le stockage sécurisé de la plateforme, pas dans des fichiers accessibles au JavaScript ou un stockage local non restreint.
  • Liaisons Electron : Conservez les API privilégiées dans le processus principal, exposez des interfaces de préchargement étroites et empêchez le contenu distant arbitraire de parvenir aux API natives.

La telemétrie nécessite des contrôles correspondants. Enregistrez les noms d'événements, les identificateurs de version, les classes d'opération et les catégories de faillite. Excluez les jetons, les informations de paiement, le texte entièrement saisi par l'utilisateur, la localisation précise et les corps de réponse bruts à moins qu'un examen de sécurité documenté ne les autorise.

Fixez la rétention en fonction de la nécessité opérationnelle et restreignez l'accès par rôle. Fournissez des chemins de suppression ou de rectification où les exigences de confidentialité s'appliquent. Les événements de santé doivent isoler une régression de version sans devenir une deuxième base de données de comportement de l'utilisateur.

Les tableaux de bord de stockage ne peuvent pas fournir l'ensemble du tableau d'affichage immédiatement. La telemétrie des magasins d'applications et des consoles de Play peut laisser une fenêtre de 24 à 72 heures pour les rapports, il faut donc associer les signaux des magasins avec l'état de l'actualiseur, les identificateurs de version et les événements de défaillance côté appareil. Le Documentation de la console Google Play Explique le contexte de reporting que les équipes doivent prendre en compte lors de l'interprétation des résultats retardés.

Avant la mise en production, assurez-vous que chaque nouvelle permission a un but clair, que chaque champ journalisé a un propriétaire, et que l'actualiseur rejette les ensembles de fichiers non fiables ou incompatibles. Une frontière floue est un bloqueur de mise en production. Lorsqu'un signal expose une faille de confiance ou de confidentialité, arrêtez la livraison en premier, puis corrigez la mise en production ou la configuration qui a causé cela.

Remédiation et Retour en arrière Lorsqu'un signal de santé déclenche un incident

Un signal de santé n'a d'importance que lorsqu'il conduit à une action sécurisée. Écrivez l'arbre de décision avant l'incident, tandis que l'équipe peut encore réfléchir de manière claire.

  • Régression de crash ou d'ANR dans une version ou une cohorte spécifique : Arrêtez cette chaîne, comparez la version affectée avec la cohorte stable, et revenez sur l'ensemble de fichiers si la coquille native reste compatible.
  • Le point de terminaison de santé retourne 503 : Arrêtez la mise en production de l'application et réparez la dépendance critique échouée. Redémarrer un service peut aider, mais n'utilisez pas un retour en arrière d'application pour dissimuler un défaillance de serveur.
  • Une étape critique échoue alors que les crashes restent normales : Désactivez la fonction ou la chaîne affectée, inspectez la forme de réponse et la configuration, puis expédiez un ensemble de fichiers corrigé.
  • L'installation ou la validation de mise à jour échoue : Conservez la précédente version active, marquez la mise à jour comme étant unhealthy et investigatez la signature, la compatibilité ou l'intégrité des actifs.
  • Le comportement des permissions natives ou des plugins est incorrect : A live JavaScript update may not be sufficient. Prepare a store release when the fix requires native code, manifest changes, entitlements, or a new permission declaration.

Le Les stratégies de reprise de mise à jour en temps réel Capacitor devraient faire partie du livre de procédures, et non d'une page découverte lors d'une crise. La protection automatique est appropriée lorsque l'actualiseur peut détecter avec fiabilité une installation ou une erreur de démarrage. Un incident complet est toujours requis lorsque les utilisateurs peuvent terminer le lancement mais échouent dans un parcours important.

Un graphique intitulé Manuel de remédiation et de reprise de mise à jour, décrivant trois réponses automatisées distinctes aux problèmes de performances logicielles.

La pression commerciale pour formaliser ce processus est claire. Le marché des services de test d'applications mobiles est estimé à $7,70 milliard en 2025 et devrait atteindre $19,84 milliard en 2031 à un taux de croissance annuel moyen de 17,09%alors que le taux d'acceptation de l'App Store d'Apple était signalé à environ 24,9 % en 2024selon les données de revue du marché et des magasins. Ces chiffres ne remplacent pas le jugement d'ingénieur, mais ils soulignent le coût de traiter les vérifications de qualité comme des options.

Après chaque incident, conservez la chronologie, identifiez le signal le plus précoce susceptible d'être actionné, enregistrez le levier qui a fonctionné et transformez la vérification manquante en un contrôle de mise en production. Un contrôle de santé d'application mature ne se contente pas de signaler les échecs. Il rend le prochain échec plus facile à détecter, à contenir et à inverser.


Capgo fournit aux équipes de Capacitor et Electron des mises à jour en direct signées, des canaux ciblés, des statistiques de déploiement et d'échec, des journaux par appareil et une protection de retrait pour que les signaux de santé en temps de cours puissent guider les décisions de mise en production. Visitez Capgo pour connecter votre pipeline de mise à jour avec les contrôles de santé d'application et les remédies décrits dans ce livre de bonnes pratiques.

Mises à jour en temps réel pour les applications Capacitor

Lorsqu'une bug de la couche web est en ligne, expédiez la correction par Capgo plutôt que d'attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les modifications natives restent dans la voie de revue normale.

Support humain de Martin

Démarrer maintenant

Dernières actualités de notre blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile vraiment professionnelle.