Lompat ke konten utama
Mobile Petunjuk

Lottie React Native

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

Lottie React Native

Anda mungkin berada di salah satu tempat ini. Entah Anda memiliki seorang desainer yang memberikan Anda Lottie JSON dan bertanya, '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 gambaran.

Itu di mana Lottie React Native menjadi menarik. Demo dasar mudah. Implementasi siap produksi bukan. 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.

Table of Contents

Mengapa Lottie Penting untuk Aplikasi React Native

Jika Anda pernah mencoba untuk 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 membangunnya frame per frame. Dalam beberapa setting bisnis, perubahan itu mengurangi biaya pengembangan aplikasi mobile hingga 40%, according to Ringkasan Lottie Airbnb.

Desain dan insinyur berhenti berjuang 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 menerjemahkan output dengan pemutaran yang didukung native bukan menerjemahkan gerakan ke dalam code yang khusus.

Alasan itu penting karena pekerjaan animasi memiliki kecenderungan menyebar. Animasi pernyataan pesta dapat menyentuh ulasan desain, ulasan 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, mengonfirmasi aksi, dan membuat status loading terasa kurang mati. Jika tim Anda berpikir serius tentang kilauan, retensi, atau kepercayaan pada antarmuka, animasi adalah bagian dari percakapan itu. Diskusi pengalaman pengguna yang lebih luas Diskusi Pengalaman Pengguna Aplikasi biasanya berakhir di tempat yang sama: feedback cepat mengalahkan layar statis.

Di mana Lottie paling sesuai

Lottie React Native cenderung berfungsi dengan baik untuk:

  • Interaksi Mikro yang Dibuat Khusus similer dengan likes, simpan, centang, dan status sukses pembelian
  • Ikonisasi Pendaftaran yang perlu terlihat custom tanpa mengirim video
  • Loading dan status kosong di mana UI statis terkesan tidak selesai
  • Pendidikan fitur ketika produk ingin gerakan tanpa menggabungkan GIF atau MP4

Apa yang tidak menyelesaikan adalah setiap masalah animasi. Untuk transisi layar dasar, alat animasi sendiri React Native seringkali lebih sederhana. Untuk sistem 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 kebanyakan berhenti terlalu awal.

Mengatur Lingkungan Pengembangan Lottie Anda

Jalur instalasi bergantung pada satu keputusan terlebih dahulu: Expo managed workflow or bare React Native. Jangan mencampur model mental. Masalah setup paling sering terjadi ketika pengembang mengikuti panduan alur kerja sederhana 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 sederhana.

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 sederhana, atau Anda sudah bergantung pada modul native yang memerlukan kontrol langsung, instalnya sebagai dependensi native biasa dan validasi baik build iOS maupun Android segera.

A lot of teams underestimate how much easier debugging becomes when you keep your setup aligned with the project type. That’s also why many teams building custom native integrations move early to an Alur kerja Expo development client Alih-alih menunggu sampai aplikasi menjadi sulit diubah.

Pengaturan Expo yang Dikelola

For Expo-managed apps, keep it minimal.

  1. Mulai ulang Metro

    npx expo install lottie-react-native
  2. Verifikasi di perangkat atau simulator

    npx expo start -c
  3. Verifikasi di perangkat atau simulator Start with a local JSON file and render a very small animation first. Don’t debug a large asset and a new install at the same time.

Lebih baik menggunakan file lokal terlebih dahulu:

  • Pilih file lokal terlebih dahulu: Debug animasi remote menambahkan kebisingan jaringan ketika Anda hanya mencoba membuktikan bahwa library bekerja.
  • Tes perilisan perilaku awal: Mode pengembangan dapat menyembunyikan masalah terkait waktu dan kinerja.
  • Watch jalur aset: File JSON yang salah tempat adalah salah satu penyebab paling umum dari “tidak menampilkan apa-apa”.

Expo adalah rute tercepat ke “berfungsi.” Tidak berarti itu adalah rute tercepat ke “mengalami skala.”

Setup React Native yang sederhana

Dalam proyek sederhana, instal dan validasi dependensi native segera.

  1. Install the package

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

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

    npx react-native run-ios

    atau

    npx react-native run-android

Here’s the part many quick-start guides skip: after installation, do a full native rebuild before deciding something is broken. Hot reload won’t rescue a native dependency that hasn’t been compiled into the app correctly.

Alur kerja yang sederhana untuk menghemat waktu

Gunakan daftar periksa singkat ini sebelum melanjutkan:

Periksa Mengapa hal ini penting
Rebuild setelah instalasi Modul native memerlukan kompile ulang
Jalankan pod install iOS tidak akan dapat diandalkan tanpa itu.
iOS tidak akan dapat diandalkan tanpa itu Gunakan JSON lokal sederhana terlebih dahulu
Mengisolasi masalah instalasi dari masalah asset Uji baik platform Android maupun iOS secara dini

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

Menampilkan Animasi Lottie Pertama Anda

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

Saat bekerja di ruang kerja pengembang modern dengan laptop menampilkan code dan monitor menampilkan aplikasi animasi mobile.

Tambahkan file animasi lokal

Buat folder aset jika Anda belum memiliki satu:

assets/
  animations/
    success.json

Gunakan nama yang sederhana. Hindari spasi, tanda baca aneh, dan folder dengan banyak tingkat penyusunan. Anda ingin require() jalur untuk tetap jelas.

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

Tampilkan dengan LottieView

Buat komponen khusus daripada memasukkannya langsung ke file layar besar:

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

itu melakukan tiga hal yang berguna:

  • it proves the library renders correctly
  • itu membuktikan bahwa jalur aset dapat diresolusi dengan benar
  • itu memberikan satu tempat yang terisolasi untuk menyesuaikan playback dan ukuran kemudian

Beberapa hal yang perlu diwaspadai muncul segera jika Anda melewatkan dasar-dasar:

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

Jaga render pertama di lokal dan deterministik. Kamu sedang menguji integrasi, bukan arsitektur.

Tes Layar Awal yang Lebih Baik

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

Jika ini berhasil di simulator iOS dan Android, kamu telah melewati hambatan pertama yang nyata. Dari sana, langkah berikutnya bukanlah menambahkan animasi lain. Melainkan belajar kapan menggunakan deklarasi atribut dan kapan mengambil kendali langsung dengan refs.

Menguasai 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 menyukainya, dan jangan berhenti ketika komponen dirender ulang' adalah tempat yang paling berantakan.

Tabel perbandingan yang menjelaskan metode kontrol animasi deklaratif dan imperatif dalam Lottie, serta menyoroti penggunaan spesifiknya.

Pakai atribut ketika playback sederhana

Untuk playback non-interaktif, atribut sudah cukup.

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

Gaya ini baik untuk:

  • indikator muatan
  • ilustrasi onboarding pasif
  • keadaan kosong dekoratif

Itu deklaratif dan dapat dibaca. Komponen terpasang, pemutaran dimulai, dan React tetap mengontrol. Jika logika animasi dapat dijelaskan sepenuhnya oleh atribut, biarkanlah.

Contoh kasus deklaratif yang lebih maju adalah progressdi mana Anda mengikat frame animasi ke nilai lain. Hal itu berfungsi baik ketika gerakan harus mencerminkan sumber kemajuan eksternal, tetapi kurang nyaman untuk kejadian trigger tunggal.

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

Pakai refs ketika keadaan menggerakkan animasi

Saat pengguna mengetuk, mengaktifkan, atau menyelesaikan tindakan, refs biasanya adalah alat yang lebih aman. Data nyata menunjukkan 68% pengembang yang menggunakan kerangka kerja hybrid melaporkan gagalnya trigger animasi karena penanganan refs yang tidak tepat di useEffect hooksyang mengapa pola yang dapat diandalkan dibangun di sekitar animation.current.play() materi, seperti yang disebutkan dalam diskusi ini Capacitor-fokus mengenai gagal trigger.

Masalah itu tidak hanya terbatas pada aplikasi hybrid. Masalah ini juga muncul pada React Native yang sederhana, terutama ketika pengembang mereproduksi refs, memicu pemutaran sebelum mount, atau menghubungkan panggilan animasi ke efek tidak stabil.

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

Polanya yang dapat diandalkan dan tidak disukai

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

Mengapa itu berhasil:

  • Event menguasai trigger animasi: Sebuah event tekan adalah saat yang stabil untuk memulai pemutaran.
  • Ref 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 patut dihindari:

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

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

  3. Mendorong segalanya melalui useEffect
    Efek berguna, tetapi 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.

Pengaturan Kinerja untuk Aplikasi Produksi

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

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

Dimana tim masuk ke dalam kesulitan

Kesalahan yang paling mudah adalah memasukkan setiap animasi secara langsung ke JavaScript dan memuatnya semua terlalu awal. Menurut panduan ini tentang pengiriman Lottie JSON secara salahmenggunakan asset seperti Lottie JSON dapat meningkatkan waktu mulai aplikasi oleh 40% atau lebih pada perangkat mid-rangedan memindahkannya ke aset native untuk pengiriman pada permintaan adalah optimasi kritis.

Hal itu 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 sudah di-branding
  • file lokal dan aset berat bundle lainnya yang berada di sampingnya

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

Apa yang harus dioptimalkan terlebih dahulu

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

Gunakan daftar checklist produksi ini:

  • Kompress JSON sebelum mengirim: File yang lebih kecil lebih mudah dimuat dan kurang mungkin untuk membuat startup bloat.
  • Pindahkan animasi non-kritis keluar dari bundle JS: Tetapkan fokus launch code pada apa yang aplikasi butuhkan segera.
  • Muat animasi secara on demand: 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 itu tidak kritis untuk interaksi pertama, itu tidak seharusnya bersaing dengan peluncuran aplikasi.

Untuk tim yang melakukan pekerjaan serius tentang kinerja mobile, Petunjuk AppLighter untuk kinerja mobile adalah bacaan yang berguna karena memasukkan keputusan animasi dalam konteks yang lebih besar dari peluncuran aplikasi, rendering, dan perdagangan 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 secara isolasi. Tim yang bekerja dalam stack hybrid menghadapi masalah penggunaan aset yang sama, dan lebih luas Petunjuk Kinerja Animasi untuk Aplikasi Capacitor berlaku juga untuk keputusan Lottie.

File lokal versus pengiriman jarak jauh

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

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

Penyebaran praktis yang baik adalah:

Jenis aset Default yang lebih baik
Animasi interaksi inti Local, yang telah dioptimalkan, tidak terlalu besar
Gerakan promosi yang jarang Pengiriman jarak jauh dengan fallback
Animasi jalur startup Hanya lokal jika benar-benar perlu
Gambaran fitur yang jarang digunakan Pemuatan Secara Permintaan

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

Pengaturan Umum untuk Masalah Lottie

Ketika Lottie gagal, penyebabnya biasanya sederhana. Jalur yang salah. Ukuran yang hilang. Waktu referensi yang salah. JSON yang berat. Cara tercepat untuk memperbaikinya 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 masalah ada pada file atau pengaturan.

Pemutaran video kasar pada perangkat yang lebih tua

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

Coba perbaikan ini:

  • Memperkecil kompleksitas animasi: Minta ekspor yang lebih ringan jika file sumbernya berat.
  • context Jangan bersaing dengan pekerjaan layar awal.
  • Cobalah versi kompresi: Jika file kompresi berperilaku lebih baik, Anda telah menemukan sumber masalah.
  • Hapus beberapa Lottie view sekaligus: Banyak animasi di satu layar bisa terlalu berlebihan.

Hapus beberapa Lottie view sekaligus:

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

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

Referensi null atau play tidak berfungsi useRefJangan membuat komponen animasi yang sama secara tidak perlu. Jika Anda mengalami masalah yang tidak biasa dalam build lokal, membersihkan cache yang usang dapat membantu. Rutin pembersihan cache Yarn sering kali cukup untuk menghapus perilaku aset yang menyesatkan selama pengembangan.

Animasi terlihat salah di berbagai ukuran layar

Tidak biarkan animasi menentukan tata letak. Masukkan animasi ke dalam kontainer dan atur ukurannya 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

Sebanyak 90% laporan “Lottie rusak” akhirnya berakhir menjadi masalah tata letak, masalah aset, atau masalah waktu. Perpustakaan sering kali melakukan apa yang Anda minta.

Jika Anda membutuhkan shortcut debugging akhir, hapus setiap prop yang canggih, render animasi lokal satu di tengah view, 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 harus menunggu ulasan 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 patut dipertimbangkan.

Pembaruan instan untuk aplikasi Capacitor

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

Dukungan manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

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