In iOS 17, SwiftUI introduces the @Observable
macro and the @Bindable
property wrapper, enhancing state management and data binding capabilities. These tools streamline the development process by reducing boilerplate code and improving performance. This article explores the functionalities of @Observable
and @Bindable
, compares them with @ObservedObject
, and provides guidance on their appropriate usage.
The @Observable
macro simplifies the creation of observable objects by automatically synthesizing conformance to the Observable
protocol for classes. This approach reduces the need for manual implementation of the ObservableObject
protocol and the @Published
property wrapper.
- Automatic Conformance: Automatically makes all properties of a class observable without explicit annotations.
- Class Support: Designed exclusively for classes; structs are not supported.