Skip to content

fix(build): raise macOS and iOS deployment targets for Xcode 27 - #6914

Merged
FeodorFitsner merged 10 commits into
flet-1.1.0from
fix/xcode-27-deployment-targets
Oct 9, 2026
Merged

FeodorFitsner merged 10 commits into
flet-1.1.0from
fix/xcode-27-deployment-targets

Conversation

@ndonkoHenri

@ndonkoHenri ndonkoHenri commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Targets flet-1.1.0 and 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 of main and is already on main.

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 build template and the client still pinned macOS 11.0 and iOS 13.0, so flet build, flet debug and flet test fail for macOS and iOS on Xcode 27:

The macOS deployment target 'MACOSX_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 27.0.x. (in target 'Runner' from project 'Runner')

The same error also hits Flutter Assemble, Pods-Runner and the FlutterMacOS pod (10.15). On iOS it hits Runner, Pods-Runner and the Flutter pod (13.0).

Raising the Podfile platform line and the pbxproj values is not enough on the pinned Flutter 3.44.8. Its podhelper.rb generates 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

  • Build template and client, macOS: platform :osx, '12.0' and MACOSX_DEPLOYMENT_TARGET = 12.0.
  • Build template and client, iOS: platform :ios, '15.0' (a comment in the client Podfile) and IPHONEOS_DEPLOYMENT_TARGET = 15.0.
  • Podfile post_install in 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+.
  • Template ios/Flutter/AppFrameworkInfo.plist: remove the stale MinimumOSVersion (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: update PODFILE CHECKSUM for the edited Podfile.

Swift Package Manager plugins need no change. Xcode 27 raises package minimums below the floor automatically.

Compatibility: apps built with flet build and 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, and installation.md already 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 macos and flet build ios-simulator of the issue's hello app fail on main with the errors above, and succeed on this branch. The macOS app launches, and the iOS app runs in the simulator. The binaries report minos 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.
  • With flet-video added (its media_kit pods use CocoaPods), macOS and iOS simulator builds succeed.
  • With Swift Package Manager turned off (FLUTTER_SWIFT_PACKAGE_MANAGER=false and --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, including serious_python_darwin (podspec macOS 11.0 / iOS 13.0) and third-party pods such as DKImagePickerController (iOS 9.0).
  • A 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 install re-runs and all Pods targets resolve to 12.0.
  • In client/: flutter build macos (release) and flutter build ios --simulator succeed without FLUTTER_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:

  • Fix macOS and iOS builds, debugging, and testing with Xcode 27 by raising deployment targets and ensuring all CocoaPods targets inherit supported minimums.

Enhancements:

  • Raise minimum supported versions to macOS 12 and iOS 15 for the Flet build templates and macOS client.
  • Remove the obsolete iOS template minimum-version metadata and update generated project configuration accordingly.

Documentation:

  • Document the new macOS 12 and iOS 15 requirements, custom-template migration steps, affected users, and compatibility options.

Chores:

  • Correct pricing page primary call-to-action styling specificity.

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.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Deploying flet-website-v2 with  Cloudflare Pages  Cloudflare Pages

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

View logs

@ndonkoHenri
ndonkoHenri requested review from FeodorFitsner and a balanced review from Copilot October 4, 2026 13:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@ndonkoHenri
ndonkoHenri added this pull request to stack #6917 October 4, 2026 22:23
@FeodorFitsner FeodorFitsner added this to the 1.1.0 milestone Oct 7, 2026
…ployment-targets

# Conflicts:
#	CHANGELOG.md
#	website/docs/updates/release-notes.md
@ndonkoHenri
ndonkoHenri removed this pull request from stack #6917 October 8, 2026 22:00
@ndonkoHenri
ndonkoHenri changed the base branch from main to flet-1.1.0 October 8, 2026 22:01
@ndonkoHenri
ndonkoHenri added this pull request to stack #6934 October 8, 2026 22:01
@FeodorFitsner
FeodorFitsner merged commit 1eceaa3 into flet-1.1.0 Oct 9, 2026
122 of 132 checks passed
@FeodorFitsner
FeodorFitsner deleted the fix/xcode-27-deployment-targets branch October 9, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: macOS build fails on Xcode 27 — generated project uses outdated MACOSX_DEPLOYMENT_TARGET (11.0/10.15, Xcode 27 requires 12.0+)

3 participants