DEV Community

sandatya widhi
sandatya widhi

Posted on

03. Struktur Folder React Native

πŸ“ Memahami Struktur Folder Expo di React Native


πŸš€ Pendahuluan

Ketika kamu menjalankan perintah berikut:

npx create-expo-app MyApp
Enter fullscreen mode Exit fullscreen mode

Expo akan otomatis membuat sebuah folder proyek bernama MyApp.
Di dalamnya terdapat berbagai folder dan file yang sudah diatur untuk memudahkan pengembangan aplikasi React Native.

Berikut contoh struktur folder yang terbentuk:

MyApp/
β”œβ”€β”€ .expo/
β”œβ”€β”€ .vscode/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (tabs)/
β”‚   β”‚   β”œβ”€β”€ _layout.tsx
β”‚   β”‚   β”œβ”€β”€ explore.tsx
β”‚   β”‚   β”œβ”€β”€ index.tsx
β”‚   β”œβ”€β”€ _layout.tsx
β”‚   β”œβ”€β”€ modal.tsx
β”œβ”€β”€ assets/
β”‚   └── images/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   β”œβ”€β”€ external-link.tsx
β”‚   β”‚   β”œβ”€β”€ haptic-tab.tsx
β”‚   β”‚   β”œβ”€β”€ hello-wave.tsx
β”‚   β”‚   β”œβ”€β”€ parallax-scroll-view.tsx
β”‚   β”‚   β”œβ”€β”€ themed-text.tsx
β”‚   β”‚   β”œβ”€β”€ themed-view.tsx
β”œβ”€β”€ constants/
β”‚   β”œβ”€β”€ theme.ts
β”œβ”€β”€ hooks/
β”‚   β”œβ”€β”€ use-color-scheme.ts
β”‚   β”œβ”€β”€ use-color-scheme.web.ts
β”‚   β”œβ”€β”€ use-theme-color.ts
β”œβ”€β”€ node_modules/
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ reset-project.js
β”œβ”€β”€ .gitignore
β”œβ”€β”€ app.json
Enter fullscreen mode Exit fullscreen mode

🧩 Penjelasan Tiap Folder dan File

1. .expo/

Berisi:

  • Cache proyek
  • Metadata hasil build
  • File konfigurasi sementara (misalnya data login Expo Go)

⚠️ Catatan: Folder ini dibuat otomatis oleh Expo dan tidak perlu diubah secara manual.


2. .vscode/

Menyimpan pengaturan untuk Visual Studio Code, seperti:

  • Format kode otomatis (settings.json)
  • Ekstensi bawaan proyek

Tujuannya agar semua anggota tim memiliki pengaturan editor yang seragam.


3. app/ πŸ“±

Inti aplikasi yang berisi semua halaman (screen) dan komponen utama.

File penting di dalamnya:

  • _layout.tsx β†’ Layout global aplikasi
  • index.tsx β†’ Halaman utama (home screen)
  • modal.tsx β†’ Halaman modal (pop-up)

Subfolder (tabs)/:
Berisi struktur navigasi tab aplikasi:

  • _layout.tsx β†’ Layout khusus tab
  • explore.tsx β†’ Halaman tab β€œExplore”
  • index.tsx β†’ Halaman tab utama

4. assets/images/ πŸ–ΌοΈ

Tempat menyimpan file gambar, ikon, atau media lain.

assets/images/logo.png
assets/images/background.jpg
Enter fullscreen mode Exit fullscreen mode

Contoh import di kode:

import logo from '../assets/images/logo.png';
Enter fullscreen mode Exit fullscreen mode

5. components/ βš›οΈ

Berisi komponen kustom yang digunakan berulang.

Contoh file:

  • hello-wave.tsx β†’ Animasi sapaan
  • haptic-tab.tsx β†’ Tab dengan efek getar
  • themed-text.tsx, themed-view.tsx β†’ Mendukung tema terang/gelap

Subfolder ui/
Biasanya berisi elemen UI kecil seperti tombol atau link.


6. constants/

Berisi nilai tetap (konstanta) yang digunakan di seluruh aplikasi.

// constants/theme.ts
export const Colors = {
  light: "#ffffff",
  dark: "#000000",
};
Enter fullscreen mode Exit fullscreen mode

7. hooks/ πŸ”„

Berisi custom hooks β€” fungsi reusable dengan logika tertentu.

Contoh:

  • use-color-scheme.ts β†’ Mendeteksi mode terang/gelap
  • use-theme-color.ts β†’ Menentukan warna sesuai tema

Contoh penggunaan:

const theme = useThemeColor();
Enter fullscreen mode Exit fullscreen mode

8. node_modules/ πŸ“¦

Tempat semua dependensi npm disimpan.

⚠️ Jangan ubah folder ini secara manual.
Folder dibuat otomatis saat menjalankan npm install.


9. scripts/

Berisi skrip tambahan proyek.

// scripts/reset-project.js
// digunakan untuk menghapus cache dan reset konfigurasi Expo
Enter fullscreen mode Exit fullscreen mode

10. .gitignore

Berisi daftar file dan folder yang tidak disertakan dalam Git.

node_modules/
.vscode/
.expo/
Enter fullscreen mode Exit fullscreen mode

11. app.json βš™οΈ

File konfigurasi utama proyek Expo.

{
  "expo": {
    "name": "MyApp",
    "slug": "myapp",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png"
  }
}
Enter fullscreen mode Exit fullscreen mode

❓ Kenapa Folder (tabs) Menggunakan Tanda Kurung?

Expo (khususnya Expo Router) menggunakan tanda kurung ( ) untuk mengelompokkan routes tanpa memengaruhi URL.

Artinya:

  • Folder (tabs) tidak muncul di URL
  • Hanya berfungsi sebagai pengelompokan (grouping)
app/
β”œβ”€β”€ (tabs)/
β”‚   β”œβ”€β”€ index.tsx
β”‚   β”œβ”€β”€ explore.tsx
β”‚   β”œβ”€β”€ _layout.tsx
β”œβ”€β”€ settings.tsx
Enter fullscreen mode Exit fullscreen mode

Hasil URL:

File URL
index.tsx /
explore.tsx /explore
settings.tsx /settings

πŸ“˜ Jadi, URL tidak akan menjadi /tabs/explore, karena (tabs) hanya untuk grouping.


πŸ”„ Jika Tanpa Tanda Kurung

app/
β”œβ”€β”€ tabs/
β”‚   β”œβ”€β”€ index.tsx
β”‚   β”œβ”€β”€ explore.tsx
Enter fullscreen mode Exit fullscreen mode

Maka URL menjadi:

/tabs
/tabs/explore
Enter fullscreen mode Exit fullscreen mode

πŸ“Š Perbandingan

Folder Efek pada URL Kegunaan
(tabs) Tidak muncul di URL Untuk grouping rute
tabs Muncul di URL Untuk membuat path sebenarnya

Top comments (0)