Commit b019b95
authored
chore: raise minimum supported platform, Swift, and Xcode versions (#4271)
* chore: raise minimum supported platform, Swift, and Xcode versions
Apple has required Xcode 26 and the 26 SDKs for App Store Connect uploads
since April 28, 2026. Per the support policy in README.md, Amplify Swift
tracks the Swift version shipped with the minimum Xcode allowed for App
Store Connect uploads.
Platform floors now match Apple's published Xcode 26 support matrix, and
the Swift toolchain floor matches AWS SDK for Swift:
- iOS 13 -> 15
- tvOS 13 -> 15
- macOS 12 (unchanged)
- watchOS 9 (unchanged, already above Apple's floor of 8)
- visionOS: declared in Package.swift for the first time, promoted to GA
- swift-tools-version 5.9 -> 6.0
- Minimum Xcode 16.0 -> 26.0
Adopting the Swift 6 language mode is deliberately out of scope. Raising
swift-tools-version to 6.0 would otherwise flip the default language mode
to Swift 6, so `swiftLanguageModes: [.v5]` pins the existing behavior and
keeps this change behavior-neutral. The strict-concurrency migration is
tracked separately.
CI:
- Runners moved from macos-15 to macos-26
- Latest Xcode 26.3 -> 26.5; minimum 16.0.0 -> 26.0.1
- Removed the Xcode 16 legs and the duplicate hardcoded 16.4.0 pins
- Simulator devices updated to those present on macos-26 (iPhone 17 Pro
Max, Apple Watch Series 11); minimum-Xcode legs use the 26.2 runtime
because the image ships 26.0 SDKs but installs no 26.0 runtime
- visionOS added to the minimum-supported-version build matrix, which
previously never exercised the platform the docs call supported
- Added an advisory, non-blocking nightly build against the Xcode 27
preview image for early warning on the next Xcode release
Docs: corrected the stale Xcode 13.4 requirement in CONTRIBUTING.md.
Three test files were reformatted because raising swiftformat's
--swiftversion to 6.0 activates the preferCountWhere rule.
* fix(predictions): exclude CoreML predictions plugin from tvOS explicitly
The tvOS build failed with "'SFSpeechRecognitionResult' is unavailable in
tvOS". SFSpeechRecognitionResult is marked API_UNAVAILABLE(tvos), and the
CoreML predictions plugin was relying on `#if canImport(Speech)` to compile
itself out on tvOS.
As of the Xcode 26 SDKs, the tvOS Speech framework ships a module
(module.modulemap and Speech.swiftmodule), so canImport(Speech) now
succeeds on tvOS while the type itself remains unavailable. The guard
silently stopped excluding the platform.
Verified this is an SDK change and not a consequence of raising the tvOS
deployment floor: the same file fails to compile against the Xcode 26 tvOS
SDK at both tvos13.0 and tvos15.0.
Adding `&& !os(tvOS)` restores the pre-Xcode-26 behavior. Applied to every
file in the CoreML plugin rather than only the Speech types, because the
plugin's configure/reset/client-behavior files reference those types and
were previously compiled out as a unit.
Verified by building CoreMLPredictionsPlugin and AWSPredictionsPlugin for
arm64-apple-tvos15.0-simulator, and confirming macOS still compiles
CoreMLPredictionService so the plugin stays active where Speech is
genuinely available.
* chore: raise host app iOS deployment targets to match the new floor
Integration tests failed to build with:
compiling for iOS 14.0, but module 'Amplify' has a minimum deployment
target of iOS 15.0
Raising the package floor to iOS 15 left four Xcode projects behind, so they
still tried to link an Amplify built for a newer target than their own:
APIHostApp 13.0 -> 15.0
DataStoreHostApp 13.0 -> 15.0
PredictionsHostApp 14.0 -> 15.0
canaries/example 14.4 -> 15.0
Checked the other platforms for the same gap and found none: watchOS host
apps are at 9.0/9.4/10.0 against a floor of 9, tvOS is at 16.4 against 15,
macOS is at 14.6/15.0 against 12, and StorageHostApp's Base.xcconfig was
already 15.0/12.0.1 parent c2814bc commit b019b95
40 files changed
Lines changed: 130 additions & 138 deletions
File tree
- .github
- composite_actions
- get_platform_parameters
- install_simulators_if_needed
- run_xcodebuild
- workflows
- AmplifyPlugins
- API/Tests/APIHostApp/APIHostApp.xcodeproj
- DataStore/Tests
- AWSDataStorePluginTests
- DataStoreHostApp/DataStoreHostApp.xcodeproj
- Predictions
- AWSPredictionsPlugin
- Service/CoreML
- CoreMLPredictionsPlugin
- Dependency
- Tests
- CoreMLPredictionsPluginUnitTests
- Mocks
- PredictionsHostApp/PredictionsHostApp.xcodeproj
- Storage/Tests/StorageHostApp/AWSS3StoragePluginIntegrationTests
- canaries/example/MyAmplifyApp.xcodeproj
Lines changed: 25 additions & 36 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
45 | | - | |
| 44 | + | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
69 | 74 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
77 | 78 | | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
| 79 | + | |
| 80 | + | |
84 | 81 | | |
85 | 82 | | |
86 | | - | |
| 83 | + | |
87 | 84 | | |
88 | | - | |
| 85 | + | |
89 | 86 | | |
90 | | - | |
| 87 | + | |
91 | 88 | | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | 89 | | |
97 | 90 | | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
105 | 94 | | |
106 | | - | |
107 | | - | |
| 95 | + | |
| 96 | + | |
108 | 97 | | |
109 | 98 | | |
110 | | - | |
| 99 | + | |
111 | 100 | | |
112 | | - | |
| 101 | + | |
113 | 102 | | |
114 | | - | |
| 103 | + | |
115 | 104 | | |
116 | | - | |
| 105 | + | |
117 | 106 | | |
118 | 107 | | |
119 | 108 | | |
120 | 109 | | |
121 | 110 | | |
122 | | - | |
| 111 | + | |
123 | 112 | | |
124 | 113 | | |
125 | 114 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
21 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
22 | 28 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
| 73 | + | |
74 | 74 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
0 commit comments