Repository navigation
fix(build): raise macOS and iOS deployment targets for Xcode 27 - #6914
Merged
Merged
Conversation
Xcode 27 fails builds whose macOS deployment target is below 12.0. The template and client pinned 11.0, and Flutter 3.44.8 generates the FlutterMacOS pod at 10.15. Raise the Podfile platform and the Xcode project to 12.0, and let pods below 12.0 inherit the platform, as Flutter 3.47's podhelper does.
Xcode 27 fails builds whose iOS deployment target is below 15.0. The template and client pinned 13.0, and Flutter 3.44.8 generates the Flutter pod at 13.0. Raise the Podfile platform and the Xcode project to 15.0, let pods below 15.0 inherit the platform, and drop the stale MinimumOSVersion that Flutter strips from AppFrameworkInfo.plist anyway.
Deploying flet-website-v2 with
|
| Latest commit: |
9de33b5
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://afb9b9a8.flet-website-v2.pages.dev |
| Branch Preview URL: | https://fix-xcode-27-deployment-targ.flet-website-v2.pages.dev |
ndonkoHenri
requested review from
FeodorFitsner
and
a balanced review from Copilot
October 4, 2026 13:02
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The deployment settings and CocoaPods workaround are consistent across templates and clients, with no unresolved blocking findings.
Review effort: Balanced
Findings: None
What changed in this PR
Fixes #6874 by aligning Flet’s Apple build templates and clients with Xcode 27’s minimum deployment targets.
Changes:
- Raise minimum targets to macOS 12 and iOS 15.
- Make older CocoaPods targets inherit the supported minimums.
- Remove stale iOS metadata and document compatibility changes.
| File | Description |
|---|---|
sdk/python/templates/build/{{cookiecutter.out_dir}}/macos/Runner.xcodeproj/project.pbxproj |
Set macOS target to 12.0. |
sdk/python/templates/build/{{cookiecutter.out_dir}}/macos/Podfile |
Raise platform and normalize older pod targets. |
sdk/python/templates/build/{{cookiecutter.out_dir}}/ios/Runner.xcodeproj/project.pbxproj |
Set iOS target to 15.0. |
sdk/python/templates/build/{{cookiecutter.out_dir}}/ios/Podfile |
Raise platform and normalize older pod targets. |
sdk/python/templates/build/{{cookiecutter.out_dir}}/ios/Flutter/AppFrameworkInfo.plist |
Remove stale minimum OS metadata. |
client/macos/Runner.xcodeproj/project.pbxproj |
Set client macOS target to 12.0. |
client/macos/Podfile |
Raise platform and normalize older pod targets. |
client/ios/Runner.xcodeproj/project.pbxproj |
Set client iOS target to 15.0. |
client/ios/Podfile.lock |
Refresh Podfile checksum. |
client/ios/Podfile |
Normalize older pod targets and update platform comment. |
CHANGELOG.md |
Document the fix and compatibility requirements. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Raising the deployment targets is a breaking change under the compatibility policy, so add a 1.0.4 breaking-change guide and register it in the index, the sidebar and the release notes. The release notes also gain the missing 1.0.1-1.0.3 entries. The macOS and iOS publish pages now state the minimum OS version, and the changelog entry links the guide.
Raising the minimum macOS and iOS versions drops support for macOS 11 and iOS 13-14, so it ships in the 1.1.0 minor release instead of the 1.0.4 patch, together with the Flutter 3.47 bump, whose engine requires the same minimums. Move the changelog entry to 1.1.0 and the breaking-change guide from v1-0-4 to v1-1-0, and update the breaking-changes index, the sidebar and the release notes. Flet 1.0.4 becomes the last release for macOS 11 and iOS 13-14.
…ployment-targets # Conflicts: # CHANGELOG.md # website/docs/updates/release-notes.md
ndonkoHenri
removed this pull request from stack #6917
October 8, 2026 22:00
ndonkoHenri
added this pull request to stack #6934
October 8, 2026 22:01
FeodorFitsner
approved these changes
Oct 9, 2026
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.
Targets
flet-1.1.0and ships in Flet 1.1.0; #6916 and #6931 are stacked on it. The diff also carries the website fix from #6929 (website/src/pages/pricing.module.css), which came in from an earlier merge ofmainand is already onmain.Fixes #6874
Problem
Xcode 27 turns a deployment target below its supported range into a build error (Xcode 16 and 26 only warned). The range is macOS 12.0–27.0 and iOS 15.0–27.0. The
flet buildtemplate and the client still pinned macOS 11.0 and iOS 13.0, soflet build,flet debugandflet testfail for macOS and iOS on Xcode 27:The same error also hits
Flutter Assemble,Pods-Runnerand theFlutterMacOSpod (10.15). On iOS it hitsRunner,Pods-Runnerand theFlutterpod (13.0).Raising the Podfile
platformline and the pbxproj values is not enough on the pinned Flutter 3.44.8. Itspodhelper.rbgenerates the engine pods at macOS 10.15 / iOS 13.0. It also lets pods inherit the app's target only when they are below 10.15 / 13 and depend on Flutter, so the engine pods keep their old values. Flutter 3.47 fixes this upstream (flutter/flutter#188187, flutter/flutter#188520, flutter/flutter#190852): it deletes the deployment target of every pod below 12 / 15 so the pod inherits the Podfile platform.Changes
platform :osx, '12.0'andMACOSX_DEPLOYMENT_TARGET = 12.0.platform :ios, '15.0'(a comment in the client Podfile) andIPHONEOS_DEPLOYMENT_TARGET = 15.0.post_installin all four Podfiles: the same delete-below-the-floor step as Flutter 3.47's podhelper. It is a no-op once Flet moves to Flutter 3.47+.ios/Flutter/AppFrameworkInfo.plist: remove the staleMinimumOSVersion(11.0). Flutter's migrator already strips it on every build, and neither Flutter's template nor the client has it.client/ios/Podfile.lock: updatePODFILE CHECKSUMfor the edited Podfile.Swift Package Manager plugins need no change. Xcode 27 raises package minimums below the floor automatically.
Compatibility: apps built with
flet buildand the macOS desktop client now require macOS 12 or later, and iOS apps require iOS 15 or later. These are the same minimums as Flutter 3.47, andinstallation.mdalready says macOS 12+. Building with older Xcode versions is unaffected, because 12.0 / 15.0 is inside their supported range.Testing
On macOS 27 / Xcode 27.0 (27A266a) / CocoaPods 1.17.0 / Flutter 3.44.8:
flet build macosandflet build ios-simulatorof the issue's hello app fail onmainwith the errors above, and succeed on this branch. The macOS app launches, and the iOS app runs in the simulator. The binaries reportminos 12.0/15.0, and every Pods target resolves to 12.0 / 15.0.flutter build ios --release --no-codesign(device) of the generated project succeeds.flet-videoadded (its media_kit pods use CocoaPods), macOS and iOS simulator builds succeed.FLUTTER_SWIFT_PACKAGE_MANAGER=falseand--no-swift-package-manager), macOS and iOS simulator builds succeed. In that mode every plugin goes through CocoaPods: 17 pods on macOS and 28 on iOS, includingserious_python_darwin(podspec macOS 11.0 / iOS 13.0) and third-party pods such as DKImagePickerController (iOS 9.0).build/directory left by a failed build with the old template builds once the template re-renders, as it does on a Flet upgrade:pod installre-runs and all Pods targets resolve to 12.0.client/:flutter build macos(release) andflutter build ios --simulatorsucceed withoutFLUTTER_XCODE_*overrides.CI runs on
macos-26(Xcode 26.6), so it covers the older Xcode, not Xcode 27.Summary by Sourcery
Update Apple platform deployment targets and documentation to support Xcode 27 builds.
Bug Fixes:
Enhancements:
Documentation:
Chores: