Screen View est un événement d'analyse mobile qui enregistre l'ouverture de chaque écran dans une application. C'est l'équivalent de page_view pour le web, adapté au modèle de navigation des interfaces mobiles. Selon Amplitude, 2024, Screen View est l'événement le plus fréquent dans l'analyse d'applications, représentant jusqu'à 40 % de tous les événements envoyés. Une implémentation correcte du suivi des écrans est la base pour analyser les parcours utilisateurs et les entonnoirs.
Points clés
Screen View est un événement d'analyse qui est envoyé lorsqu'un écran d'application mobile est ouvert. L'événement contient le nom de l'écran (screen_name), la classe (screen_class) et un horodatage. Contrairement à l'analyse web, où page_view est lié à une URL, dans les applications mobiles, les écrans sont identifiés par le nom de l'Activity, Fragment, ViewController ou Custom View.
| Paramètre | Type | Exemple |
|---|---|---|
| screen_name | String | « Product Details » |
| screen_class | String | « ProductDetailActivity » |
| previous_screen | String | « CatalogScreen » |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
Le paramètre previous_screen est particulièrement important : il permet de restaurer la séquence des transitions et de construire un Screen Flow — une carte des parcours utilisateur dans l'application.
Screen View et Page View résolvent la même tâche — enregistrer une vue — mais dans des environnements différents. Sur le web, une URL identifie de manière unique une page, et Page View est lié au chargement du document. Dans les applications mobiles, un écran est un état de l'interface qui ne correspond pas nécessairement à une adresse distincte.
Une autre différence est la profondeur du contexte. Screen View dans une application mobile inclut des paramètres d'état : si l'utilisateur est authentifié, quelles données sont chargées, si l'écran est ouvert en mode édition. Page View sur le web porte rarement ce contexte — il enregistre seulement le fait du chargement de l'URL. Cela rend Screen View plus informatif pour l'analyse produit, car chaque événement peut être segmenté par état.
La première erreur est d'envoyer screen_view à chaque changement d'état dans un écran (changement d'onglet, ouverture d'un popup). Screen View doit enregistrer uniquement une transition complète vers un nouvel écran, pas les micro-interactions.
La deuxième erreur est d'utiliser le nom technique de la classe au lieu d'un nom lisible. « ProductDetailActivityKt » est inutile pour un analyste — utilisez « Product Details » dans screen_name.
La troisième erreur est d'envoyer screen_view sans les champs correspondants. Un screen_name vide crée un ensemble d'enregistrements inutiles qui ne peuvent pas être regroupés. Transmettez toujours au moins screen_name et screen_class, même sur les écrans de test.
L'implémentation du suivi de Screen View dépend de l'architecture de navigation. Examinons les approches automatique et manuelle en utilisant Jetpack Compose et SwiftUI comme exemple.
Utilisez LifecycleEventObserver au niveau de NavigationComponent. Chaque fois qu'un utilisateur navigue vers une nouvelle route, l'événement screen_view est déclenché.
class ScreenTrackingObserver(
private val analytics: AnalyticsProvider
) : LifecycleEventObserver {
override fun onStateChanged(
source: LifecycleOwner,
event: Lifecycle.Event
) {
if (event == Lifecycle.Event.ON_RESUME) {
val route = source.getRouteFromLifecycleOwner()
analytics.logScreenView(
screenName = route.screenName,
screenClass = source.getLocalClassName()
)
}
}
}
// Connexion dans NavHost
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
Cette approche garantit que screen_view est envoyé à chaque retour de l'écran au premier plan, y compris le retour depuis l'arrière-plan. Lifecycle.Event.ON_RESUME est le bon moment pour le suivi, pas ON_START ou ON_CREATE.
Dans SwiftUI, le modificateur onAppear intégré à chaque View est utilisé. Pour l'automatisation, un ViewModifier est créé.
struct ScreenTrackingModifier: ViewModifier {
let screenName: String
func body(content: Content) -> some View {
content.onAppear {
Analytics.shared().logScreenView(
name: screenName,
className: "\(Self.self)"
)
}
}
}
extension View {
func trackScreen(_ name: String) -> some View {
modifier(ScreenTrackingModifier(screenName: name))
}
}
// Utilisation :
ProductDetailView()
.trackScreen("Product Details")
Le modificateur trackScreen est ajouté à n'importe quelle View en une seule ligne. C'est une solution propre et évolutive pour les projets SwiftUI.
Dans les projets à architecture modulaire, chaque module peut utiliser sa propre nomenclature d'écrans, ce qui entraîne une duplication de screen_name. Une énumération ScreenName centralisée résout le problème — tous les écrans sont nommés selon un standard unique en un seul endroit. L'ajout d'un nouvel écran ne nécessite qu'une nouvelle constante dans l'énumération, sans avoir à chercher dans tout le code.
Utilisez une sealed class pour décrire screen_name avec un regroupement par fonctionnalité : ProfileScreen.CHANGE_PASSWORD, OrdersScreen.ORDER_HISTORY, CatalogScreen.SEARCH_RESULTS. Cela simplifie le filtrage dans les rapports d'analyse.
Screen Flow (ou analyse de chemin) est une visualisation de la séquence d'écrans parcourue par un utilisateur. C'est l'outil principal pour identifier les goulots d'étranglement dans la navigation.
Chaque Screen View avec le paramètre previous_screen fournit une arête du graphe : CatalogScreen → ProductDetails → CartScreen. En agrégeant toutes les transitions, une carte des chemins est construite. Un entonnoir en trois étapes basé sur Screen Flow montre où les utilisateurs abandonnent.
Selon Mixpanel (2024), l'analyse Screen Flow révèle jusqu'à 40 % des problèmes d'UX qui ne sont pas visibles lors de l'analyse d'événements individuels. Par exemple, une transition fréquente ProductDetails → HomeScreen sans achat indique un problème avec le prix ou la description du produit.
Drop-off est un point où l'utilisateur quitte un scénario. Si 60 % des utilisateurs partent après l'écran de chargement, le problème est dans la vitesse de chargement ou l'animation. Si c'est après un Paywall — dans le coût ou la valeur de l'abonnement.
Firebase ne fournit pas de rapport Screen Flow prêt à l'emploi, mais les données screen_view sont disponibles dans BigQuery. Créez une requête qui regroupe les transitions par paire (previous_screen, screen_name) et compte la fréquence. Le résultat est une matrice de transitions qui peut être visualisée dans Looker Studio sous forme de diagramme de Sankey.
Complétez le Screen Flow avec une segmentation : séparément pour les nouveaux utilisateurs (7 premiers jours) et les utilisateurs qui reviennent. Les nouveaux utilisateurs restent plus souvent bloqués sur les écrans d'onboarding, tandis que les utilisateurs expérimentés atteignent plus rapidement les actions cibles. La comparaison des deux flux révèle des goulots d'étranglement d'adaptation.
Le choix de l'outil pour l'analyse Screen View dépend du budget, de la pile technologique et du niveau de détail requis. Examinons trois solutions populaires.
Firebase suit automatiquement les écrans via le paramètre screen_view dans chaque événement. Aucun code supplémentaire n'est requis après l'intégration du SDK. Limitation : screen_name est généré à partir de l'Activity/ViewController, ce qui ne produit pas toujours des noms lisibles.
Amplitude propose un Pathfinder intégré — un constructeur visuel de Screen Flow. Prend en charge les propriétés utilisateur et la segmentation par cohortes. Permet de renommer les écrans côté serveur sans modifier le code de l'application.
Mixpanel fournit un rapport Flows en temps réel. Il peut montrer non seulement les transitions linéaires, mais aussi les branches — quels écrans sont visités après un écran spécifique. S'intègre avec les SDK iOS, Android, Flutter et React Native.
Chaque événement screen_view est un envoi de données réseau. Si une application envoie screen_view à chaque changement d'onglet (20+ par minute), cela crée une charge inutile. Optimisation : mettez en mémoire tampon les screen_view et envoyez-les par lots toutes les 5 secondes. Firebase agrège automatiquement les événements, mais les SDK personnalisés peuvent envoyer chaque appel immédiatement.
Mesurez la surcharge du suivi : ajoutez un horodatage à chaque screen_view et calculez le délai entre onResume et l'envoi. Si le délai dépasse 100 ms, le suivi affecte l'UX. Utilisez un thread d'arrière-plan pour l'envoi afin de ne pas bloquer le thread de l'interface. Sur les appareils d'entrée de gamme, la différence est notable.
Foire aux questions
Oui, chaque fragment avec son propre contenu est un écran séparé. Un TabLayout avec trois onglets doit envoyer trois événements screen_view différents lors du changement. Exception : les popups d'onglets sans navigation indépendante.
screen_class est le nom technique de la classe (par exemple, « MainActivity »), utilisé par les développeurs. screen_name est un nom lisible (« Écran d'accueil »), utilisé dans les rapports. Les SDK remplissent souvent screen_class automatiquement, tandis que screen_name doit être défini manuellement.
Lors de la rotation de l'appareil, l'Activity est recréée, ce qui déclenche un screen_view en double. Utilisez une vérification d'état : envoyez l'événement uniquement lorsque l'écran change, pas à chaque ON_RESUME. Firebase et Amplitude dédupliquent automatiquement screen_view.
Pour une application moyenne — 10 à 30 screen_view par utilisateur par jour. Applications d'actualités : 15–20. Jeux : 20–40. Utilitaires : 5–10. Si le nombre dépasse 100, vérifiez si les écrans sont envoyés à chaque tapotement plutôt qu'à une transition complète.
Oui, screen_view est l'un des indicateurs dans les tests A/B. Comparez le nombre de vues d'écran entre les variantes A et B. Si l'écran « Checkout » de la variante B reçoit 15 % d'événements screen_view en moins, c'est un signal de problème dans la fiche produit.
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