Post-1.0. Not for the 1.0 launch. From the WWDC 2026 review — see docs/wwdc-2026-macos-27-opportunities.md (PR #911), opportunity #4.
Why
WWDC26: AppKit now automatically tracks @Observable property reads in draw, layout, updateConstraints, updateLayer (and NSViewController equivalents) and invalidates automatically. Back-deployable to macOS 15 / iOS 18, on by default when building with the 2026 SDKs — one of the few announcements adoptable without a deployment-target bump.
KeyPath's hybrid architecture (MainWindowController, overlay windows + SwiftUI views over KanataViewModel) likely carries manual sync plumbing this makes obsolete.
Plan
- Audit the AppKit layer (
Sources/KeyPathAppKit/UI/) for hand-rolled notification/KVO bridges between view models and AppKit views/windows.
- Replace with direct
@Observable reads in draw/layout paths where the automatic tracking applies.
- Requires building with Xcode 27 (see the toolchain upgrade issue).
https://claude.ai/code/session_01Nsiqm39oCwHkbrHytefnGM
Post-1.0. Not for the 1.0 launch. From the WWDC 2026 review — see
docs/wwdc-2026-macos-27-opportunities.md(PR #911), opportunity #4.Why
WWDC26: AppKit now automatically tracks
@Observableproperty reads indraw,layout,updateConstraints,updateLayer(and NSViewController equivalents) and invalidates automatically. Back-deployable to macOS 15 / iOS 18, on by default when building with the 2026 SDKs — one of the few announcements adoptable without a deployment-target bump.KeyPath's hybrid architecture (
MainWindowController, overlay windows + SwiftUI views overKanataViewModel) likely carries manual sync plumbing this makes obsolete.Plan
Sources/KeyPathAppKit/UI/) for hand-rolled notification/KVO bridges between view models and AppKit views/windows.@Observablereads in draw/layout paths where the automatic tracking applies.https://claude.ai/code/session_01Nsiqm39oCwHkbrHytefnGM