Section 13/131 menit

13. Ringkasan

13. Ringkasan

swift
@Observable adalah pengganti modern ObservableObject untuk iOS 17+.
Ia memecahkan masalah over-rendering dengan fine-grained dependency tracking per-property,
menghilangkan kebutuhan Combine, dan memangkas boilerplate @Published.

Kunci penggunaan yang benar:
  ┌─────────────────────────────────────────────────────┐
  │  @Observable + @MainActor  → ViewModel standar      │
  │  @State                    → ownership di SwiftUI   │
  │  @Bindable                 → two-way binding        │
  │  @Environment              → shared state cross-view│
  │  @ObservationIgnored       → opt-out dari tracking  │
  │  withObservationTracking   → UIKit / manual use     │
  └─────────────────────────────────────────────────────┘

Gunakan ketika: iOS 17+, SwiftUI, butuh performa rendering optimal.
Jangan gunakan ketika: iOS 16-, heavily Combine, butuh operator reactive.

Decision Tree

swift
Butuh state management?
  
  ├─ iOS 16 ke bawah? ──────────────────────→ ObservableObject + @Published
  
  ├─ iOS 17+, SwiftUI? ─────────────────────→ @Observable + @MainActor 
  
  ├─ UIKit saja? ───────────────────────────→ @Observable + withObservationTracking
  
  ├─ Butuh debounce/throttle/combine? ──────→ @Observable + AsyncSequence/Combine pipeline
  
  └─ Server-side / non-UI? ────────────────→ actor atau simple Observer pattern

Dibuat: 2026-05-09 | Swift 6.0 | Observation Framework | iOS 17+ / macOS 14+