Skip to content

fix(v3): update macOS minimum deployment target to 12.0 - #5223

Merged
leaanthony merged 2 commits into
masterfrom
fix/5161-macos-min-version-12
May 31, 2026
Merged

leaanthony merged 2 commits into
masterfrom
fix/5161-macos-min-version-12

Conversation

@leaanthony

@leaanthony leaanthony commented Apr 23, 2026 •

Copy link
Copy Markdown
Member

Summary

Updates the macOS minimum deployment target from 10.15 (Catalina) to 12.0 (Monterey) across all build templates and examples.

Go 1.25+ embeds LC_BUILD_VERSION with minos 12.0 into Mach-O binaries, making them physically unable to run on macOS < 12. The old Info.plist declared 10.15 as the minimum, causing macOS to allow the launch but fail silently at the kernel level with no error dialog. Setting LSMinimumSystemVersion to 12.0 ensures macOS displays a clear "requires macOS 12 or later" message on unsupported systems.

Changes

  • v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl — 10.15.0 → 12.0.0
  • v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl — 10.15.0 → 12.0.0
  • v3/internal/commands/build_assets/darwin/Taskfile.yml — CGO_CFLAGS, CGO_LDFLAGS, MACOSX_DEPLOYMENT_TARGET → 12.0
  • All v3/examples/*/build/darwin/ — same updates

Test

  • Added TestMacOSMinimumVersion that generates build assets and verifies LSMinimumSystemVersion in both Info.plist and Info.dev.plist, and the deployment target in the darwin Taskfile.yml.

Fixes #5161

Summary by CodeRabbit

  • Chores
    • Updated minimum macOS system version requirement from 10.15.0 to 12.0.0 across build configurations and examples. The application now requires macOS 12.0 or later to run.

Review Change Stack

@coderabbitai

coderabbitai Bot commented Apr 23, 2026 •

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f9710cb2-7134-4fd9-b961-8ed3cc35150c

📥 Commits

Reviewing files that changed from the base of the PR and between 6c09bff and c311755.

📒 Files selected for processing (26)
  • v3/examples/android/build/darwin/Info.dev.plist
  • v3/examples/android/build/darwin/Info.plist
  • v3/examples/android/build/darwin/Taskfile.yml
  • v3/examples/badge-custom/build/darwin/Info.dev.plist
  • v3/examples/badge-custom/build/darwin/Info.plist
  • v3/examples/badge-custom/build/darwin/Taskfile.yml
  • v3/examples/badge/build/darwin/Info.dev.plist
  • v3/examples/badge/build/darwin/Info.plist
  • v3/examples/badge/build/darwin/Taskfile.yml
  • v3/examples/custom-protocol-example/build/darwin/Info.dev.plist
  • v3/examples/custom-protocol-example/build/darwin/Info.plist
  • v3/examples/custom-protocol-example/build/darwin/Taskfile.yml
  • v3/examples/dock/build/darwin/Info.dev.plist
  • v3/examples/dock/build/darwin/Info.plist
  • v3/examples/dock/build/darwin/Taskfile.yml
  • v3/examples/file-association/build/Taskfile.darwin.yml
  • v3/examples/ios/build/darwin/Info.dev.plist
  • v3/examples/ios/build/darwin/Info.plist
  • v3/examples/ios/build/darwin/Taskfile.yml
  • v3/examples/notifications/build/darwin/Info.dev.plist
  • v3/examples/notifications/build/darwin/Info.plist
  • v3/examples/notifications/build/darwin/Taskfile.yml
  • v3/internal/commands/build-assets_test.go
  • v3/internal/commands/build_assets/darwin/Taskfile.yml
  • v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl
  • v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl

Walkthrough

This PR updates the macOS minimum system version requirement from 10.15 to 12.0 across all build templates, internal toolchain configuration, example projects, and validation tests. This aligns with Go 1.25+ which embeds LC_BUILD_VERSION with minos 12.0, ensuring the declared minimum version matches the binary's actual requirements.

Changes

macOS minimum version 10.15 → 12.0

Layer / File(s) Summary
Core build templates and internal toolchain
v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl, v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl, v3/internal/commands/build_assets/darwin/Taskfile.yml
Info.plist and Info.dev.plist templates update LSMinimumSystemVersion from 10.15.0 to 12.0.0; internal build:native Taskfile updates CGO_CFLAGS, CGO_LDFLAGS, and MACOSX_DEPLOYMENT_TARGET from 10.15 to 12.0.
Example projects Info.plist files
v3/examples/{android,badge,badge-custom,custom-protocol-example,dock,ios,notifications}/build/darwin/Info*.plist
Both Info.plist and Info.dev.plist in eight example applications update LSMinimumSystemVersion from 10.15.0 to 12.0.0.
Example projects Taskfile build configuration
v3/examples/{android,badge,badge-custom,custom-protocol-example,dock,ios,notifications}/build/darwin/Taskfile.yml, v3/examples/file-association/build/Taskfile.darwin.yml
Eight example Taskfiles update CGO_CFLAGS, CGO_LDFLAGS, and MACOSX_DEPLOYMENT_TARGET from 10.15 to 12.0 to align native compilation with the new minimum macOS version.
Test coverage for macOS minimum version
v3/internal/commands/build-assets_test.go
Adds strings import and new TestMacOSMinimumVersion test that generates build assets and validates both Info.plist and Info.dev.plist contain LSMinimumSystemVersion=12.0.0 and Darwin Taskfile.yml contains expected deployment target strings; includes minor formatting updates to TestCFBundleIconNameDetection.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • wailsapp/wails#5233: Both PRs update the macOS minimum deployment/version from 10.15 → 12.0 by changing the same Darwin Info.plist/Info.dev.plist templates and associated Taskfile build deployment flags.
  • wailsapp/wails#3981: Updates the macOS LSMinimumSystemVersion value in related Info.plist template files, representing a similar version bump to system requirements.

Suggested labels

MacOS, v3, go, Bug

Suggested reviewers

  • atterpac

Poem

🐰 From ten-point-fifteen we climb the hill,
To twelve-point-zero, as Go desires,
No more the phantom flash and silent spill,
Now macOS shows the truth our app requires!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'fix(v3): update macOS minimum deployment target to 12.0' clearly and specifically summarizes the main change in the PR.
Description check ✅ Passed The description provides a clear summary of changes, rationale (Go 1.25+ LC_BUILD_VERSION mismatch), specific file changes, and testing approach with TestMacOSMinimumVersion.
Linked Issues check ✅ Passed All coding requirements from issue #5161 are met: LSMinimumSystemVersion updated to 12.0, CGO_CFLAGS/CGO_LDFLAGS/MACOSX_DEPLOYMENT_TARGET set to 12.0, and tests verify the changes across Info.plist and Taskfile.yml.
Out of Scope Changes check ✅ Passed All changes are directly scoped to updating macOS minimum deployment target from 10.15 to 12.0; no unrelated modifications were introduced.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/5161-macos-min-version-12
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch fix/5161-macos-min-version-12

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

level=error msg="[linters_context] typechecking error: pattern ./...: directory prefix . does not contain main module or its selected dependencies"


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@leaanthony
leaanthony changed the base branch from v3-alpha to master April 29, 2026 13:07
@leaanthony

Copy link
Copy Markdown
Member Author

🤖 PR Triage Review

✅ Accepted

Updates macOS minimum deployment target to 12.0 (v3). Modernizes platform support.

Platform: macOS (v3)

Next Steps: Dispatching for Mac testing.


Reviewed by Wails PR Reviewer Bot

@leaanthony
leaanthony marked this pull request as ready for review May 17, 2026 02:17
Copilot AI review requested due to automatic review settings May 17, 2026 02:17

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.

Pull request overview

Updates the macOS minimum deployment target from 10.15 to 12.0 across v3 build templates and example apps, aligning with Go 1.25's LC_BUILD_VERSION minos 12.0 so macOS shows a clear "requires macOS 12 or later" message instead of silently failing.

Changes:

  • Bumped LSMinimumSystemVersion to 12.0.0 in Info.plist/Info.dev.plist templates and example apps.
  • Bumped CGO_CFLAGS/CGO_LDFLAGS/MACOSX_DEPLOYMENT_TARGET to 12.0 in darwin Taskfile.yml template and example apps.
  • Added TestMacOSMinimumVersion test verifying the new values in generated assets.

Reviewed changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated no comments.

Show a summary per file
File Description
v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl Bump LSMinimumSystemVersion to 12.0.0
v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl Bump LSMinimumSystemVersion to 12.0.0
v3/internal/commands/build_assets/darwin/Taskfile.yml Bump macOS deployment target flags to 12.0
v3/internal/commands/build-assets_test.go Add test for min macOS version; tidy struct alignment
v3/examples/*/build/darwin/Info.plist, Info.dev.plist Bump LSMinimumSystemVersion in examples
v3/examples/*/build/darwin/Taskfile.yml, file-association/build/Taskfile.darwin.yml Bump macOS deployment target flags in examples

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Follow-up to #5233, which updated the build-asset templates and
darwin Taskfile but not the per-example build/darwin/ files.

Updates LSMinimumSystemVersion in Info.plist and Info.dev.plist,
and mmacosx-version-min / MACOSX_DEPLOYMENT_TARGET in each
example's darwin Taskfile.yml across 22 example projects so they
match the new project default.

Refs #5161
@leaanthony
leaanthony force-pushed the fix/5161-macos-min-version-12 branch from c311755 to 6af0c80 Compare May 17, 2026 02:24
@leaanthony leaanthony added this to the v3.0.0-beta.1 milestone May 20, 2026
@leaanthony

Copy link
Copy Markdown
Member Author

Self-review note: v3/examples/single-instance-url-scheme/build/darwin/ was missed — Info.plist, Info.dev.plist, and Taskfile.yml in that example still declare 10.15.0. All other v3 examples were updated correctly.

@leaanthony

Copy link
Copy Markdown
Member Author

Thanks for the overview. No actionable issues identified — the change is straightforward (10.15 → 12.0 minimum deployment target across build templates and example configs). Dropping Catalina/Big Sur support aligns with the v3 beta scope.

@leaanthony
leaanthony merged commit 032dc97 into master May 31, 2026
12 of 16 checks passed
@leaanthony
leaanthony deleted the fix/5161-macos-min-version-12 branch May 31, 2026 07:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

[v3] mac minimum build version should be 12.0

2 participants