Skip to content

0.2.0

Latest

Choose a tag to compare

@9uiLe 9uiLe released this 14 Jul 16:37
fc4e462

This release tightens generated equality so SwiftUI redraw suppression remains safe as view state and property shapes become more complex.

Changed

  • Breaking: @State properties are excluded from generated ==. This supports non-Equatable state such as @Observable models without comparing stale initializer snapshots.
  • Dynamic-property exclusion follows witness isolation, including when @Equatable(.extension) is forced on a View.
  • Breaking: stored properties declared inside #if now require explicit @SkipEquatable instead 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 constant true.
  • EquatableBodyView now permits owned @StateObject state and diagnoses parent-swappable @Bindable sources.

Added

  • Mounted NSHostingView tests verify that equal inputs suppress equatableBody evaluation 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.