Lompat ke konten utama
Mobile Guida

Lottie React Native

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

Martin Donadieu

Martin Donadieu

Pengembang Konten

Lottie React Native

Saat ini Anda mungkin berada di salah satu dua tempat. Entah Anda memiliki desainer yang memberikan Anda Lottie JSON dan meminta, “Apakah kita bisa 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 gambar.

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

Daftar Isi

Mengapa Lottie Penting 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 setting bisnis, perubahan itu mengurangi biaya pengembangan aplikasi mobile hingga 40%menurut Ringkasan Lottie Airbnb.

Desain dan insinyur berhenti berjuang di medan yang sama

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

Hal itu penting karena pekerjaan animasi memiliki kebiasaan menyebar. Animasi perayaan tunggal dapat menyentuh tinjauan desain, tinjauan produk, perilaku Android, perilaku iOS, aksesibilitas, dan kinerja startup. Lottie mempersempit area permukaan itu.

Aturan praktis: Gunakan 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. Motion memberikan feedback, mengkonfirmasi aksi, dan membuat status loading terasa kurang mati. Jika tim Anda berpikir serius tentang kilap, retensi, atau kepercayaan dalam 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. Dimana Lottie paling cocok

Lottie React Native cenderung bekerja paling baik untuk:

Interaksi mikro yang terbranding

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

Apa yang tidak dipecahkan adalah setiap masalah animasi. Untuk transisi layar dasar, alat animasi sendiri React Native seringkali lebih sederhana. Untuk gerakan besar atau sangat interaktif, format JSON dapat menjadi pertukaran daripada kemenangan. Pertukaran ini menjadi lebih penting ketika Anda mencapai produksi, yang merupakan tempat tutorial paling banyak berhenti terlalu awal.

Mengatur Lingkungan Pengembangan Lottie Anda

Jalur instalasi tergantung pada satu keputusan terlebih dahulu: Alur kerja Expo yang diatur atau React Native yang tidak diatur.Jangan campur mental model. Masalah setup paling banyak terjadi ketika pengembang mengikuti panduan alur kerja yang tidak diatur di dalam Expo, atau menganggap Expo mengabstrak setiap detail native.

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

Pilih alur kerja sebelum Anda menginstal

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

Banyak tim menganggap bahwa debugging menjadi lebih mudah ketika setup Anda sejalan dengan jenis proyek. Itulah mengapa banyak tim yang membangun integrasi native yang khusus pindah ke alur kerja pengembangan Expo sebelumnya. alih-alih menunggu sampai aplikasi menjadi sulit untuk diubah. Baca Dokumentasi Lottie

Setup Expo Terkelola

Untuk aplikasi Expo yang dikelola, jaga agar tetap minimal.

  1. Pasang Paket

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

    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 yang beberapa hal penting dalam Expo:

  • Prioritaskan file lokal terlebih dahulu: Debug animasi remote menambahkan kebisingan jaringan ketika Anda hanya mencoba membuktikan bahwa library bekerja.
  • Uji perilaku rilis awal: Mode 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 “berhasil.” Tidak berarti itu adalah rute tercepat ke “mengalami skala.”

Pengaturan React Native dasar

Dalam 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

Bagian ini banyak digunakan oleh panduan cepat-start yang tidak menyebutkannya: setelah instalasi, lakukan rebuild native penuh sebelum memutuskan bahwa sesuatu rusak. Hot reload tidak akan menyelamatkan dependensi native yang belum dikompilasi ke dalam aplikasi dengan benar.

Pengaturan alur dasar yang menghemat waktu

Gunakan daftar checklist singkat ini sebelum melanjutkan:

Periksa Mengapa hal ini penting
Rebuild setelah install Modul native memerlukan kompile ulang
Jalankan pod install iOS tidak akan dapat diandalkan tanpa hal ini
Gunakan JSON lokal sederhana terlebih dahulu Mengisolasi masalah instalasi dari masalah asset
Tes kedua platform sejak awal 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 pengaturan pemutaran.

Menampilkan Animasi Lottie Pertama Anda

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

Saat ini, Anda memiliki ruang kerja pengembang modern dengan laptop menampilkan code dan monitor menampilkan aplikasi animasi ponsel.

Tambahkan file animasi lokal

Buat folder aset jika Anda belum memiliki satu:

assets/
  animations/
    success.json

Jangan membuat nama sulit. Hindari penggunaan spasi, tanda baca aneh, dan folder dengan banyak tingkat penyusunan. Anda ingin require() jalan untuk tetap jelas.

Jika Anda menggunakan Lottie untuk layar muat awal yang sudah di-branding atau tindakan setelah peluncuran, pikirkan dengan hati-hati sebelum memasukkan animasi besar ke dalam jalur startup. Hal itu sangat benar terutama ketika Anda juga mengatur perilaku layar splash React Native Tampilkan dengan LottieView.

Buat komponen khusus bukan langsung memasukkannya ke dalam file layar besar:

Hal itu akan 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 library berfungsi dengan benar

  • menguji apakah jalur aset dapat diakses dengan benar
  • menguji apakah jalur aset dapat diakses dengan benar
  • Menghadirkan satu tempat terisolasi untuk menyesuaikan pengulangan dan ukuran kemudian

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

  • Tidak ada lebar atau tinggi: Animasi dapat ada tetapi tidak terlihat.
  • Buruk require() path: Metro tidak akan 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 pertama yang lebih baik

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

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

Mastering Kontrol Animasi Lottie

Masalah Lottie React Native paling sering 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 sulit.

Tabel perbandingan menjelaskan metode kontrol animasi deklaratif dan imperatif dalam Lottie, serta kasus penggunaan khususnya.

Pakai props ketika pemutaran sederhana

Untuk pemutaran non-interaktif, props sudah cukup.

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

Gaya ini baik untuk:

  • indikator muat
  • illustrasi onboarding pasif
  • status kosong dekoratif

Itu deklaratif dan dapat dibaca. Komponen terpasang, pemutaran dimulai, dan React tetap mengendalikan. Jika logika animasi dapat dijelaskan sepenuhnya oleh props, jangan pindah.

Contoh kasus deklaratif yang lebih maju adalah progressDimana Anda mengikat frame animasi ke nilai lain. Hal ini berfungsi baik ketika gerakan harus menunjukkan sumber progress luar, tetapi kurang nyaman untuk kejadian trigger satu kali.

Berikut adalah perbandingan visual yang cepat sebelum pindah ke refs:

Pakai refs ketika state menggerakkan animasi

Ketika pengguna mengetuk, mengaktifkan toggle, atau menyelesaikan aksi, refs biasanya adalah alat yang lebih aman. Data nyata dunia menunjukkan 68% pengembang yang menggunakan kerangka hybrid melaporkan trigger animasi gagal karena penanganan refs yang tidak tepat di useEffect hooks, yang mengapa pola yang dapat diandalkan dibangun di sekitar animation.current.play() bernilai, seperti yang disebutkan dalam diskusi ini tentang __CAPGO_KEEP_0__-fokus gagal trigger Capacitor-focused discussion of failed triggers.

Polapattern yang dapat diandalkan dan tidak disukai

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

Polapattern ini lebih baik di produksi daripada memanggil

Polapattern ini lebih baik di produksi daripada memanggil play() di dalam useEffect setiap kali state berubah.

Mengapa cara ini berfungsi:

  • Event itu sendiri yang mengontrol trigger animasi: Event tekan adalah titik 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 tidak ada, maka pemutaran tidak akan terjadi. Jaga saja.

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

  3. Mendorong segalanya melalui useEffect
    Efek-efek berguna, tapi untuk aksi UI mereka sering menambahkan masalah waktu daripada menghilangkannya.

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

Tuning 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 startup regresi. Animasi itu sendiri tidak selalu menjadi masalah. Strategi pengiriman adalah.

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

Di mana tim masuk ke dalam kesulitan

The kesalahan paling mudah adalah mengemas setiap animasi secara langsung ke JavaScript dan memuatnya semua terlalu awal. Menurut panduan ini tentang pengiriman Lottie JSON secara tidak tepat, mengalirkan bundle JS 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, ini berlaku dengan apa yang banyak tim lihat dalam praktik. Masalah bukanlah animasi kecil sukses tunggal. Itu adalah tumpukan:

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

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

Apa 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 sebagai-is.

Gunakan daftar checklist produksi ini:

  • Kompress JSON sebelum mengirimkan: File yang lebih kecil lebih mudah dimuat dan kurang mungkin untuk membuat startup menjadi berat.
  • Pindahkan animasi non-kritis keluar dari bundle JS: Tetapkan fokus peluncuran code pada apa yang aplikasi butuhkan segera.
  • Muat animasi sesuai permintaan: 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, maka tidak harus bersaing dengan peluncuran aplikasi.

Untuk tim yang melakukan pekerjaan serius tentang kinerja mobile, Petunjuk AppLighter tentang kinerja mobile adalah bacaan yang berguna karena memasukkan keputusan animasi dalam konteks yang lebih luas dari peluncuran aplikasi, rendering, dan kelebihan-kekurangan framework.

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

Anda juga harus berpikir di luar React Native secara 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 dapat diprediksi. Mereka berfungsi secara offline, menghilangkan variabilitas jaringan, dan lebih mudah untuk diuji. Mereka juga mudah untuk di-over-bundle.

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

For teams doing serious mobile performance work, is a useful companion read because it puts animation decisions in the larger context of app startup, rendering, and framework trade-offs. One hard truth: A beautiful animation that delays first interaction is usually a product bug, not a design win. You should also think beyond React Native in isolation. Teams working in hybrid stacks run into similar asset-loading problems, and the broader animation performance guidance for __CAPGO_KEEP_0__ apps maps well to Lottie decisions too. Local files versus remote delivery Local files are predictable. They work offline, remove network variability, and are easier to test. They’re also easy to over-bundle. Remote delivery keeps the binary leaner, but now your animation has availability, caching, and fallback concerns. That trade-off is acceptable for non-critical motion. It’s risky for primary UX states like purchase confirmation or authentication success.

Pekerjaan yang praktis memang baik:

Tipe aset Pilihan default yang lebih baik
Animasi interaksi inti Dilokalisasi, dioptimalkan, tidak berlebihan
Animasi promosi yang jarang digunakan Jarak jauh dengan fallback
Animasi jalur startup Hanya dilokalisasi jika benar-benar perlu
Ilustrasi fitur yang jarang digunakan Muat ketika diperlukan

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

Mengatasi Masalah Lottie yang Umum

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

Animasi tidak menampilkan pada Android

Pertama, 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.

Pemutaran animasi bergoyang-goyang pada perangkat yang lebih tua

Biasanya ini menunjukkan pada aset, bukan komponen API.

Coba perbaiki dengan cara berikut:

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

Referensi ref adalah null atau play tidak berfungsi

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

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

Tetapkan ref stabil dengan dan jangan membuat komponen animasi secara tidak perlu. Jika Anda sedang debugging keanehan yang berulang dalam build lokal, membersihkan cache yang sudah ketinggalan dapat membantu. Cara sederhana useRefRutin pembersihan cache Yarn kadang-kadang cukup untuk menghilangkan perilaku aset yang menipu selama pengembangan. Animasi terlihat salah di berbagai ukuran layar

Jika Anda mengalami keanehan yang berulang dalam build lokal, membersihkan cache yang sudah ketinggalan dapat membantu.

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

  • Gunakan batasan tetap untuk ikon dan reaksi
  • Gunakan pembungkus yang sadar aspek untuk ilustrasi yang lebih besar
  • Hindari meregang ke lebar penuh tanpa memeriksa komposisi yang dimaksudkan dari ekspor

Banyak laporan “Lottie rusak” berakhir menjadi masalah tata letak, masalah aset, 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 yang berpusat, dan bangun kembali dari sana. Pendekatan tersebut memisahkan masalah lebih cepat daripada menatap layar produksi yang sibuk.


Capgo membantu tim mengirimkan perbaikan JavaScript, aset, dan konfigurasi ke Capacitor tanpa menunggu tinjauan toko. Jika Anda menjaga aplikasi hybrid dan membutuhkan cara yang lebih aman untuk memasang update, mengelola peluncuran yang dipersiapkan, dan pulih dengan cepat dari masalah depan-end. Capgo layak untuk dilihat.

Update langsung untuk Capacitor aplikasi

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

Mulai Sekarang

Terbaru dari Blog Kami

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