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+