Inicio de Capgo
Móvil Guías

Lottie React Native

Nuestra guía completa te enseña a usar lottie react native. Cubre los flujos de trabajo de Expo y bare, el control de animaciones, la optimización del rendimiento y las mejores prácticas para 2026.

Martín Donadieu

Martín Donadieu

Gerente de Contenido

Lottie React Native

Estás probablemente en uno de dos lugares en este momento. O tienes un diseñador que te está pasando un Lottie JSON y te está pidiendo, “¿Podemos meter esto en la aplicación hoy?”, o ya lo has cableado y has notado que la animación funciona en desarrollo pero comienza a sentirse caro una vez que los dispositivos reales, el tiempo de arranque y los paquetes de lanzamiento entran en escena.

Eso es donde Lottie React Native se vuelve interesante. La demostración básica es fácil. La implementación lista para producción no lo es. La diferencia suele venir de cómo lo instalas, cómo controlas la reproducción y si tratas los archivos de animación como activos inocuos o como parte de tu presupuesto de rendimiento.

Índice de Contenido

¿Por qué Lottie es esencial para aplicaciones de React Native?

Si alguna vez has intentado recrear una animación de producto pulida por mano en React Native, ya sabes el dolor. Los detalles de movimiento pequeños se convierten en una pila de lógica de tiempo, interpolaciones y particularidades de la plataforma. La animación puede parecer cercana, pero 'cercana' generalmente no es lo que el diseñador envió.

Lottie cambió ese flujo de trabajo. Airbnb abrió Lottie en 2016, y esa liberación cambió la animación móvil permitiendo a los diseñadores enviar animaciones directamente en lugar de obligar a los ingenieros a reconstruirlos frame por frame. En algunos entornos empresariales, ese cambio redujo los costos de desarrollo de aplicaciones móviles hasta un 40% segúnResumen de Lottie de Airbnb El diseño y la ingeniería dejan de luchar por la misma batalla.

Un beneficio clave de Lottie React Native no es solo 'animaciones bonitas en JSON'. Es la separación de preocupaciones. Los diseñadores trabajan en After Effects y exportan con Bodymovin. Los desarrolladores renderizan el resultado con reproducción respaldada nativa en lugar de traducir el movimiento en __CAPGO_KEEP_0__ personalizado.

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.

Regla práctica:

Usa Lottie cuando la animación forma parte de la experiencia del producto, no cuando solo necesitas una simple opacidad o una transición de traducir. Usa Lottie cuando la animación forma parte de la experiencia del producto, no cuando solo necesitas una simple opacidad o una transición de traducir.

Existen también aspectos relacionados con la experiencia del usuario. La animación proporciona retroalimentación, confirma acciones y hace que los estados de carga se sientan menos muertos. Si su equipo está pensando en serio en la pulcritud, la retención o la confianza en la interfaz, la animación forma parte de esa conversación. La discusión más amplia discusión sobre la experiencia del usuario del aplicativo generalmente termina en el mismo lugar: la retroalimentación rápida supera a las pantallas estáticas.

Dónde Lottie se ajusta mejor

Lottie React Native tiende a funcionar mejor para:

  • Interacciones micro-brindadas personalizadas como likes, ahorros, marcas de verificación y estados de éxito de compra
  • Illustraciones de inicio de sesión que necesitan sentirse personalizadas sin enviar video
  • Estados de carga y vacíos donde la interfaz UI estática se siente inacabada
  • Educación de características cuando el producto quiere movimiento sin incorporar GIFs o MP4s

No resuelve todos los problemas de animación. Para transiciones de pantalla básicas, las herramientas de animación de React Native a menudo son más simples. Para sistemas de movimiento muy grandes o altamente interactivos, el formato JSON puede convertirse en un trade-off en lugar de una ventaja. Este trade-off se vuelve más importante una vez que se alcanza la producción, lo que es donde la mayoría de las tutoriales detienen demasiado temprano.

Configuración de su entorno de desarrollo de Lottie

El camino de instalación depende de una decisión primero: Expo managed workflow o React Native desnudoNo mezcles los modelos mentales. La mayoría de los problemas de configuración ocurren cuando los desarrolladores siguen una guía de flujo desnudo dentro de Expo, o asumen que Expo abstracta todos los detalles nativos.

Un diagrama de flujo que muestra los pasos de configuración para animaciones de Lottie en proyectos de Expo y React Native desnudo.

Elige el flujo de trabajo antes de instalar

Si tu aplicación vive en Expo y quieres la configuración más rápida, mantente en el camino de Expo a menos que sepas que necesitas trabajo nativo personalizado. Si estás en una aplicación desnuda, o ya dependes de módulos nativos que necesitan control directo, instálalo como una dependencia nativa normal y valida tanto los builds de iOS como Android de inmediato.

Muchas veces, los equipos subestiman cuánto más fácil se vuelve la depuración cuando se mantiene la configuración alineada con el tipo de proyecto. Eso es también por qué muchos equipos que construyen integraciones nativas personalizadas se mueven temprano a un flujo de trabajo de cliente de desarrollo de Expo en lugar de esperar hasta que la aplicación se vuelva más difícil de cambiar. Cuando el producto quiere movimiento sin incorporar GIFs o MP4s

Configuración de Expo administrada

Para aplicaciones administradas por Expo, manténlo minimalista.

  1. Instale el paquete

    npx expo install lottie-react-native
  2. Reinicie Metro

    npx expo start -c
  3. Verifique en dispositivo o simulador Comience con un archivo JSON local y renderice una animación muy pequeña primero. No depure un activo grande y una instalación nueva al mismo tiempo.

Unos pocos notas prácticas importan en Expo:

  • Preferir archivos locales primero: La depuración de animaciones remotas agrega ruido de red cuando solo estás tratando de probar la biblioteca.
  • Pruebe el comportamiento de lanzamiento temprano: El modo de desarrollo puede ocultar problemas relacionados con el tiempo y el rendimiento.
  • Monitoree las rutas de activos: Los archivos JSON mal ubicados son una de las causas más comunes de "no se renderiza nada".

No hay una ruta más rápida a "funciona" que Expo. Eso no significa que sea la ruta más rápida a "escalabilidad".

Configuración de React Native básica

En un proyecto básico, instale y valide las dependencias nativas de inmediato.

  1. Instale el paquete

    npm install lottie-react-native
  2. Instale los pods de iOS

    cd ios && pod install && cd ..
  3. Reconstruya la aplicación

    npx react-native run-ios

    o

    npx react-native run-android

¿Qué alternativas hay para la actualización en vivo de Capacitor?

¿Qué alternativas hay para Appflow?

¿Qué alternativas hay para Capawesome?

¿Qué alternativas hay para la consultoría de Capgo? ¿Por qué importa
Reconstruir después de la instalación Los módulos nativos necesitan una compilación fresca
Ejecutar pod install No será confiable para iOS sin él
Usar un archivo JSON local simple primero Aisla los problemas de instalación de los problemas de activos
Prueba ambas plataformas temprano Puede fallar Android e iOS por razones diferentes

Si el paquete se instala limpiamente pero tu primera animación no se muestra, eso no es usualmente un problema de instalación. Es usualmente la ruta del activo, el tamaño del componente o la configuración de reproducción.

Mostrar tu primera animación de Lottie

La primera animación que funciona debería ser aburrida. Archivo local. Tamaño fijo. Reproducción automática. Reproducción en bucle opcional. No comiences con la reproducción condicional, JSON remoto o una animación exportada con capas muy superpuestas.

Ambiente de trabajo moderno para desarrolladores con una laptop que muestra code y un monitor que muestra una aplicación de animación móvil.

Agregar un archivo de animación local

Crear un carpeta de activos si no la tienes ya:

assets/
  animations/
    success.json

Usa nombres simples. Evita espacios, puntuación extraña y carpetas con muchos niveles de anidamiento. Quieres require() que los caminos sean obvios.

Si estás utilizando Lottie para una pantalla de carga inicial con tu marca o para una transición después del lanzamiento, piensa con cuidado antes de poner una gran animación en el camino de arranque. Eso es especialmente cierto cuando también estás ajustando el comportamiento de la pantalla de arranque de React Native Renderizarlo con LottieView.

Crear un componente dedicado en lugar de agregarlo directamente a un archivo de pantalla grande:

Eso hace tres cosas útiles:

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,
  },
});

prueba que la biblioteca se renderiza correctamente

  • prueba que la ruta de activos se resuelve correctamente
  • Add a local animation file
  • te da un lugar aislado donde ajustar la reproducción y el tamaño más tarde

Unos pocos problemas surgen inmediatamente si omites los fundamentos:

  • No ancho ni alto: La animación puede existir pero ser invisible.
  • Mal require() ruta: El Metro no encontrará el archivo.
  • Exportación inválida: Algunos archivos JSON son técnicamente válidos pero incluyen características que no se comportan como se espera en móviles.

Mantén la primera renderización local y determinista. Estás probando la integración, no la arquitectura.

Una prueba de pantalla más efectiva

Pon el componente en una pantalla simple con un fondo neutral:

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 esto funciona en ambos simuladores de iOS y Android, has superado la primera barrera real. Desde allí, el siguiente paso no es agregar más animaciones. Es aprender cuándo usar propiedades declarativas y cuándo tomar el control directo con refs.

Maestría en Controles de Animación Lottie

La mayoría de los errores de Lottie React Native se presentan cuando la animación necesita reaccionar al estado. El autoplay es fácil. 'Reproduce este segmento cuando el usuario gusta un artículo, inviértelo cuando no le guste y no se detenga cuando el componente se vuelva a renderizar' es donde las cosas se ponen complicadas.

Una tabla de comparación que explica los métodos de control de animación declarativa e imperativa en Lottie, destacando sus casos de uso específicos.

Utiliza propiedades cuando la reproducción es simple

Para la reproducción no interactiva, las propiedades son suficientes.

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

Este estilo es bueno para:

  • Cargadores de indicación
  • Illustraciones de onboarding pasivo
  • Estados vacíos decorativos

Es declarativo y legible. El componente se monta, la reproducción comienza y React mantiene el control. Si la lógica de la animación se puede describir completamente con propiedades, manténlo así.

Un caso declarativo más avanzado es progressdonde atáis el marco de animación a otro valor. Funciona bien cuando el movimiento debe reflejar una fuente de progreso externa, pero es menos conveniente para eventos de disparo uno a uno.

Aquí hay una comparación visual rápida antes de pasar a los refs:

Usa refs cuando el estado impulsa la animación

Cuando el usuario hace clic, activa o completa una acción, un ref es usualmente la herramienta más segura. Los datos reales muestran 68% de los desarrolladores que utilizan marcos híbridos informan disparadores de animación fallidos debido a un manejo inadecuado de refs en useEffect hooksque es por qué los patrones confiables construidos alrededor animation.current.play() importan, como se menciona en esta Capacitor-discusión enfocada en disparadores fallidos.

Este problema no se limita a aplicaciones híbridas. También aparece en React Native puro, especialmente cuando los desarrolladores recrean refs, reproducen el playback antes de la montaje o atienen llamadas de animación a efectos inestables.

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>
  );
}

Un patrón de me gusta y no me gusta

Este patrón se sostiene mejor en producción que llamar play() dentro useEffect cada vez que cambia el estado.

¿Por qué funciona:

  • El evento posee el disparador de animación: Un evento de presión es un momento estable para iniciar la reproducción.
  • La referencia permanece local y persistente: useRef evita re-renderizaciones innecesarias.
  • El componente evita conflictos de autoplay: No deseas que el comportamiento de montaje luche con el comportamiento desencadenado por el usuario.

Errores comunes que vale la pena evitar:

  1. Desencadenar antes de que exista la referencia
    Si animationRef.current no es nulo, no sucederá la reproducción. Cuida de ello.

  2. Usando autoPlay con controles imperativos
    Elige un dueño por defecto para la reproducción.

  3. Controlar todo a través de useEffect
    Los efectos son útiles, pero para acciones de interfaz de usuario a menudo añaden problemas de tiempo en lugar de eliminarlos.

Si una animación responde a un toque, desencadenarlo dentro del manejador de toques primero. Busca useEffect solamente cuando la fuente de verdad vive fuera de esa interacción.

Tuning de rendimiento para aplicaciones de producción

Lottie React Native es una de esas bibliotecas que parece ligera hasta que los equipos comienzan a meter grandes archivos JSON en el paquete de la aplicación y se preguntan por qué la carga inicial se ha retrasado. La animación en sí no siempre es el problema. La estrategia de entrega es.

Un gráfico informativo que detalla tres beneficios clave del tuning de rendimiento de Lottie: tamaño de paquete reducido, tasas de frames mejoradas y uso de memoria más bajo.

Donde los equipos se meten en problemas

El error más fácil es empaquetar cada animación directamente en JavaScript y cargar todo demasiado pronto. Según esta guía sobre el envío de Lottie JSON de manera incorrecta, sobrecargar los paquetes de JS con activos como Lottie JSONs puede aumentar los tiempos de inicio de la aplicación en un 40% o más en dispositivos de gama media , y moverlos a activos nativos para cargarlos a demanda es una optimización crítica.Eso se alinea con lo que muchas equipos ven en la práctica. El problema no es una animación de éxito minúscula. Es la acumulación:

moverse en la onboarding

  • estados de cargador
  • reacciones de comercio electrónico
  • pantallas vacías de marca
  • archivos de localización y otros activos pesados de paquetes que se encuentran junto a ellos
  • Si su aplicación ya tiene un problema de presupuesto de inicio, los archivos Lottie pueden empeorarlo rápidamente.

El problema no es una animación de éxito minúscula. Es la acumulación:

¿Qué optimizar primero

Comience con la exportación en sí misma. Una exportación de animación descuidada conlleva complejidad que pagará más tarde en la interpretación, memoria y estabilidad de renderizado. No acepte cada exportación del diseñador tal como está.

Utilice este checklist de producción:

  • Comprimir el JSON antes de enviar: Los archivos más pequeños son más fáciles de cargar y menos propensos a hinchar el arranque.
  • Mueva las animaciones no críticas fuera del paquete de JS: Mantenga el lanzamiento code enfocado en lo que la aplicación necesita de inmediato.
  • Cargue animaciones a demanda: Renderice cuando la pantalla o la acción lo necesite.
  • Audite el comportamiento de los dispositivos antiguos: Un simulador moderno puede ocultar la reproducción cara.
  • Evite utilizar archivos Lottie grandes como decoración de arranque: If no es crítico para la primera interacción, no debería competir con el lanzamiento de la aplicación.

Para los equipos que realizan un trabajo serio de rendimiento móvil, La guía de AppLighter para el rendimiento móvil es una lectura útil porque coloca las decisiones de animación en el contexto más amplio de arranque de la aplicación, renderizado y compensaciones de marcos.

Una verdad dura: Una hermosa animación que retrasa la primera interacción es generalmente un error de producto, no un beneficio de diseño.

También debes pensar más allá de React Native en aislamiento. Los equipos que trabajan en pilas híbridas se enfrentan a problemas similares de carga de activos, y la guía de rendimiento de animación más amplia para aplicaciones __CAPGO_KEEP_0__ animation performance guidance for Capacitor apps Archivos locales versus entrega remota

Los archivos locales son predecibles. Funcionan sin conexión, eliminan la variabilidad de red y son más fáciles de probar. También son fáciles de sobrecargar.

La entrega remota mantiene el binario más ligero, pero ahora tu animación tiene preocupaciones de disponibilidad, caché y respaldo. Esa compensación es aceptable para la no crítica de movimiento. Es riesgoso para los estados UX primarios como la confirmación de compra o el éxito de la autenticación.

Para los equipos que hacen un trabajo serio de rendimiento móvil,

Una práctica división funciona bien:

Tipo de activo Mejor valor por defecto
Animación de interacción de núcleo Local, optimizado, no sobredimensionado
Movimiento promocional ocasional Remoto con fallback
Animación de ruta de arranque Sólo local si es absolutamente necesario
Illustración de característica poco utilizada Carga a demanda

Si solo aplicas una regla de esta sección, utiliza esta: trate Lottie JSONs como activos sensibles a la rendimiento, no como decoración inofensiva.

Resolución de Problemas Comunes de Lottie

Cuando Lottie falla, la causa suele ser ordinaria. Ruta incorrecta. Tamaño faltante. Tiempo de referencia malo. JSON pesado. La forma más rápida de depurar es reducir variables.

No se renderiza la animación en Android

Primero, confirme que el archivo JSON se resuelve. Luego, dé al componente dimensiones explícitas.

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

Si eso sigue fallando, intercambie una animación diferente conocida y buena. Eso le dice si el problema es el archivo o la configuración.

La reproducción es irregular en dispositivos más antiguos

Normalmente, esto apunta al activo, no al componente API.

Intenta estos arreglos:

  • Reduce la complejidad de la animación: Pide una exportación más ligera si el archivo de origen es pesado.
  • Carga más tarde: No te compitas con el trabajo de pantalla inicial.
  • Prueba una versión comprimida: Si el archivo comprimido se comporta mejor, has encontrado la botella de cuello.
  • Elimina varias vistas de Lottie simultáneas: Varias animaciones en una pantalla pueden ser demasiado.

La referencia es nula o play no hace nada

Las referencias nulas suelen significar que el disparador dispara antes de la montaje, o el componente se eliminó condicionalmente.

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

Mantén la referencia estable con useRefy no recrees innecesariamente el componente animado. Si estás depurando repetidas rarezas en compilaciones locales, eliminar cachés obsoletos puede ayudar. Un simple rutina de limpieza del caché de Yarn es a veces suficiente para eliminar el comportamiento de activos engañosos durante el desarrollo.

La animación se ve mal en diferentes tamaños de pantalla

¿Deje que la animación defina el diseño. Colóquelo dentro de un contenedor y tamañoalo intencionalmente.

  • Use límites fijos para iconos y reacciones
  • Use envolturas conscientes de aspecto para ilustraciones más grandes
  • Evite estirar hasta el ancho completo sin verificar la composición exportada

La mayoría de los informes de 'Lottie está roto' terminan siendo problemas de diseño, problemas de activos o problemas de tiempo. La biblioteca está haciendo exactamente lo que usted pidió.

Si necesita un atajo de depuración final, quite todos los propiedades avanzadas, renderice una animación local en una vista centrada y construya desde allí.


Capgo ayuda a los equipos a enviar correcciones de JavaScript, activos y configuración a Capacitor sin tener que esperar a la revisión de la tienda. Si mantiene una aplicación híbrida y necesita una forma más segura de enviar actualizaciones, manejar despliegues escalonados y recuperarse rápidamente de problemas de la interfaz de usuario Capgo Es una buena opción.

Actualizaciones en vivo para aplicaciones Capacitor

Cuando un error de capa web está activo, envíe la corrección a través de Capgo en lugar de esperar días para la aprobación de la tienda de aplicaciones. Los usuarios obtienen la actualización en segundo plano mientras los cambios nativos siguen en el camino de revisión normal.

Apoyo humano de Martin

Iniciar Ahora

Últimas noticias de nuestro Blog

Capgo te da las mejores perspectivas que necesitas para crear una aplicación móvil verdaderamente profesional.