Apple Observation framework for Swift. Use when modeling observable state with the `@Observable` macro, tracking changes with `withObservationTracking`, integrating with SwiftUI, or working with ObservationRegistrar and Observations async sequences.
Install
npx skillscat add nonameplum/agent-skills/swift-observation Install via the SkillsCat registry.
About this skill
The swift-observation skill provides tools for tracking changes in Swift models using the `@Observable` macro and `withObservationTracking`, enabling integration with SwiftUI and async change streams via `Observations`. It solves the problem of efficiently managing observable state and dependencies in reactive applications. Use it when building SwiftUI views that react to model changes or when implementing custom observation logic for non-SwiftUI components.
SKILL.md
Observation
What to open
- Use
swift-observation/observation.mdfor full API details and examples. - Search within it for
@Observable,withObservationTracking,ObservationRegistrar,Observations, andObservationIgnored. - Use
swift-observation/observations_pre_iOS_26_backport.mdfor availability notes and backport discussion. - Use
swift-observation/Observation/source files to inspect theObservationsimplementation and any supporting runtime pieces when evaluating backport feasibility.
Workflow
- Prefer
@Observableto make models observable; do not conform toObservablemanually. - Read properties inside
withObservationTrackingto define the dependency set. - Use
ObservationIgnoredfor properties that should not trigger updates. - Use
Observationswhen you need async change streams.
SwiftUI usage
- For SwiftUI, treat
@Observablemodels as the source of truth and let the view read the properties it needs. - Use
withObservationTrackingfor non-SwiftUI rendering or custom observers.
Availability and backport notes
Observationsis available on iOS 26+; plan for fallbacks on earlier OSes.- For pre-iOS 26 support, consider community backports or vendor forks; see
swift-observation/observations_pre_iOS_26_backport.mdfor options and caveats.