Lower iOS deployment target to 16.0 via swift-perception#380
Merged
futurepaul merged 2 commits intomasterfrom Mar 2, 2026
Merged
Lower iOS deployment target to 16.0 via swift-perception#380futurepaul merged 2 commits intomasterfrom
futurepaul merged 2 commits intomasterfrom
Conversation
Use Point-Free's swift-perception library to backport @observable semantics to iOS 16. Migrate 4 @observable classes to @perceptible, replace 16 .onChange call sites with iOS 16-compatible helpers, and add availability guards for iOS 17+ APIs (AVAudioApplication, UnevenRoundedRectangle, onKeyPress, scrollBounceBehavior). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Explains @perceptible, WithPerceptionTracking, onChangeCompat, and other helpers so contributors know the patterns for new code. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@Observableclasses to@Perceptible(AppManager, VoiceRecorder, VoiceMessagePlayer, VideoCallPipeline).onChangecall sites with iOS 16-compatible helpers#availableguards for iOS 17+ APIs:AVAudioApplication,UnevenRoundedRectangle,onKeyPress,scrollBounceBehavior-skipMacroValidationto all xcodebuild invocations (required for Swift macro packages)Files changed
New helpers:
OnChangeCompat.swift— three.onChangeoverloads with iOS 16 fallbacksUnevenRoundedRectangleCompat.swift— per-corner-radius shape for iOS 16ReturnKeyPressCompat.swift—onKeyPressguard for iOS 17+ScrollBounceCompat.swift—scrollBounceBehaviorguard for iOS 16.4+Config:
project.yml— deployment target 17→16, Perception package dependencyjustfile—IOS_MIN17→16,-skipMacroValidation,-destinationfor macro compattools/run-ios,tools/ui-e2e-local,tools/ui-e2e-public—-skipMacroValidationTest plan
just ios-build-simcompiles with zero Swift errors (linker requires fresh Rust build).onChangebehavior (nav stack sync, toast, call state transitions)🤖 Generated with Claude Code