Skip to content

Fix Apple platform TFMs: use 26.0 for libraries, unversioned for apps#3798

Merged
mattleibow merged 3 commits into
mainfrom
mattleibow/fix-apple-tfm-versions
Apr 30, 2026
Merged

Fix Apple platform TFMs: use 26.0 for libraries, unversioned for apps#3798
mattleibow merged 3 commits into
mainfrom
mattleibow/fix-apple-tfm-versions

Conversation

@mattleibow

@mattleibow mattleibow commented Apr 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fixes the Apple Target Platform Versions introduced in #3514 (the .NET 10 upgrade). Libraries were incorrectly targeting net10.0-ios26.2 instead of net10.0-ios26.0, and app TFMs had explicit TPVs when they should be unversioned.

Problem

  1. Library TPVs were 26.2 instead of 26.0 — packages shipped with TFMs like net10.0-ios26.2, requiring consumers to have that exact workload installed.
  2. App TFMs had explicit TPVsMauiTargetFrameworksApp was originally designed (in commit 40b0f57) to use unversioned TFMs so apps pick up whatever workload is installed. The TPVs were accidentally added in Update to .NET 10 SDK with workload version set pinning #3514.

Fix

Target TFM format Example
Libraries (NuGet packages) Versioned with .0 net10.0-ios26.0
Apps (tests, samples) Unversioned net10.0-ios

Changes

File What changed
source/SkiaSharp.Build.props Apple TPVs 26.226.0; MauiTargetFrameworksApp restored to unversioned (no TPV for iOS, MacCatalyst, Android)
build.cake Test task TFMs: net10.0-ios and net10.0-maccatalyst (unversioned)
scripts/VERSIONS.txt Ref pack names _26.2_26.0, versions 26.2.1021726.0.11017
scripts/cake/UpdateDocs.cake Ref pack package names _26.2_26.0

Not changed (intentional)

  • XCODE_VERSION: '26.2' and IOS_TEST_DEVICE_VERSION: 26.2 in CI YAML — these are actual Xcode/simulator versions on CI agents, not TFMs

Verification

All 15 Apple-platform NuGet packages confirmed to use 26.0 TFMs. iOS and Mac Catalyst tests pass.

The Target Platform Versions for iOS, MacCatalyst, tvOS, and macOS were
incorrectly set to 26.2, causing the library to target TFMs like
net10.0-ios26.2 instead of net10.0-ios26.0. The base/stable TPV for
.NET 10 Apple platforms should be 26.0 (matching Xcode 26 unified SDK
versioning).

Updated in:
- source/SkiaSharp.Build.props: TPViOS/MacCatalyst/tvOS/macOS Current
- build.cake: hardcoded TFMs in test tasks
- scripts/VERSIONS.txt: ref pack names and versions
- scripts/cake/UpdateDocs.cake: ref pack package names

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

📦 Try the packages from this PR

Warning

Do not run these scripts without first reviewing the code in this PR.

Step 1 — Download the packages

bash / macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 3798

PowerShell / Windows:

iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 3798"

Step 2 — Add the local NuGet source

dotnet nuget add source ~/.skiasharp/hives/pr-3798/packages --name skiasharp-pr-3798
More options
Option Description
--successful-only / -SuccessfulOnly Only use successful builds
--force / -Force Overwrite previously downloaded packages
--list / -List List available artifacts without downloading
--build-id ID / -BuildId ID Download from a specific build

Or download manually from Azure Pipelines — look for the nuget artifact on the build for this PR.

Remove the source when you're done:

dotnet nuget remove source skiasharp-pr-3798

@github-actions

github-actions Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

📖 Documentation Preview

The documentation for this PR has been deployed and is available at:

🔗 View Staging Site
🔗 View Staging Docs
🔗 View Staging Gallery (Blazor)
🔗 View Staging Gallery (Uno Platform)
🔗 View Staging SkiaFiddle

This preview will be updated automatically when you push new commits to this PR.


This comment is automatically updated by the documentation staging workflow.

mattleibow and others added 2 commits April 29, 2026 20:41
Library projects keep the explicit 26.0 TPV (net10.0-ios26.0) for
compatibility, but app projects (test devices, MAUI apps) should use
unversioned TFMs (net10.0-ios) so they pick up whatever Xcode/workload
is installed. This fixes the CI failure where Xcode 26.2 was installed
but the 26.0 SDK pack requires Xcode 26.0.

- MauiTargetFrameworksAppCurrent/Previous: drop Apple TPV suffixes
- build.cake test tasks: use net10.0-ios and net10.0-maccatalyst

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Restores the original intent of MauiTargetFrameworksApp from commit
40b0f57 — app TFMs should have no TPV so they use whatever workload
is installed. The TPVs were accidentally added in 58a1a73 (#3514).

Windows keeps the TPV since it's a Windows SDK version, not a workload.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mattleibow mattleibow changed the title Fix Apple platform TFMs to use 26.0 instead of 26.2 Fix Apple platform TFMs: use 26.0 for libraries, unversioned for apps Apr 30, 2026
@mattleibow
mattleibow merged commit 9981d30 into main Apr 30, 2026
5 of 6 checks passed
@mattleibow
mattleibow deleted the mattleibow/fix-apple-tfm-versions branch April 30, 2026 14:33
@mattleibow mattleibow added this to the 4.x Preview 2 milestone May 19, 2026
agneszitte added a commit to unoplatform/uno.templates that referenced this pull request Jul 13, 2026
…de from auto-update

SkiaSharp 3.119.4 ships iOS-26.2 assets that break iOS <26.2 (Xcode <26.2) builds
(uno#23680, uno.chefs#1750). Pin SkiaSharp to 3.119.2 and bump Hot Design to
1.20.0-dev.477 (post uno.hotdesign#7206, floors SkiaSharp 3.119.2) so the pin
resolves without NU1605. Add SkiaSharp to the Uno.Sdk.Updater exclude list (+ JSONC
support) so automated SDK-update PRs stop re-bumping it. Remove on SkiaSharp 3.119.5
(mono/SkiaSharp#3798) or the v4 move at Uno.Sdk 7.0 (mono/SkiaSharp#4031).

Related to unoplatform/uno#23680
Related to unoplatform/uno.chefs#1750

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant