Episode ini memandu kalian membuat project React Native pertama dengan npx @react-native-community/cli init, memahami struktur folder, memodifikasi App.tsx, dan menjalankannya di emulator, lalu membandingkan alur kerja Expo managed vs bare.

Environment kalian sudah siap di episode 0, dan arsitektur sudah jelas di episode 2. Sekarang saatnya hal yang paling seru: membuat project React Native pertama. Ini momen di mana teori mulai menjadi kode nyata yang berjalan di emulator.
Episode 3 memandu kalian membuat project dengan npx @react-native-community/cli init, memahami struktur folder yang dihasilkan, memodifikasi App.tsx, lalu menjalankan aplikasi di emulator Android. Terakhir kita bandingkan dengan alur kerja Expo untuk membantu kalian memilih yang paling tepat.
Buka terminal di direktori tempat project akan diletakkan, lalu jalankan:
npx @react-native-community/cli init MyAppPerintah npx @react-native-community/cli init MyApp akan menarik template terbaru, menginstall dependency, dan menyiapkan folder native untuk Android dan iOS. Nama project dipakai sebagai nama aplikasi dan identitas package, jadi pakai nama yang valid untuk kedua platform.
Jika kalian menginginkan template dengan TypeScript dan kemampuan eksplisit lain, flag --pm dan --title bisa membantu. Untuk series ini, template default sudah memakai TypeScript sejak rilis terbaru.
Setelah proses selesai, masuk ke folder project:
cd MyApp
npx react-native doctorPerintah npx react-native doctor mengecek ulang environment dan memastikan semuanya siap untuk menjalankan aplikasi. Perhatikan output untuk melihat apakah ada komponen Android yang masih kurang.
Struktur yang dihasilkan kira-kira seperti berikut:
MyApp/
├── android/ # project Gradle untuk Android
├── ios/ # project Xcode untuk iOS
├── node_modules/ # dependency JavaScript
├── App.tsx # entry point komponen utama
├── index.js # pendaftaran aplikasi ke React Native
├── package.json # manifest dependency dan script
├── tsconfig.json # konfigurasi TypeScript
└── metro.config.js # konfigurasi Metro bundlerandroid/ dan ios/: project native yang dipakai saat build. Kalian jarang mengubahnya di tahap ini, tapi penting tahu letaknya.App.tsx: komponen akar. Semua layar akan bercabang dari sini.index.js: memanggil AppRegistry.registerComponent — pendaftaran aplikasi ke native.package.json: berisi script seperti start, android, dan ios.index.js hanya beberapa baris: ia mengimport App, mendaftarkannya lewat AppRegistry.registerComponent(appName, () => App), dan menghubungkannya ke native. Sementara App.tsx berisi komponen yang akan dirender.
Buka terminal, pastikan emulator Android sudah berjalan, lalu jalankan:
npm startnpm start meluncurkan Metro, bundler yang menggabungkan semua file JavaScript menjadi satu bundle dan melayaninya ke aplikasi. Biarkan Metro tetap berjalan di terminal ini. Buka terminal kedua dan jalankan:
npx react-native run-androidPerintah npx react-native run-android membangun aplikasi native dengan Gradle, menginstallnya ke emulator, dan menghubungkannya ke Metro. Build pertama bisa memakan beberapa menit karena Gradle mengunduh dependency — ini normal. Setelah selesai, aplikasi muncul di emulator dengan layar welcome.
Ubah teks di App.tsx, misalnya ganti judul, lalu simpan. Metro langsung memuat ulang aplikasi tanpa rebuild native — ini namanya Fast Refresh. Momen inilah yang membuat pengembangan React Native terasa sangat cepat.
Expo adalah framework di atas React Native yang menyembunyikan kompleksitas native. Membuat project sama mudahnya:
npx create-expo-app ExpoApp
cd ExpoApp
npx expo startDengan managed workflow, kalian tidak punya folder android/ dan ios/. Build native dilakukan di cloud lewat EAS Build, dan banyak native module (kamera, lokasi, notifikasi) tersedia lewat library Expo tanpa setup manual.
Jika nanti kalian butuh mengubah kode native, jalankan npx expo prebuild untuk menghasilkan folder android/ dan ios/ dari konfigurasi Expo — ini yang disebut bare/prebuild workflow. Setelah itu project berperilaku seperti project CLI biasa.
Pilihan yang masuk akal:
Tip
Tidak ada pilihan yang salah secara mutlak. Banyak tim memulai dengan Expo dan meng-generate project native saat kebutuhan custom muncul. Episode 21 akan membahas posisi Expo SDK sebagai recommended framework.
Jika run-android berhasil tapi aplikasi blank, kemungkinan Metro tidak terhubung. Tekan R dua kali di terminal Metro untuk reload, atau jalankan ulang Metro. Pastikan emulator dan Metro berada di mesin yang sama dan port 8081 tidak diblokir.
Error Gradle biasanya dari versi JDK yang tidak cocok. Pastikan JDK 17 atau 18 terinstall, bukan JDK 21 yang belum didukung semua versi Gradle React Native. Perintah java -version untuk mengeceknya.
Episode 3 adalah tonggak besar: project React Native pertama kalian berjalan di emulator. Kalian sekarang paham struktur folder, peran Metro, entry point App.tsx, dan perbedaan alur kerja CLI vs Expo.
Inti yang harus dibawa pulang:
npx @react-native-community/cli init MyApp membuat project lengkap dengan folder native.android/ dan ios/ adalah kode native; App.tsx adalah komponen akar.npx react-native run-android membangun dan menginstall ke emulator.expo prebuild menghasilkan folder native saat dibutuhkan.Di episode 4 selanjutnya kita akan membahas komponen dasar dan styling: penggunaan View, Text, Image, TextInput, ScrollView, FlatList, dan SectionList, plus StyleSheet.create, layout Flexbox, gap, serta satuan ukuran dp, px, dan persen.