diff --git a/.github/workflows/build-samples-todoapp-uno.yml b/.github/workflows/build-samples-todoapp-uno.yml
index 8d315617..abf68548 100644
--- a/.github/workflows/build-samples-todoapp-uno.yml
+++ b/.github/workflows/build-samples-todoapp-uno.yml
@@ -13,14 +13,13 @@ env:
# Debug to avoid that overhead consistently, even where it isn't currently an issue.
DOTNET_CONFIGURATION: 'Debug'
# TodoApp.Uno.csproj is a single Uno.Sdk project with a multi-head TargetFrameworks list
- # (net10.0-android;net10.0-ios;net10.0-maccatalyst;net10.0-windows10.0.26100;
+ # (net10.0-android;net10.0-ios;net10.0-windows10.0.26100;
# net10.0-browserwasm;net10.0-desktop). No single runner can build every head (mobile heads
# need Android/iOS workloads, the Windows head needs windows-latest, etc.), so each job below
# restores/builds one head at a time, scoped via the MSBuild TargetFramework property.
UnoProjectFile: 'samples/todoapp/TodoApp.Uno/TodoApp.Uno/TodoApp.Uno.csproj'
AndroidTargetFramework: 'net10.0-android'
iOSTargetFramework: 'net10.0-ios'
- MacCatalystTargetFramework: 'net10.0-maccatalyst'
WindowsTargetFramework: 'net10.0-windows10.0.26100'
BrowserWasmTargetFramework: 'net10.0-browserwasm'
DesktopTargetFramework: 'net10.0-desktop'
@@ -56,8 +55,8 @@ jobs:
--configuration ${{ env.DOTNET_CONFIGURATION }}
--no-restore
- ios-maccatalyst:
- # iOS and Mac Catalyst builds both require Xcode, which is only available on macOS runners.
+ ios:
+ # The iOS build requires Xcode, which is only available on macOS runners.
# Pinned to macos-26 (rather than macos-latest) so the Xcode toolchain doesn't change
# underneath us when the macos-latest label moves. macos-26 replaced the previous
# (older) macOS image because macOS arm64 jobs on that image repeatedly failed to acquire
@@ -68,7 +67,7 @@ jobs:
# RequiredXcodeVersion below). See https://github.com/CommunityToolkit/Datasync/issues/627.
runs-on: macos-26
env:
- # `dotnet workload install ios maccatalyst` with no `--version` resolves the newest published
+ # `dotnet workload install ios` with no `--version` resolves the newest published
# workload set, which can move to an iOS SDK pack that needs an Xcode that isn't on the
# runner image yet. As of workload set 10.0.115 that's Microsoft.iOS.Sdk.net10.0_27.2, which
# requires Xcode 27.2 (macos-26 only has Xcode 26.x), and the build fails with
@@ -100,8 +99,8 @@ jobs:
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- - name: Install iOS and Mac Catalyst workloads
- run: dotnet workload install ios maccatalyst --version ${{ env.WorkloadSetVersion }}
+ - name: Install iOS workload
+ run: dotnet workload install ios --version ${{ env.WorkloadSetVersion }}
- name: Restore Uno project (iOS TFM only)
run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.iOSTargetFramework }}
@@ -113,16 +112,6 @@ jobs:
--configuration ${{ env.DOTNET_CONFIGURATION }}
--no-restore
- - name: Restore Uno project (Mac Catalyst TFM only)
- run: dotnet restore ${{ env.UnoProjectFile }} -p:TargetFramework=${{ env.MacCatalystTargetFramework }}
-
- - name: Build Uno project (Mac Catalyst TFM only)
- run: >
- dotnet build ${{ env.UnoProjectFile }}
- -f ${{ env.MacCatalystTargetFramework }}
- --configuration ${{ env.DOTNET_CONFIGURATION }}
- --no-restore
-
windows:
runs-on: windows-latest
steps:
diff --git a/AGENTS.md b/AGENTS.md
index 84ba8c20..ca8db48f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -33,7 +33,7 @@ far more reliable than trying to reproduce that locally.
**Timing:** a full `Build Samples` run across all sample projects takes
approximately **6 minutes** end-to-end. Individual jobs (e.g.
`todoapp-blazor-wasm`) typically finish in well under a minute, but slower
-jobs (Windows, Uno iOS/maccatalyst) can take several minutes each, and they
+jobs (Windows, Uno iOS) can take several minutes each, and they
run in parallel. Plan polling/wait times accordingly — don't assume the run
is stuck if it's still going after a minute or two; do check back in if it
hasn't completed after ~6-8 minutes.
diff --git a/docs/samples/todoapp/unoplatform.md b/docs/samples/todoapp/unoplatform.md
index ae996481..3f82c51a 100644
--- a/docs/samples/todoapp/unoplatform.md
+++ b/docs/samples/todoapp/unoplatform.md
@@ -11,6 +11,7 @@ The Uno Platform sample uses an in-memory Sqlite store for storing its data. To
* Open `samples/todoapp/TodoApp.Uno/TodoApp.Uno.sln` in Visual Studio.
* Select a target (in the top bar), then press F5 to run the application.
* For Windows, select **TodoApp.Uno (WinAppSDK Packaged)**.
+ * For macOS, Linux or Windows (Skia rendering), select the `net10.0-desktop` head. This is the supported way to run the sample on macOS.
* For other platforms, select the correct emulator or simulator from the target selection drop-down.
If you bump into issues at this point, ensure you can properly develop and run Uno Platform applications for the desktop outside of the datasync service.
diff --git a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Assets/SharedAssets.md b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Assets/SharedAssets.md
index 1b84a74a..602bc4f6 100644
--- a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Assets/SharedAssets.md
+++ b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Assets/SharedAssets.md
@@ -22,7 +22,7 @@ See documentation about assets here: https://github.com/unoplatform/uno/blob/mas
### Table of scales
-| Scale | WinUI | iOS/MacCatalyst | Android |
+| Scale | WinUI | iOS | Android |
|-------|:-----------:|:---------------:|:-------:|
| `100` | scale-100 | @1x | mdpi |
| `125` | scale-125 | N/A | N/A |
diff --git a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Entitlements.plist b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Entitlements.plist
deleted file mode 100644
index 24c31036..00000000
--- a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Entitlements.plist
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Info.plist b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Info.plist
deleted file mode 100644
index 1bb02ddc..00000000
--- a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- UIDeviceFamily
-
- 2
-
- LSApplicationCategoryType
- public.app-category.utilities
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- XSAppIconAssets
- Assets.xcassets/icon.appiconset
-
-
-
-
diff --git a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Main.maccatalyst.cs b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Main.maccatalyst.cs
deleted file mode 100644
index a2e34523..00000000
--- a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Main.maccatalyst.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using UIKit;
-
-namespace TodoApp.Uno.MacCatalyst;
-public class EntryPoint
-{
- // This is the main entry point of the application.
- public static void Main(string[] args)
- {
- // if you want to use a different Application Delegate class from "AppDelegate"
- // you can specify it here.
- UIApplication.Main(args, null, typeof(App));
- }
-}
diff --git a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json
deleted file mode 100644
index 69555e44..00000000
--- a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "images": [
- {
- "orientation": "portrait",
- "extent": "full-screen",
- "minimum-system-version": "7.0",
- "scale": "2x",
- "size": "640x960",
- "idiom": "iphone"
- },
- {
- "orientation": "portrait",
- "extent": "full-screen",
- "minimum-system-version": "7.0",
- "subtype": "retina4",
- "scale": "2x",
- "size": "640x1136",
- "idiom": "iphone"
- },
- {
- "orientation": "portrait",
- "extent": "full-screen",
- "minimum-system-version": "7.0",
- "scale": "1x",
- "size": "768x1024",
- "idiom": "ipad"
- },
- {
- "orientation": "landscape",
- "extent": "full-screen",
- "minimum-system-version": "7.0",
- "scale": "1x",
- "size": "1024x768",
- "idiom": "ipad"
- },
- {
- "orientation": "portrait",
- "extent": "full-screen",
- "minimum-system-version": "7.0",
- "scale": "2x",
- "size": "1536x2048",
- "idiom": "ipad"
- },
- {
- "orientation": "landscape",
- "extent": "full-screen",
- "minimum-system-version": "7.0",
- "scale": "2x",
- "size": "2048x1536",
- "idiom": "ipad"
- }
- ],
- "properties": {},
- "info": {
- "version": 1,
- "author": ""
- }
-}
\ No newline at end of file
diff --git a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/TodoApp.Uno.csproj b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/TodoApp.Uno.csproj
index 627e09b7..6cc518ea 100644
--- a/samples/todoapp/TodoApp.Uno/TodoApp.Uno/TodoApp.Uno.csproj
+++ b/samples/todoapp/TodoApp.Uno/TodoApp.Uno/TodoApp.Uno.csproj
@@ -1,6 +1,6 @@
- net10.0-android;net10.0-ios;net10.0-maccatalyst;net10.0-windows10.0.26100;net10.0-browserwasm;net10.0-desktop
+ net10.0-android;net10.0-ios;net10.0-windows10.0.26100;net10.0-browserwasm;net10.0-desktop
Exe
true
@@ -59,23 +59,19 @@
-->
true
- $(MSBuildWarningsAsMessages);MT7156
+ $(MSBuildWarningsAsMessages);MT7156