Skip to content

feat(samples): align minimum iOS and Android versions across sample apps - #633

Merged
adrianhall merged 1 commit into
CommunityToolkit:mainfrom
adrianhall:issues/628
Nov 13, 2026
Merged

adrianhall merged 1 commit into
CommunityToolkit:mainfrom
adrianhall:issues/628

Conversation

@adrianhall

Copy link
Copy Markdown
Collaborator

Summary

Chooses a deliberate minimum iOS and Android version for the mobile sample apps, aligns them across the MAUI, Avalonia and Uno samples, and documents the values and the tooling needed to build them.

Closes #628

Final values

Sample iOS Android Windows
MAUI 15.0 -> 18.0 21.0 -> 24.0 10.0.17763.0 (unchanged)
Avalonia 15.0 -> 18.0 (csproj and Info.plist) 34 -> 24 n/a
Uno not set -> 18.0 (also Mac Catalyst 18.0) not set -> 24.0 n/a

Rationale

  • iOS 18.0. Avalonia 12 treats iOS 26 as Tier 1, iOS 18.x as Tier 2, and iOS 17 and earlier as Tier 3. MAUI 10 supports iOS 12.2+ and Uno defaults to 14.2 (6.x) / 15.0 (7.0), so 18.0 sits inside every framework's supported range. The Datasync client library has no iOS-specific API requirements, so it does not constrain the choice. The samples should reflect what a new app would reasonably choose today. Mac Catalyst uses the iOS-equivalent number (18.0 = macOS 15).
  • Android API 24. .NET 11 raises the MAUI minimum to API 24, Uno 7.0 uses API 24 on both net10.0-android and net11.0-android, and MAUI Blazor Hybrid already requires it. It also removes the odd difference between MAUI (21) and Avalonia (34).
  • Windows unchanged. 10.0.17763.0 is the Windows App SDK floor and is already the value used by the WinUI3 sample, so there is no reason for it to differ.
  • Avalonia Info.plist and csproj agree (both 18.0).
  • Uno now sets the values explicitly so the target is visible in the project instead of depending on the Uno.Sdk default.
  • UIRequiredDeviceCapabilities. Avalonia's iOS Info.plist listed armv7 (a 32-bit architecture that no iOS 18 device has) and the Uno iOS Info.plist listed both armv7 and arm64. Both now use arm64 only, which matches the MAUI sample.

Documentation

docs/samples/todoapp/{maui,avalonia,unoplatform}.md each gain a "Minimum OS versions and tooling" section listing the minimum versions and what is needed to build the mobile heads (Xcode 26.6 and workload set 10.0.112 for iOS, which is what CI pins; JDK 21 and the Android SDK with API 36 for Android).

Verification

  • dotnet restore and dotnet build succeed locally (0 warnings, 0 errors). dotnet test could not run locally because only the .NET 11 runtime is installed on the author's machine; no library or test code changed.
  • The mobile heads cannot be built locally. They are validated by the Build Samples workflow, in particular todoapp-maui / ios, todoapp-avalonia / ios and todoapp-uno / ios-maccatalyst.

Follow-ups

Set the minimum iOS version to 18.0 and the minimum Android version to
API 24 in the MAUI, Avalonia and Uno samples, and set them explicitly
in the Uno project. Keep Avalonia's Info.plist MinimumOSVersion in step
with its csproj, replace the stale armv7 UIRequiredDeviceCapabilities
entries with arm64, and document the minimum OS versions and build
tooling in the sample docs.

Refs CommunityToolkit#628
@adrianhall
adrianhall merged commit 2289f0b into CommunityToolkit:main Nov 13, 2026
22 checks passed
@adrianhall
adrianhall deleted the issues/628 branch November 13, 2026 11:59
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.

Samples: review SupportedOSPlatformVersion (minimum iOS version) across sample apps

1 participant