From maui-skills
Guides migration of Xamarin.iOS, Xamarin.Mac, and Xamarin.tvOS native apps to .NET for iOS, macOS, and tvOS. Covers SDK-style projects, MSBuild properties, Info.plist updates, binding libraries, and code signing.
npx claudepluginhub davidortinau/maui-skills --plugin maui-skillsThis skill uses the workspace's default tool permissions.
For SDK-style project templates, MSBuild property tables, RuntimeIdentifier conversion tables, and namespace mappings, see `references/ios-migration-api.md`.
Guides migration of Xamarin.Android native apps to .NET for Android, covering SDK-style projects, MSBuild properties, AndroidManifest.xml updates, NuGet dependencies, binding libraries, and gotchas.
Creates and updates slim/native iOS bindings for .NET MAUI and .NET iOS projects using Native Library Interop. Guides Swift/Objective-C wrappers, Xcode configuration, C# API generation, and xcframework integration.
Ports React/React Native features to idiomatic native iOS/Swift code. Analyzes behavior, components, state, logic from React source; implements matching target codebase patterns. For migrations or native web alternatives.
Share bugs, ideas, or general feedback.
For SDK-style project templates, MSBuild property tables, RuntimeIdentifier conversion tables, and namespace mappings, see references/ios-migration-api.md.
references/ios-migration-api.md)MinimumOSVersion from Info.plist → SupportedOSPlatformVersion in csproj<UseMauiEssentials>true</UseMauiEssentials>.dll.config files (not supported in .NET)bin//obj/, build, verify code signing, test on deviceStrategy: Create a new project and copy code into it — don't edit the existing project file.
Unlike Android, there is no backward compatibility with old Xamarin iOS/Mac TFMs. Packages targeting monotouch, xamarinios, xamarinios10, monomac, or xamarinmac will not work — they must be recompiled for net8.0-ios etc.
CodeSigningKey → CodesignKey Rename<!-- ❌ Old property name — silently ignored -->
<CodeSigningKey>Apple Distribution: My Company</CodeSigningKey>
<!-- ✅ Renamed property -->
<CodesignKey>Apple Distribution: My Company</CodesignKey>
Also rename MtouchEnableSGenConc → EnableSGenConc.
.dll.config or .exe.config Support.dll.config and <dllmap> are not supported in .NET Core. Migrate configuration to appsettings.json, embedded resources, or platform preferences.
Xamarin.watchOS has no .NET equivalent. Bundle Swift extensions with .NET for iOS apps instead.
OpenTK is unavailable in .NET for iOS. Migrate to Metal or SceneKit.
Update LinkDescription XML files if custom linker configuration was used. The linker in .NET is stricter and may trim symbols that the Xamarin linker preserved.
| Pitfall | Impact | Mitigation |
|---|---|---|
| iOS/Mac NuGet packages not backward-compatible | Build failures for packages targeting xamarinios | Recompile or find .NET-compatible alternatives |
CodeSigningKey silently ignored | App fails to sign but no clear error | Rename to CodesignKey |
MtouchArch not converted | Wrong architecture targeted | Convert to RuntimeIdentifier(s) — see reference tables |
MinimumOSVersion left in Info.plist | Ignored — uses csproj value | Move to SupportedOSPlatformVersion |
| Entitlements path wrong | Build succeeds but runtime failures | Verify CodesignEntitlements points to correct file |
.dll.config files present | Silently ignored at runtime | Remove and migrate to alternatives |
net8.0-ios TFM| Situation | Action |
|---|---|
| You own the package | Recompile with .NET TFMs |
| Package has preview .NET version | Use preview |
| No compatible version | Replace with .NET-compatible alternative |
| .NET Standard library (no platform deps) | ✅ Still works |
| Issue | Fix |
|---|---|
| Namespace not found | Most UIKit namespaces are unchanged — verify against .NET for iOS API surface |
| Linker errors | Update LinkDescription XML files — linker is stricter in .NET |
| Code signing failure | Verify CodesignKey, CodesignProvision, CodesignEntitlements |
| Entitlements mismatch | Ensure entitlements file matches provisioning profile |
If your migrated app will also adopt .NET MAUI controls (e.g., via UseMaui), check the maui-current-apis skill for deprecated MAUI APIs to avoid (ListView, Frame, Device.*, etc.).
TargetFramework to net8.0-ios (or -macos/-tvos)MinimumOSVersion → SupportedOSPlatformVersion in csprojMtouchArch → RuntimeIdentifier(s)HttpClientHandler → UseNativeHttpHandlerCodeSigningKey → CodesignKeyMtouchEnableSGenConc → EnableSGenConcUseMauiEssentials + Platform.Init() if using Essentials.dll.config filesbin/ and obj/ folders