This release tightens generated equality so SwiftUI redraw suppression remains safe as view state and property shapes become more complex.
Changed
- Breaking:
@Stateproperties are excluded from generated==. This supports non-Equatable state such as@Observablemodels without comparing stale initializer snapshots. - Dynamic-property exclusion follows witness isolation, including when
@Equatable(.extension)is forced on aView. - Breaking: stored properties declared inside
#ifnow require explicit@SkipEquatableinstead of being silently excluded. - Breaking: types that contain function types now require explicit
@SkipEquatable; top-level callbacks remain automatically excluded. - A new warning identifies comparisons where every input is excluded and generated
==is constanttrue. EquatableBodyViewnow permits owned@StateObjectstate and diagnoses parent-swappable@Bindablesources.
Added
- Mounted
NSHostingViewtests verify that equal inputs suppressequatableBodyevaluation while parent invalidations and changed inputs still propagate.
Requirements
Swift tools 6.3 (Xcode 26.4+), iOS 26+, macOS 26+, swift-syntax 603.0.2.
See the full changelog.