Menguasai cross-platform dengan React Native + Expo: prinsip kerja RN, apa itu New Architecture (Fabric), alasan Expo menjadi cara standar memulai proyek RN di 2026, serta membangun aplikasi Fitku lintas platform dengan ekosistem JavaScript/TypeScript

Setelah menguasai dua native platform di episode 3 dan 4, saatnya strategi yang mendominasi industri 2026: React Native (RN) + Expo. Ide dasarnya brilian dan sederhana — tulis sekali dengan JavaScript/TypeScript, jalankan di Android dan iOS sekaligus. Di web kalian menulis React; di mobile, React Native membawa pola yang sama (komponen, hooks, state) ke layar ponsel.
Mengapa RN penting? Karena bagi kalian yang berasal dari web, ini jalur tercepat masuk ke mobile. Expo menyederhanakan build, device testing, dan update over-the-air — sehingga 2026 adalah era terbaik untuk memulai RN.
RN tidak men-render HTML seperti React di web. Ia memetakan komponen React ke native view (UIView di iOS, View di Android) lewat bridge atau, di arsitektur baru, lewat JSI (JavaScript Interface). Artinya kalian dapat komponen yang berperilaku dan tampil native, tetapi ditulis dalam JS.
import { Text, View, Pressable } from "react-native";
export default function Home() {
return (
<View style={styles.container}>
<Text style={styles.title}>Halo dari Fitku</Text>
<Pressable onPress={() => console.log("mulai workout")}>
<Text>Mulai Workout</Text>
</Pressable>
</View>
);
}Perhatikan: tidak ada <div> atau <button> — semua komponen native (View, Text, Pressable). Styling memakai objek style (StyleSheet) yang mirip CSS tetapi berbasis Yoga layout engine.
RN generasi baru — New Architecture — menggantikan bridge lama dengan arsitektur berbasis JSI dan renderer Fabric:
RN Lama (Bridge) RN Baru (New Architecture)
JS ──serialize──▶ Bridge JS ──JSI──▶ C++ core
◀──async──── ┤ ◀─sync─┘
└─▶ Native └─▶ Fabric (renderer) ─▶ NativeDampak praktisnya: aplikasi lebih responsif, start-up lebih cepat, dan interoperasi native lebih mudah. Proyek baru 2026 sudah memakai New Architecture secara default.
Expo adalah framework + platform di atas RN yang membuat pengembangan jauh lebih mudah:
Bagi proyek produksi kecil-menengah, Expo bahkan menjadi rekomendasi resmi pertama di dokumentasi RN. Kalian tetap bisa me-prebuild untuk mengakses kode native bila perlu.
Mulai proyek dengan template TypeScript:
npx create-expo-app@latest fitku --template blank-typescript
cd fitku
npx expo startSetelah berjalan, tekan a untuk emulator Android atau i untuk iOS simulator, atau scan QR di Expo Go. Sekarang bangun layar beranda Fitku:
import { useState } from "react";
import { Pressable, StyleSheet, Text, View } from "react-native";
export default function HomeScreen() {
const [steps, setSteps] = useState(0);
return (
<View style={styles.container}>
<Text style={styles.title}>Halo, Fitku!</Text>
<View style={styles.card}>
<Text style={styles.label}>Langkah hari ini</Text>
<Text style={styles.count}>{steps}</Text>
</View>
<Pressable
style={({ pressed }) => [styles.button, pressed && styles.buttonPressed]}
onPress={() => setSteps((s) => s + 1)}
>
<Text style={styles.buttonText}>Tambah langkah</Text>
</Pressable>
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, padding: 16, gap: 16 },
title: { fontSize: 28, fontWeight: "bold" },
card: { backgroundColor: "#e0f2fe", padding: 16, borderRadius: 12 },
label: { fontSize: 12, color: "#475569" },
count: { fontSize: 40, fontWeight: "bold", marginTop: 4 },
button: { backgroundColor: "#2563eb", padding: 14, borderRadius: 10 },
buttonPressed: { opacity: 0.8 },
buttonText: { color: "#fff", textAlign: "center", fontWeight: "600" },
});Perhatikan kemiripannya dengan React web — kalian hanya mengganti DOM element dengan komponen RN dan menyesuaikan styling.
Tip
Untuk state global dan data fetching, ekosistem JS memberi kalian pilihan matang: Zustand/Redux (episode 9), React Query/TanStack Query, dan React Navigation (episode 12). Pilih per kebutuhan — RN + Expo adalah alasan banyak tim web masuk mobile tanpa menambah bahasa baru.
FlatList/SectionList untuk daftar panjang, bukan .map().Note
Kalian penasaran ekosistem JavaScript secara umum (React, TypeScript, state management)? Series learn-reactjs, learn-typescript, dan learn-javascript di repo ini adalah komplementer sempurna untuk RN. Lintas-referensi keduanya mempercepat pemahaman kalian.
Pada episode 5 ini, kalian telah menguasai fondasi cross-platform RN:
Di episode 6 selanjutnya kita jelajahi pesaing utama RN: Flutter dengan Dart — memahami widget tree, perbedaan pendekatan rendering (Impeller), dan membangun halaman Fitku versi Flutter. Sampai jumpa!