Accueil Capgo
Mobile Guides

Lottie React Native

Notre guide complet vous enseigne à utiliser lottie react native. Il couvre les workflows Expo et bare, les contrôles d'animation, l'optimisation de la performance et les meilleures pratiques pour 2026.

Lottie React Native

Vous vous trouvez probablement dans l'une ou l'autre des situations. Soit vous avez un designer qui vous remet un Lottie JSON et qui vous demande : « Pouvez-vous l'intégrer dans l'application aujourd'hui ? », ou vous avez déjà mis en place la mise en œuvre et vous avez remarqué que l'animation fonctionne en développement mais devient coûteuse une fois que les appareils réels, le temps de démarrage et les builds de mise en production entrent en jeu.

C'est là que Lottie React Native devient intéressant. La démo de base est facile. La mise en œuvre prête à la production n'est pas.

Tableau des matières

Pourquoi Lottie est essentiel pour les applications React Native

Si vous avez déjà essayé de recréer une animation de produit polie manuellement dans React Native, vous connaissez déjà la douleur. Les détails de mouvement mineurs se transforment en un tas de logique de timing, d'interpolations et de particularités de plateforme. L'animation peut ressembler à « presque » ce que le designer a expédié, mais « presque » n'est généralement pas ce que le designer a expédié.

Lottie a changé ce flux de travail. Airbnb a publié Lottie sous licence libre en 2016, et cette publication a changé l'animation mobile en permettant aux designers d'expédier directement les animations au lieu de forcer les ingénieurs à les reconstruire case par case. Dans certains environnements d'entreprise, ce changement a réduit les coûts de développement d'applications mobiles de jusqu'à 40 % selonl'aperçu de Lottie d'Airbnb La conception et l'ingénierie cessent de se battre pour la même chose.

Un avantage clé de Lottie React Native n'est pas seulement « des animations jolies en JSON ». C'est la séparation des préoccupations. Les designers travaillent dans After Effects et exportent avec Bodymovin. Les développeurs rendent la sortie avec une lecture native au lieu de traduire le mouvement en __CAPGO_KEEP_0__ personnalisé.

A key benefit of Lottie React Native isn’t just “pretty animations in JSON.” It’s the separation of concerns. Designers work in After Effects and export with Bodymovin. Developers render the output with native-backed playback instead of translating motion into custom code.

Règle pratique :

Utilisez Lottie lorsque l'animation fait partie de l'expérience produit, et non lorsque vous avez besoin d'une simple opacité ou d'une transition de traduction. Utilisez Lottie lorsque l'animation fait partie de l'expérience produit, et non lorsque vous avez besoin d'une simple opacité ou d'une transition de traduction.

Il y a aussi un angle d'expérience utilisateur. La motion donne des retours d'information, confirme les actions et rend les états de chargement moins morts. Si votre équipe pense sérieusement à la rondeur, à la rétention ou à la confiance dans l'interface, l'animation fait partie de la conversation. La discussion plus large sur l'expérience utilisateur de l'application se termine généralement dans le même endroit : un feedback rapide bat les écrans statiques. la discussion générale sur l'expérience utilisateur de l'application d'où Lottie s'intègre le mieux

Lottie React Native fonctionne généralement le mieux pour :

Les micro-interactions personnalisées

  • comme les likes, les sauvegardes, les coches et les états de réussite d'achat Les illustrations d'inscription
  • qui doivent ressembler à des éléments personnalisés sans envoyer de vidéo Les états de chargement et les états vides
  • où les UI statiques semblent inachevés L'éducation des fonctionnalités
  • Lottie React Native tends to work best for Lorsque le produit souhaite de la motion sans intégrer des GIFs ou des MP4s

Ce qu'il ne résout pas, c'est tous les problèmes d'animation. Pour les transitions d'écran de base, les outils d'animation de React Native sont souvent plus simples. Pour les systèmes de motion très importants ou interactifs, le format JSON peut devenir un compromis au lieu d'une victoire. Ce compromis devient plus important une fois que vous atteignez la production, ce qui est aussi là où la plupart des tutoriels s'arrêtent trop tôt.

Configuration de l'environnement de développement Lottie

La méthode d'installation dépend d'une décision initiale : Flux de travail Expo géré ou React Native bareN'allez pas mélanger les modèles mentaux. La plupart des problèmes de configuration se produisent lorsque les développeurs suivent une guide de flux de travail bare dans Expo, ou supposent que Expo abstrait tous les détails natifs.

Diagramme de flux montrant les étapes de configuration pour les animations Lottie dans les projets Expo et React Native bare.

Choisissez le flux de travail avant d'installer

Si votre application vit dans Expo et que vous souhaitez la configuration la plus rapide, restez sur le chemin d'Expo à moins que vous ne sachiez que vous avez besoin de travaux natifs personnalisés. Si vous êtes dans une application bare, ou que vous dépendez déjà de modules natifs qui nécessitent un contrôle direct, installez-le comme une dépendance native normale et validez les builds iOS et Android immédiatement.

Un grand nombre d'équipes sous-estiment combien la débogage devient plus facile lorsque vous maintenez votre configuration alignée avec le type de projet. C'est aussi pourquoi beaucoup d'équipes construisant des intégrations natives personnalisées passent tôt à un flux de développement de client d'Expo au lieu de attendre que l'application devienne plus difficile à modifier. Expo managed workflow ou React Native bare

Configuration Expo gérée

Pour les applications Expo gérées, gardez-le minimal.

  1. Installez le package

    npx expo install lottie-react-native
  2. Redémarrez Metro

    npx expo start -c
  3. Vérifiez sur appareil ou simulateur Démarrez avec un fichier JSON local et affichez une animation très petite en premier. N'essayez pas de déboguer un grand élément et une nouvelle installation en même temps.

Un quelques notes pratiques sont importantes dans Expo :

  • Préférez les fichiers locaux en premier : Le débogage d'animation distant ajoute du bruit de réseau lorsque vous essayez uniquement de prouver que la bibliothèque fonctionne.
  • Testez le comportement de version de sortie tôt : Le mode de développement peut cacher les problèmes liés à la synchronisation et à la performance.
  • Surveillez les chemins des éléments : Les fichiers JSON mal placés sont l'une des causes les plus courantes de « cela ne rend rien ».

Expo est la voie la plus rapide vers « cela fonctionne ». Ce n'est pas dire qu'il s'agit de la voie la plus rapide vers « cela s'adapte ».

Configuration de base de React Native

Sur un projet de base, installez et validez les dépendances natives dès le départ.

  1. Installez le package

    npm install lottie-react-native
  2. Installez les pods iOS

    cd ios && pod install && cd ..
  3. Rebâtissez l'application

    npx react-native run-ios

    ou

    npx react-native run-android

Voici la partie que de nombreux guides de démarrage rapide ignorent : après l'installation, effectuez une reconstruction native complète avant de conclure que quelque chose ne fonctionne pas. La rechargement chaud ne sauvera pas une dépendance native qui n'a pas été compilée correctement dans l'application.

Flux de travail de base qui économise du temps

Utilisez ce court questionnaire avant de passer à l'étape suivante :

Vérifiez L'importance de cela
Reconstruire après l'installation Les modules natifs nécessitent une compilation fraîche
Démarrez pod install L'iOS ne sera pas fiable sans cela
Utilisez un fichier JSON local simple en premier Isolé les problèmes d'installation des problèmes d'asset
Testez les deux plateformes dès le début L'Android et l'iOS peuvent échouer pour des raisons différentes

Si le paquet s'installe proprement mais que votre première animation ne s'affiche pas, ce n'est généralement pas un problème d'installation. C'est généralement le chemin d'accès à l'asset, la taille du composant ou la configuration de lecture.

Afficher votre première animation Lottie

La première animation fonctionnelle devrait être ennuyeuse. Fichier local. Taille fixe. Lecture automatique. Boucle facultative. N'oubliez pas de commencer par une lecture conditionnelle, un fichier JSON distant ou une animation exportée avec plusieurs couches.

Avec un espace de travail moderne pour les développeurs, un ordinateur portable affichant code et un moniteur montrant une application d'animation mobile.

Ajoutez un fichier d'animation local

Créez un dossier d'actifs si vous n'en avez pas déjà un :

assets/
  animations/
    success.json

Utilisez des noms simples. Évitez les espaces, les ponctuations inhabituelles et les dossiers avec de nombreux niveaux de hiérarchisation. Vous voulez que les chemins restent évidents. require() S'il vous utilisez Lottie pour une écran de chargement initial personnalisé ou une transition après le lancement, réfléchissez soigneusement avant d'insérer une grande animation dans le chemin d'accès au démarrage. C'est particulièrement vrai lorsque vous ajustez également le comportement de l'écran de démarrage de votre application React Native.

Rendez-l’avec LottieView Créez un composant dédié au lieu de le placer directement dans un grand fichier d'écran :.

Cela fait trois choses utiles :

Cela prouve que la bibliothèque fonctionne correctement

import React from 'react';
import { View, StyleSheet } from 'react-native';
import LottieView from 'lottie-react-native';

export function SuccessAnimation() {
  return (
    <View style={styles.container}>
      <LottieView
        source={require('../assets/animations/success.json')}
        autoPlay
        loop={false}
        style={styles.animation}
      />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    alignItems: 'center',
    justifyContent: 'center',
  },
  animation: {
    width: 220,
    height: 220,
  },
});

Cela prouve que le chemin d'accès aux actifs est correct

  • Add a local animation file
  • Create an asset folder if you don’t already have one:
  • Cela vous donne un endroit isolé où ajuster la lecture et la taille ultérieurement.

Un certain nombre de pièges apparaissent immédiatement si vous passez les bases :

  • Aucune largeur ou hauteur : L'animation peut exister mais être invisible.
  • Mauvais require() chemin : Metro ne trouvera pas le fichier.
  • Export non valide : Certains fichiers JSON sont techniquement valides mais incluent des fonctionnalités qui ne se comportent pas comme prévu sur les appareils mobiles.

Gardez la première rendu local et déterministe. Vous testez l'intégration, pas l'architecture.

Un meilleur test d'écran initial

Placez le composant sur une écran simple avec un fond neutre :

import React from 'react';
import { SafeAreaView, StyleSheet } from 'react-native';
import { SuccessAnimation } from './src/SuccessAnimation';

export default function App() {
  return (
    <SafeAreaView style={styles.screen}>
      <SuccessAnimation />
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  screen: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#fff',
  },
});

Si cela fonctionne dans les simulateurs iOS et Android, vous avez franchi la première vraie étape. D&#39;ici, le prochain pas n&#39;est pas d&#39;ajouter plus d&#39;animations. C&#39;est apprendre quand utiliser les propriétés déclaratives et quand prendre le contrôle direct avec les références.

Maîtriser les Contrôles d&#39;Animation Lottie

La plupart des bogues Lottie React Native se produisent lorsque l&#39;animation doit réagir à l&#39;état. L&#39;autoplay est facile. « Jouer ce segment lorsque l&#39;utilisateur aime un article, inverser lorsque l&#39;il le déteste, et ne pas s&#39;étouffer lorsque le composant se re-rend » est là où les choses deviennent compliquées.

Un tableau de comparaison expliquant les méthodes de contrôle d&#39;animation déclarative et impérative dans Lottie, mettant en avant leurs cas d&#39;utilisation spécifiques.

Utilisez les propriétés lorsque la lecture est simple

Pour une lecture non interactive, les propriétés suffisent.

<LottieView
  source={require('../assets/animations/loading.json')}
  autoPlay
  loop
  speed={1}
/>

Ce style est bon pour :

  • indicateurs de chargement
  • illustrations d&#39;onboarding passives
  • états vides décoratifs

C&#39;est déclaratif et lisible. Le composant s&#39;affiche, la lecture commence, et React reste en charge. Si la logique d&#39;animation peut être décrite entièrement par les propriétés, gardez-la là.

Un cas déclaratif plus avancé est progressoù vous liez la frame d'animation à une autre valeur. Cela fonctionne bien lorsque le mouvement doit refléter une source de progression externe, mais il est moins pratique pour des événements de déclenchement uniques.

Voici une comparaison visuelle rapide avant de passer aux refs :

Utilisez les refs lorsque l'état anime l'animation

Lorsque l'utilisateur appuie, bascule ou termine une action, une référence est généralement l'outil plus sûr. Les données réelles montrent que 68 % des développeurs utilisant des frameworks hybrides signalent des déclencheurs d'animation échoués en raison d'une gestion incorrecte des références dans useEffect les hooksce problème ne se limite pas aux applications hybrides. Il apparaît également dans React Native pur, notamment lorsque les développeurs recréent des références, déclenchent la lecture avant le montage ou lient les appels d'animation aux effets instables. animation.current.play() Un modèle fiable de liké et de désliké Capacitor-focused discussion of failed triggers.

__CAPGO_KEEP_0__-centré sur la discussion des déclencheurs échoués

import React, { useRef, useState } from 'react';
import { Pressable } from 'react-native';
import LottieView from 'lottie-react-native';

export function LikeButton() {
  const animationRef = useRef<LottieView>(null);
  const [liked, setLiked] = useState(false);

  const onPress = () => {
    if (!animationRef.current) return;

    if (liked) {
      animationRef.current.play(60, 0);
    } else {
      animationRef.current.play(0, 60);
    }

    setLiked(!liked);
  };

  return (
    <Pressable onPress={onPress}>
      <LottieView
        ref={animationRef}
        source={require('../assets/animations/like.json')}
        loop={false}
        autoPlay={false}
        style={{ width: 96, height: 96 }}
      />
    </Pressable>
  );
}

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__ play() à l'intérieur useEffect chaque fois que l'état change.

Pourquoi cela fonctionne :

  • L'événement possède le déclencheur d'animation : Un événement de pression est un moment stable pour démarrer la lecture.
  • La référence reste locale et persistante : useRef évite les redéfinissements inutiles.
  • Le composant évite les conflits d'autoréinitialisation : Vous ne voulez pas que le comportement de montage se batte avec le comportement déclenché par l'utilisateur.

Erreurs courantes à éviter :

  1. Déclencher avant l'existence de la référence
    Si animationRef.current n'est pas null, la lecture ne se produira pas. Gardez-le.

  2. En utilisant autoPlay Avec des contrôles impératifs
    Choisissez un propriétaire par défaut pour la lecture.

  3. Contrôler tout à travers useEffect
    Les effets sont utiles, mais pour les actions de l'interface utilisateur, ils ajoutent souvent des problèmes de timing au lieu de les supprimer.

Si une animation répond à un clic, déclenchez-l’à l'intérieur du gestionnaire de clic en premier. Rendez-vous vers useEffect seulement lorsque la source de vérité vit en dehors de cette interaction.

Optimisation de la performance pour les applications de production

Lottie React Native est l'une de ces bibliothèques qui semble légère jusqu'à ce que les équipes commencent à insérer de grands fichiers JSON dans le bundle de l'application et se demandent pourquoi la phase de démarrage a régressé. La lecture elle-même n'est pas toujours le problème. La stratégie de livraison est.

Un infographique détaillant trois avantages clés de l'optimisation de la performance Lottie : une taille de bundle réduite, des taux de cadence améliorés et une utilisation de la mémoire réduite.

Où les équipes se retrouvent en difficulté

L'erreur la plus facile est de regrouper toutes les animations directement dans JavaScript et de les charger trop tôt. Selon ce guide sur l'expédition de JSON Lottie incorrectement, surcharger les bundles JS avec des actifs comme les JSON Lottie peut augmenter les temps de démarrage de l'application de 40% ou plus sur les appareils de milieu de gamme, et les déplacer vers les actifs natifs pour un chargement à la demande constitue une optimisation critique.

Ce qui correspond à ce que beaucoup d'équipes voient en pratique. Le problème n'est pas une petite animation de succès unique. C'est l'accumulation:

  • mouvement d'accueil
  • états de chargeur
  • réactions e-commerce
  • écrans vides personnalisés
  • fichiers de localisation et d'autres actifs volumineux qui s'y trouvent

Si votre application a déjà un problème de budget de démarrage, les fichiers Lottie peuvent le rendre pire rapidement.

Qu'est-ce qu'il faut optimiser en premier

Commencez par l'exportation elle-même. Un export d'animation mal fait apporte de la complexité que vous paierez plus tard en termes de parsing, de mémoire et de stabilité de rendu. N'acceptez pas chaque export de designer tel quel.

Utilisez ce checklist de production :

  • Comprimez le JSON avant de l'envoyer : Les fichiers plus petits sont plus faciles à charger et moins susceptibles de gonfler le démarrage.
  • Déplacez les animations non critiques hors du bundle JS : Gardez le démarrage code centré sur ce que l'application a besoin immédiatement.
  • Chargez les animations à la demande : Rendez lorsque l'écran ou l'action en a besoin.
  • Auditez le comportement des anciens appareils : Un simulateur moderne peut cacher un playback coûteux.
  • Évitez d'utiliser des fichiers Lottie volumineux comme décor de démarrage : Lorsqu'il ne s'agit pas d'une interaction critique, elle ne devrait pas concurrencer le lancement de l'application.

Pour les équipes qui effectuent des travaux de performance mobile sérieux La guide d'AppLighter sur la performance mobile s'est avéré être un complément utile de lecture car il met les décisions d'animation dans le contexte plus large du démarrage de l'application, de la mise en page et des compromis de framework.

Une vérité dure : Une belle animation qui retarderait l'interaction initiale est généralement un bug de produit, et non un gain de conception.

Vous devriez également penser au-delà de React Native en isolement. Les équipes travaillant dans des stacks hybrides rencontrent des problèmes similaires de chargement d'actifs, et les conseils plus larges de performance d'animation pour les applications __CAPGO_KEEP_0__ s'appliquent également aux décisions de Lottie. animation performance guidance for Capacitor apps Fichiers locaux sont prévisibles. Ils fonctionnent hors ligne, suppriment la variabilité de réseau et sont plus faciles à tester. Ils sont également faciles à sur-emballage.

La livraison à distance maintient le binaire plus léger, mais maintenant votre animation a des préoccupations d'accessibilité, de mise en cache et de redondance. Ce compromis est acceptable pour des mouvements non critiques. C'est risqué pour les états UX primaires comme la confirmation d'achat ou le succès de l'authentification.

L'animation est un élément essentiel de l'expérience utilisateur, mais elle ne doit pas retarder l'interaction initiale de l'utilisateur.

Lorsque vous utilisez Lottie, assurez-vous de prendre en compte les performances de l'animation et de ne pas retarder l'interaction initiale de l'utilisateur.

Une séparation pratique fonctionne bien :

Type d'actif Défaut amélioré
Animation d'interaction de base Local, optimisé, pas trop volumineux
Mouvement promotionnel occasionnel À distance avec un fallback
Animation du chemin d'accueil Seul local si absolument nécessaire
Illustration de fonctionnalité rarement utilisée Chargement à la demande

Si vous n'appliquez qu'une seule règle de cette section, utilisez celle-ci : Lottie JSONs doivent être traités comme des actifs sensibles à la performance, et non comme une simple décoration inoffensive..

Résolution des problèmes courants de Lottie

Lorsque Lottie ne fonctionne pas, la cause est généralement ordinaire. Chemin incorrect. Taille manquante. Temps de référence incorrect. JSON trop lourd. La façon la plus rapide de le déboguer est de réduire les variables.

La mise en scène ne s'affiche pas sur Android

Tout d'abord, confirmez que le fichier JSON est résolu. Ensuite, donnez au composant des dimensions explicites.

<LottieView
  source={require('../assets/animations/success.json')}
  autoPlay
  style={{ width: 200, height: 200 }}
/>

Si cela ne fonctionne toujours pas, remplacez par une animation différente connue et prouvée. Cela vous dit si le problème est le fichier ou la configuration.

La lecture est chaotique sur les appareils plus anciens

Cela pointe généralement vers l'actif, et non vers le composant API.

Essayez ces corrections :

  • Réduisez la complexité de l'animation : Demandez un export plus léger si le fichier source est lourd.
  • Chargez plus tard : N'essayez pas de concurrencer le travail de l'écran initial.
  • Testez une version compressée : Si le fichier compressé se comporte mieux, vous avez trouvé la bouteille à goulet.
  • Supprimez plusieurs vues Lottie simultanées : Plusieurs animations sur une même écran peuvent être trop épuisantes.

La référence est nulle ou jouer ne fait rien

Les références nulles signifient généralement que le déclencheur se déclenche avant la montée, ou que le composant a été supprimé conditionnellement.

if (animationRef.current) {
  animationRef.current.play();
}

Maintenez la référence stable avec useRefet ne recréez pas inutilement le composant animé. Si vous déboguez des comportements étranges répétitifs dans les builds locaux, la suppression des caches stables peut vous aider. Un routine simple de nettoyage de la cache Yarn est parfois suffisante pour supprimer le comportement des actifs trompeurs pendant le développement. L'animation a l'air fausse sur les tailles d'écran

est parfois suffisante pour supprimer le comportement des actifs trompeurs pendant le développement.

L'éviter que l'animation définisse la disposition. Mettez-l’à l'intérieur d'un conteneur et taillez-l’intentionnellement.

  • Utilisez des limites fixes pour les icônes et les réactions.
  • Utilisez des enveloppes conscientes de l'aspect pour les illustrations plus grandes.
  • Évitez de s'étirer jusqu'à la largeur maximale sans vérifier la composition d'exportation prévue.

La plupart des rapports « Lottie est cassé » se terminent par des problèmes de disposition, des problèmes d'actif ou des problèmes de timing. La bibliothèque fait souvent exactement ce que vous avez demandé.

Si vous avez besoin d'un raccourci de débogage final, supprimez tous les props avancés, affichez une animation locale dans une vue centrée et construisez à partir de là.


Capgo aide les équipes à envoyer des correctifs JavaScript, des actifs et des paramètres de configuration vers les applications Capacitor sans attendre la revue de la boutique. Si vous maintenez une application hybride et avez besoin d'une méthode plus sûre pour envoyer des mises à jour, gérer des déploiements étalés et récupérer rapidement des problèmes de front-end, Capgo est une option à considérer.

Les mises à jour en temps réel pour les applications Capacitor

Quand un bug de couche web est en direct, expédiez la correction par Capgo plutôt que d'attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs obtiennent la mise à jour en arrière-plan tandis que les changements natifs restent dans la voie de revue normale.

Un support humain de Martin

Commencez 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.