Langkapi ke konten utama
Mobile Guides

Lottie React Native

Panduan lengkap kami akan mengajarkan Anda cara menggunakan lottie react native. Meliputi alur kerja Expo & bare, pengaturan animasi, penyesuaian kinerja, dan praktik terbaik untuk 2026.

Lottie React Native

Anda mungkin berada di salah satu dua tempat sekarang. Entah Anda memiliki desainer yang memberikan Anda Lottie JSON dan meminta, “Bisakah kita memasukkannya ke dalam aplikasi hari ini?”, atau Anda sudah menghubungkannya dan menyadari bahwa animasi berfungsi di pengembangan tetapi mulai terasa mahal ketika perangkat nyata, waktu startup, dan rilis masuk ke dalam gambaran.

Itu di mana Lottie React Native menjadi menarik. Demo dasar mudah. Implementasi siap produksi tidak. Perbedaan biasanya bergantung pada cara Anda menginstalnya, cara mengontrol pemutaran, dan apakah Anda menganggap file animasi sebagai aset yang tidak berbahaya atau sebagai bagian dari anggaran kinerja Anda.

Daftar Isi

Mengapa Lottie Esensial untuk Aplikasi React Native

Jika Anda pernah mencoba mereproduksi animasi produk yang rapi dengan tangan di React Native, Anda sudah tahu rasa sakitnya. Detail gerakan kecil berubah menjadi tumpukan logika waktu, interpolasi, dan kekacauan platform. Animasi mungkin terlihat dekat, tapi "dekat" biasanya bukan apa yang desainer kirim.

Lottie mengubah alur kerja itu. Airbnb membuka sumber Lottie pada tahun 2016, dan rilis itu mengubah animasi mobile dengan memungkinkan desainer mengirim animasi langsung tanpa memaksa insinyur untuk merekonstruksi frame demi frame. Dalam beberapa pengaturan bisnis, perubahan itu mengurangi biaya pengembangan aplikasi mobile hingga 40%menurut Ringkasan Lottie Airbnb.

Desain dan insinyur berhenti berperang di medan yang sama

Manfaat utama Lottie React Native bukan hanya "animasi yang cantik dalam JSON." Itu adalah pemisahan kepentingan. Desainer bekerja di After Effects dan mengexport dengan Bodymovin. Pengembang menampilkan hasilnya dengan pemutaran yang didukung oleh native tanpa menerjemahkan gerakan menjadi code yang khusus.

Perlu diingat karena karena pekerjaan animasi memiliki kecenderungan untuk menyebar. Animasi kejadian sambutan tunggal dapat menyentuh tinjauan desain, tinjauan produk, perilaku Android, perilaku iOS, aksesibilitas, dan kinerja startup. Lottie mempersempit area permukaan itu.

Aturan praktis: Pakai Lottie ketika animasi adalah bagian dari pengalaman produk, bukan ketika Anda hanya membutuhkan transisi opacity atau translate yang sederhana.

Ada juga sudut pandang pengalaman pengguna. Gerakan memberikan feedback, memastikan aksi, dan membuat status muatan terasa kurang mati. Jika tim Anda berpikir serius tentang kilauan, retensi, atau kepercayaan di antarmuka, animasi adalah bagian dari percakapan itu. Pembahasan pengalaman pengguna aplikasi yang lebih luas biasanya berakhir di tempat yang sama: feedback cepat mengalahkan layar statis. Pembahasan pengalaman pengguna aplikasi biasanya Dimana Lottie paling baik digunakan

Lottie React Native cenderung bekerja paling baik untuk:

Interaksi mikro yang di-brand

  • seperti suka, menyimpan, tanda centang, dan status sukses pembelian Illustrasi onboarding
  • yang perlu terasa kustom tanpa mengirim video Status muatan dan kosong
  • di mana UI statis terasa belum selesai Pendidikan fitur
  • __CAPGO_KEEP_0__ ketika produk ingin gerakan tanpa mengintegrasikan GIFs atau MP4s

Tapi itu tidak menyelesaikan semua masalah animasi. Untuk transisi layar dasar, alat animasi Native React sendiri seringkali lebih sederhana. Untuk sistem gerakan besar atau sangat interaktif, format JSON dapat menjadi pertukaran daripada keuntungan. Pertukaran ini menjadi lebih penting ketika Anda mencapai produksi, yang merupakan tempat tutorial kebanyakan berhenti terlalu awal.

Pengaturan Lingkungan Pengembangan Lottie

Jalur instalasi bergantung pada satu keputusan terlebih dahulu: Ekspor alih-alih React Native yang tidak diaturJangan campuradukkan model mental. Masalah pengaturan paling sering terjadi ketika pengembang mengikuti panduan alih-alih ekspor atau menganggap ekspor mengabstrak semua detail asli.

Diagram alir menunjukkan langkah pengaturan animasi Lottie di proyek ekspor dan React Native yang tidak diatur.

Pilih alih-alih instalasi

Jika aplikasi Anda berada di ekspor dan Anda ingin setup yang paling cepat, tetaplah di jalur ekspor kecuali Anda tahu Anda membutuhkan pekerjaan asli native. Jika Anda berada di aplikasi yang tidak diatur, atau Anda sudah bergantung pada modul native yang membutuhkan kontrol langsung, instalasikan sebagai dependensi native biasa dan validasi baik build iOS dan Android segera.

Banyak tim menganggap bahwa debugging menjadi lebih mudah ketika setup mereka sejalan dengan jenis proyek. Itu juga mengapa banyak tim yang membangun integrasi native kustom berpindah ke ekspor klien pengembangan alih-alih menunggu sampai aplikasi menjadi sulit diubah. A flowchart showing the setup steps for Lottie animations in Expo and Bare React Native projects.

Konfigurasi Expo yang diatur oleh Expo

Untuk aplikasi Expo yang diatur oleh Expo, jadikan minimalis.

  1. Instal paket

    npx expo install lottie-react-native
  2. Mulai ulang Metro

    npx expo start -c
  3. Verifikasi di perangkat atau simulator Mulai dengan file JSON lokal dan render animasi yang sangat kecil terlebih dahulu. Jangan debug aset besar dan instalasi baru secara bersamaan.

Catatan praktis beberapa hal yang penting dalam Expo:

  • Lebih baik menggunakan file lokal terlebih dahulu: Pengujian animasi remote menambahkan kebisingan jaringan ketika Anda hanya mencoba membuktikan bahwa library berfungsi.
  • Uji perilaku rilis sejak awal: Pengaturan pengembangan dapat menyembunyikan masalah terkait waktu dan kinerja.
  • Perhatikan jalur aset: File JSON yang salah letak adalah salah satu penyebab paling umum "tidak menampilkan apa-apa".

Expo adalah rute tercepat ke "berfungsi". Itu tidak berarti itu adalah rute tercepat ke "membesar".

Konfigurasi React Native dasar

Pada proyek dasar, instal dan validasi dependensi native segera.

  1. Instal paket

    npm install lottie-react-native
  2. Instal pods iOS

    cd ios && pod install && cd ..
  3. Rebuild aplikasi

    npx react-native run-ios

    atau

    npx react-native run-android

Bagaimana cara memilih alternatif yang tepat?

Perlu dilakukan rebuild penuh native setelah instalasi sebelum memutuskan bahwa ada yang rusak. Hot reload tidak akan menyelamatkan dependensi native yang belum dikompilasi dengan benar ke dalam aplikasi.

Alur kerja dasar yang menghemat waktu

Gunakan daftar checklist singkat ini sebelum melanjutkan: Kenapa hal ini penting
Rebuild setelah instalasi Modul native memerlukan kompile ulang
Jalankan pod install iOS tidak akan dapat diandalkan tanpa hal ini
Pertimbangkan menggunakan JSON lokal sederhana terlebih dahulu Mengisolasi masalah instalasi dari masalah asset
Uji keduanya secara dini Android dan iOS dapat gagal karena alasan yang berbeda

Jika paket instalasi bersih tetapi animasi pertama Anda tidak muncul, itu biasanya bukan masalah instalasi. Biasanya itu adalah jalur asset, ukuran komponen, atau konfigurasi pemutaran.

Pertunjukan Animasi Lottie Pertama Anda

Animasi pertama yang berfungsi haruslah membosankan. File lokal. Ukuran tetap. Otomatis mainkan. Ulangi opsional. Jangan mulai dengan pemutaran kondisional, JSON remote, atau animasi export yang sangat berlapis.

Ambil tempat kerja pengembang modern dengan laptop menampilkan code dan monitor menampilkan aplikasi animasi ponsel.

Tambahkan file animasi lokal.

Buat folder asset jika Anda belum memiliki satu:

assets/
  animations/
    success.json

Pilih nama yang sederhana. Hindari ruang, tanda baca aneh, dan folder dengan banyak tingkat penyusunan. Anda ingin require() jalan untuk tetap jelas.

Jika Anda menggunakan Lottie untuk layar muatan awal atau tanda tangan setelah peluncuran, pikirkan dengan hati-hati sebelum memasukkan animasi besar ke jalur startup. Hal itu sangat benar ketika Anda juga menyetel perilaku layar splash React Native. Tampilkan dengan LottieView..

Buat komponen khusus bukan langsung memasukkannya ke file layar besar:

Hal itu melakukan tiga hal yang berguna:

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

menguji apakah perpustakaan mengrender dengan benar

  • menguji apakah jalur asset dapat diakses dengan benar
  • Menggunakan LottieView untuk menampilkan animasi.
  • Memberi Anda satu tempat terisolasi untuk menyesuaikan pemutaran dan ukuran kemudian.

Beberapa hal yang perlu diingat muncul jika Anda melewatkan dasar-dasar:

  • Tidak ada lebar atau tinggi: Animasi dapat ada tetapi tidak terlihat.
  • Buruk require() Rute: Metro tidak dapat menemukan file.
  • Ekspor tidak valid: Beberapa file JSON secara teknis valid tetapi termasuk fitur yang tidak berperilaku seperti yang diharapkan di perangkat mobile.

Tetapkan render pertama lokal dan deterministik. Anda sedang menguji integrasi, bukan arsitektur.

Pengujian layar awal yang lebih baik

Tempatkan komponen pada layar sederhana dengan latar belakang netral:

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

Jika ini berhasil di simulator iOS dan Android, Anda telah melewati hambatan pertama yang nyata. Dari sana, langkah berikutnya bukanlah menambahkan animasi lebih banyak. Itu adalah belajar kapan menggunakan deklaratif props dan kapan mengambil kendali langsung dengan refs.

Belajar Kontrol Animasi Lottie

Banyak bug Lottie React Native muncul ketika animasi perlu bereaksi terhadap keadaan. Autoplay mudah. 'Mainkan segment ini ketika pengguna menyukai item, balikkan ketika mereka tidak suka, dan jangan berhenti ketika komponen dirender ulang' adalah tempat yang penuh kesulitan.

Tabel Perbandingan Menggunakan Kontrol Animasi Deklaratif dan Imperatif di Lottie

Pilih Deklaratif Ketika Pembacaan Sederhana

Untuk pemutaran non-interaktif, props sudah cukup.

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

Stil ini baik untuk:

  • Indikator muat
  • Illustrasi onboarding pasif
  • Status kosong dekoratif

Deklaratif dan mudah dibaca. Komponen terpasang, pemutaran dimulai, dan React tetap mengendalikan. Jika logika animasi dapat dijelaskan sepenuhnya oleh props, jangan meninggalkannya.

Contoh kasus deklaratif yang lebih maju adalah progressdi mana Anda mengikat kerangka animasi ke nilai lain. Hal itu berfungsi baik ketika gerakan harus menunjukkan sumber kemajuan luar, tetapi kurang nyaman untuk kejadian trigger satu kali.

Berikut adalah perbandingan visual yang cepat sebelum kita beralih ke refs:

Pakai refs ketika keadaan menggerakkan animasi.

Ketika pengguna mengetuk, mengaktifkan toggle, atau menyelesaikan aksi, refs biasanya alat yang lebih aman. Data nyata menunjukkan bahwa 68% pengembang menggunakan framework hybrid melaporkan gagal trigger animasi karena penanganan refs yang tidak tepat di hooks useEffect yang mengapa pola yang dapat diandalkan dibangun di sekitaryang dicatat dalam diskusi ini tentang gagal trigger animation.current.play() Masalah itu tidak hanya terjadi di aplikasi hybrid. Hal itu juga muncul di React Native biasa, terutama ketika pengembang mereproduksi refs, memainkan playback sebelum mount, atau mengikat panggilan animasi ke efek yang tidak stabil. Capacitor-focused discussion of failed triggers.

Polanya ini lebih baik di produksi daripada memanggil

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() di dalam useEffect setiap kali state berubah.

Mengapa ini berhasil:

  • Event menguasai trigger animasi: Sebuah event tekan adalah saat yang stabil untuk memulai playback.
  • Referensi tetap lokal dan persisten: useRef menghindari rerender yang tidak perlu.
  • Komponen menghindari konflik autoplay: Anda tidak ingin perilaku mount bertabrakan dengan perilaku yang dipicu pengguna.

Kesalahan umum yang perlu dihindari:

  1. Mengaktifkan sebelum referensi ada
    Jika animationRef.current Jika itu null, maka pemutaran tidak akan terjadi. Pelihara itu.

  2. Menggunakan autoPlay Dengan kontrol imperatif
    Pilih satu pemilik default untuk pemutaran.

  3. Mendorong semua melalui useEffect
    Efek berguna, tetapi untuk aksi UI mereka sering menambahkan masalah waktu daripada menghilangkannya.

Jika animasi bereaksi terhadap sentuhan, maka triggerlah di dalam handler sentuhan terlebih dahulu. Cari useEffect saat sumber kebenaran hidup di luar interaksi tersebut.

Pengaturan Kinerja untuk Aplikasi Produksi

Lottie React Native adalah salah satu library yang terlihat ringan sampai tim mulai memasukkan file JSON besar ke dalam bundle aplikasi dan bertanya-tanya mengapa regresi startup terjadi. Animasi itu sendiri tidak selalu menjadi masalah. Strategi pengiriman adalah.

Infografis yang menjelaskan tiga manfaat utama pengaturan kinerja Lottie: ukuran bundle yang lebih kecil, frame rate yang lebih baik, dan penggunaan memori yang lebih rendah.

Di mana tim masuk ke dalam kesulitan

Kesalahan yang paling mudah adalah mengemas setiap animasi secara langsung ke JavaScript dan memuatnya semua terlalu awal menurut menurut panduan ini tentang pengiriman Lottie JSON secara salah, mengalihkan JS bundle dengan aset seperti Lottie JSONs dapat meningkatkan waktu mulai aplikasi oleh 40% atau lebih pada perangkat mid-range, dan memindahkannya ke aset native untuk penggunaan on-demand adalah optimasi kritis.

Baru-baru ini, hal ini sesuai dengan apa yang banyak tim lihat dalam praktek. Masalah bukanlah animasi kecil sukses tunggal. Itu adalah akumulasi:

  • gerakan onboarding
  • status loader
  • reaksi e-commerce
  • layar kosong yang di-brand
  • file lokal dan aset lain yang berat bundle yang duduk di samping mereka

Jika aplikasi Anda sudah memiliki masalah anggaran startup, file Lottie dapat membuatnya semakin buruk dengan cepat.

Apakah yang harus diperbaiki terlebih dahulu

Mulai dengan ekspor itu sendiri. Ekspor animasi yang tidak rapi membawa kompleksitas yang akan membayar nanti dalam parsing, memori, dan stabilitas render. Jangan menerima setiap ekspor desainer as-is.

Gunakan daftar checklist produksi ini:

  • Kompress JSON sebelum mengirim: File yang lebih kecil lebih mudah dimuat dan kurang kemungkinan membuat startup menjadi berat.
  • Pindahkan animasi non-kritis keluar dari bundle JS: Tetapkan fokus peluncuran code pada apa yang aplikasi butuhkan secara langsung.
  • Muat animasi ketika dibutuhkan: Render ketika layar atau aksi membutuhkannya.
  • Audit perilaku perangkat lama: Simulator modern dapat menyembunyikan playback yang mahal.
  • Hindari menggunakan file Lottie besar sebagai dekorasi startup: Jika tidak penting untuk interaksi pertama, tidak seharusnya bersaing dengan peluncuran aplikasi.

Untuk tim yang melakukan pekerjaan kinerja mobile serius, Petunjuk AppLighter untuk kinerja mobile adalah bacaan teman yang berguna karena memasukkan keputusan animasi dalam konteks yang lebih besar dari peluncuran aplikasi, rendering, dan kelebihan kerangka.

Satu kebenaran yang sulit: Animasi yang indah yang menunda interaksi pertama biasanya adalah bug produk, bukan kemenangan desain.

Anda juga harus berpikir di luar React Native dalam isolasi. Tim yang bekerja dalam stack hybrid menghadapi masalah pengisian aset yang sama, dan panduan kinerja animasi yang lebih luas untuk aplikasi __CAPGO_KEEP_0__ animation performance guidance for Capacitor apps File lokal versus pengiriman jarak jauh

File lokal adalah prediktif. Mereka berfungsi secara offline, menghilangkan variabilitas jaringan, dan lebih mudah untuk diuji. Mereka juga mudah untuk di-over-bundel.

Pengiriman jarak jauh menjaga biner lebih tipis, tetapi sekarang animasi Anda memiliki kekhawatiran tentang ketersediaan, caching, dan fallback. Perubahan itu dapat diterima untuk gerakan non-kritis. Risikonya besar untuk status UX utama seperti konfirmasi pembelian atau kesuksesan autentikasi.

File lokal adalah prediktif. Mereka berfungsi secara offline, menghilangkan variabilitas jaringan, dan lebih mudah untuk diuji. Mereka juga mudah untuk di-over-bundel.

April praktis bekerja baik:

Jenis aset Default yang lebih baik
Animasi interaksi inti Optimisasi lokal, tidak berlebihan
Motion promosi yang jarang Jarak jauh dengan fallback
Animasi jalur startup Hanya lokal jika benar-benar diperlukan
Illustrasi fitur yang jarang digunakan Pemuatan pada permintaan

Jika Anda hanya menerapkan satu aturan dari bagian ini, gunakan aturan ini: perlakukan Lottie JSON sebagai aset yang sensitif terhadap kinerja, bukan dekorasi yang tidak berbahaya.

Memecahkan Masalah Lottie yang Umum

Jika Lottie gagal, penyebabnya biasanya biasa saja. Jalur yang salah. Ukuran yang hilang. Waktu referensi yang salah. JSON yang berat. Cara tercepat untuk memecahkan masalahnya adalah dengan mengurangi variabel.

Animasi tidak menampilkan pada Android

Pertama-tama, pastikan file JSON dapat diakses. Kemudian berikan komponen dimensi yang eksplisit.

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

Jika itu masih gagal, ganti dengan animasi yang sudah terbukti baik. Itu akan menunjukkan apakah masalahnya ada pada file atau pengaturan.

Reproduksi animasi bergoyang-goyang pada perangkat yang lebih tua

Biasanya ini menunjukkan bahwa masalah ada pada aset, bukan komponen API.

Coba solusi ini:

  • Kurangi kompleksitas animasi: Tanyakan untuk ekspor yang lebih ringan jika file sumbernya berat.
  • Muat nanti: Jangan bersaing dengan pekerjaan layar awal.
  • Uji coba versi kompresi: Jika file kompresi berperilaku lebih baik, Anda telah menemukan botol leher.
  • Hapus beberapa Lottie view sekaligus: Beberapa animasi di satu layar dapat terlalu banyak.

Referensi null atau play tidak berfungsi

Referensi null biasanya berarti trigger meledak sebelum mount, atau komponen dihapus kondisional.

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

Tetapkan referensi stabil dengan useRef, dan jangan menciptakan komponen animasi secara tidak perlu. Jika Anda sedang debugging kesulitan berulang di build lokal, membersihkan cache yang sudah ketinggalan dapat membantu. Cara sederhana rutinitas pembersihan cache Yarn kadang-kadang cukup untuk menghilangkan perilaku aset yang menipu selama pengembangan.

Animasi terlihat salah di berbagai ukuran layar

Jangan biarkan animasi menentukan tata letak. Masukkan ke dalam kontainer dan ukur secara sengaja.

  • Pakai batasan tetap untuk ikon dan reaksi.
  • Pakai pembungkus yang sadar aspek untuk ilustrasi yang lebih besar.
  • Hindari meregangkan ke lebar penuh tanpa memeriksa komposisi ekspor yang dimaksudkan.

Sebagian besar laporan ‘Lottie rusak’ berakhir menjadi masalah tata letak, masalah asset, atau masalah waktu. Perpustakaan sering melakukan apa yang Anda minta.

Jika Anda membutuhkan shortcut debugging akhir, hapus setiap prop lanjutan, render animasi lokal satu di dalam tampilan tengah, dan bangun kembali dari sana. Pendekatan tersebut memisahkan masalah lebih cepat daripada memandang layar produksi yang sibuk.


Capgo membantu tim mengirimkan perbaikan JavaScript, asset, dan konfigurasi ke Capacitor tanpa menunggu ulasan toko. Jika Anda menjaga aplikasi hybrid dan membutuhkan cara yang lebih aman untuk memasang pembaruan, mengelola peluncuran yang dipersiapkan, dan pulih dengan cepat dari masalah depan-end, Capgo patut dipertimbangkan.

Update langsung untuk aplikasi Capacitor

Ketika bug layer web masih aktif, kirimkan perbaikan melalui Capgo daripada menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan update di latar belakang sementara perubahan native tetap dalam jalur review normal.

Bantuan manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang profesional sebenarnya.