Lewati ke konten utama

State Management

Panduan pemilihan dan penggunaan state management per platform.

Rekomendasi per Platform​

PlatformLocal StateGlobal StateServer State
Androidremember / mutableStateOfStateFlow di ViewModel—
iOS@State@Observable ViewModel—
FluttersetStateBloc/Cubit atau Riverpod—
RN CLIuseStateZustandTanStack Query
RN ExpouseStateZustandTanStack Query

Prinsip​

  1. Single Source of Truth — Setiap data hanya memiliki satu sumber kebenaran.
  2. Unidirectional Data Flow — Data mengalir satu arah: Action → State → UI.
  3. Immutable State — State tidak boleh dimutasi langsung, harus membuat state baru.
  4. Minimal Global State — Hanya state yang benar-benar perlu dibagikan antar screen yang menjadi global state.

Kapan Menggunakan Apa?​

Tipe StateContohSolusi
UI StateExpanded/collapsed, form inputLocal state (useState, @State, remember)
Screen StateLoading/success/errorViewModel / Cubit
App StateUser session, themeGlobal store (Zustand, Riverpod)
Server StateAPI data, cacheTanStack Query / manual cache
tip

Untuk React Native, gunakan TanStack Query untuk server state (API data) dan Zustand untuk client state (app state). Jangan simpan API response di Zustand — biarkan TanStack Query yang mengelola cache.