Saltar al contenido principal
Mobile 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.

Lottie React Native

Probablemente estás en una de dos situaciones 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 configurado y has notado que la animación funciona en desarrollo pero comienza a sentirse cara una vez que entran en juego los dispositivos reales, el tiempo de arranque y los paquetes de lanzamiento.

Esa es donde Lottie React Native se vuelve interesante. La demo 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 a 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 nativamente en lugar de traducir el movimiento a __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:

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

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 sobre la experiencia del usuario del aplicativo suele terminar en el mismo lugar: la retroalimentación rápida supera a las pantallas estáticas. La discusión sobre la experiencia del usuario del aplicativo suele terminar en el mismo lugar. ¿Dónde se ajusta mejor Lottie?

Lottie React Native tiende a funcionar mejor en:

Interacciones micro-branded

  • como likes, saves, checkmarks 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
  • 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. cuando el producto quiere movimiento sin incorporar GIFs o MP4s

Lo que no resuelve es todo el problema de animación. Para transiciones de pantalla básicas, las herramientas de animación de React Native son a menudo 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. Ese trade-off se vuelve más importante una vez que alcanzas 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: flujo de Expo 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 mostrando los pasos de configuración para animaciones de Lottie en proyectos de Expo y React Native desnudo.

Elige el flujo 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 cliente de desarrollo de Expo en lugar de esperar hasta que la aplicación se vuelva más difícil de cambiar. en lugar de esperar hasta que la aplicación se vuelva más difícil de cambiar.

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 remotos agrega ruido de red cuando solo intentas 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 desplazados son una de las causas más comunes de 'no se renderiza nada'.

Expo es la ruta más rápida a 'funciona'. Eso no significa que sea la ruta más rápida a 'escala'.

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? ¿Qué opciones tengo? ¿Qué puedo hacer en lugar de Appflow? ¿Qué puedo hacer en lugar de Capawesome? ¿Qué puedo hacer en lugar de Capacitor live-update?

¿Qué puedo hacer después de instalar? ¿Qué puedo hacer antes de decidir que algo está roto? ¿Qué puedo hacer para asegurarme de que todo funcione correctamente?

Flujo de trabajo básico que ahorra tiempo

Use este breve checklist antes de seguir adelante: ¿Qué puedo hacer para asegurarme de que todo funcione correctamente? ¿Qué puedo hacer para evitar problemas en el futuro? ¿Qué puedo hacer para mejorar mi experiencia con React Native? ¿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
Utilice un archivo JSON local simple primero Aisla los problemas de instalación de los problemas de activos
Pruebe ambos sistemas operativos temprano Android e iOS pueden fallar por razones diferentes

Si el paquete se instala limpiamente pero tu primera animación no se muestra, eso suele no ser un problema de instalación. Suele ser 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 funcione debería ser aburrida. Archivo local. Tamaño fijo. Reproducción automática. Repetición opcional. No comience 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 una 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 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:

  • Sin ancho ni alto: La animación puede existir pero ser invisible.
  • Mal require() ruta: 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

Coloca 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. A partir de allí, el siguiente paso no es agregar más animaciones. Es aprender cuándo utilizar propiedades declarativas y cuándo tomar el control directo con refs.

Dominar 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 te detengas 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:

  • indicadores de carga
  • ilustraciones de onboarding pasivas
  • estados vacíos decorativos

Es declarativo y legible. El componente se monta, la reproducción comienza y React sigue al mando. 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 aties la animación a un frame 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 usan marcos híbridos informan disparadores de animación fallidos debido a un manejo inadecuado de refs en useEffect hooks, lo que es por qué los patrones confiables construidos alrededor de 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 atienden 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 de 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.
  • El ref 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 el ref
    Si animationRef.current Si es null, no habrá reproducción. Cuida de ello.

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

  3. Conducir 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, activa primero dentro del manejador de toque. Busca useEffect solamente cuando la fuente de verdad vive fuera de esa interacción.

Optimización 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 infográfico que detalla tres beneficios clave de la optimización de rendimiento de Lottie: tamaño de paquete reducido, tasas de frames mejoradas y uso de memoria reducido.

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 la entrega 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.

Esto 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 el proceso de inicio
  • 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 sientan junto a ellos

Si su aplicación ya tiene un problema de presupuesto de inicio, los archivos Lottie pueden empeorarlo rápidamente.

¿Qué optimizar primero

Comience con la exportación misma. Una exportación de animación desordenada 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:

  • Comprima 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 arranque code enfocado en lo que la aplicación necesita inmediatamente.
  • Cargue las 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: Si 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 en rendimiento móvil La guía de AppLighter para el rendimiento móvil es una lectura útil de compañero 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 dura verdad: Una hermosa animación que retrasa la primera interacción es generalmente un error de producto, no un triunfo 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. Ese trueque es aceptable para la no crítica de movimiento. Es riesgoso para los estados UX principales como la confirmación de compra o el éxito de la autenticación.

Si no es crítico para la primera interacción, no debería competir con el lanzamiento de la aplicación.

A una separación práctica 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 del camino de inicio 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 incorrecto. JSON pesado. La forma más rápida de depurar es reducir variables.

La animación no se renderiza 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 un archivo de animación diferente conocido y bueno. Eso le dice si el problema es el archivo o la configuración.

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

Esto suele apuntar al activo, no al componente API.

Pruebe estos ajustes:

  • Reducir la complejidad de la animación: Pida una exportación más ligera si el archivo de origen es pesado.
  • Cargar más tarde: No te compitas con el trabajo de la 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 la repetida extraña en compilaciones locales, eliminar cachés obsoletos puede ayudar. Una rutina de limpieza de caché de Yarn suele ser suficiente para eliminar el comportamiento de activos engañosos durante el desarrollo. La animación se ve mal en diferentes tamaños de pantalla

Elimina varias vistas de Lottie simultáneas: varias animaciones en una pantalla pueden ser demasiado.

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

  • Utiliza límites fijos para iconos y reacciones.
  • Utiliza envolturas conscientes de aspecto para ilustraciones más grandes.
  • Evita 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, elimine 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 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 front-end, Capgo es digno de una mirada.

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.