| name | xamarin-maui-platform-specific-migration |
| description | Companion migration skill for Android, iOS, and Windows platform-specific tasks when moving Xamarin.Forms code to .NET MAUI. |
| metadata | {"author":"Syncfusion Inc","version":"1.0.0"} |
Xamarin.Forms to .NET MAUI Platform-Specific Migration Skill
Purpose
Use this companion skill to migrate platform-specific code safely when Xamarin.Forms code is moved to a .NET MAUI app.
This skill focuses only on platform concerns:
- Android manifest, components, and runtime permissions.
- iOS Info.plist keys, entitlements, URL schemes, and lifecycle integrations.
- Windows target behavior and UWP-to-Windows mapping.
- Native SDK startup and lifecycle parity.
Recommended skill sequence
Run skills in this order for best outcomes:
- xamarin-maui-framework-migration
- xamarin-maui-syncfusion-migration
- xamarin-maui-platform-specific-migration (this skill)
- xamarin-maui-renderer-handler-migration
Use this skill after baseline migration to close platform parity gaps before final renderer-handler cleanup.
When to use this skill
Use this skill when one or more of the following are present:
- Custom AndroidManifest entries, intent filters, or exported activities/services/receivers.
- iOS App Transport Security exceptions, associated domains, push notifications, or URL schemes.
- UWP-specific APIs or Windows declarations that require MAUI Windows mapping.
- Native SDK initialization in AppDelegate, MainActivity, or custom startup classes.
- Deep links, notifications, foreground services, background tasks, or lifecycle-dependent features.
Use this skill after or alongside the general migration skill.
Do not use this skill for
- Shared business logic only migrations with no platform code.
- Pure XAML namespace replacement tasks.
- Renderer-to-handler rewriting as a primary task (run specialized renderer migration separately).
Inputs
Required input:
- MAUI target project root.
- Source platform files from Xamarin projects or copied snippets.
Recommended inputs:
- AndroidManifest.xml and related Android startup classes.
- Info.plist and entitlements files.
- UWP project declarations and capability entries.
- Any platform SDK initialization snippets.
Optional behavior flags:
- Dry run (analysis and checklist only).
- Strict parity mode (fail if any platform capability is missing).
Outputs
Primary outputs:
- Platform migration checklist by target platform.
- Capability parity report (preserved, replaced, missing, unsupported).
- Manual action backlog with severity and rationale.
Secondary outputs:
- Suggested MAUI startup/lifecycle mapping notes.
- Risk heatmap for platform-specific changes.
- Validation plan for smoke test execution.
Execution workflow
-
Platform inventory and baseline
-
Detect Android, iOS, and Windows source artifacts.
-
Extract capabilities, lifecycle hooks, URL schemes, permissions, and SDK startup points.
-
Build source-to-target capability map.
-
Android migration mapping
-
Map manifest entries to MAUI platform structure.
-
Validate runtime permission model and request flows.
-
Validate intent filters, exported settings, and package visibility declarations.
-
iOS migration mapping
-
Map Info.plist keys and ATS exceptions.
-
Map entitlements and associated domains.
-
Map lifecycle hooks and push/deep-link entry points.
-
Windows/UWP mapping
-
Identify UWP-specific APIs and declarations.
-
Map to MAUI Windows equivalents where available.
-
Mark unsupported items with replacement guidance.
-
Native SDK and lifecycle alignment
-
Relocate SDK initialization to MAUI lifecycle points.
-
Verify initialization order dependencies.
-
Flag thread/lifecycle-sensitive integrations for manual validation.
-
Validation and reporting
-
Produce platform checklist and unresolved items.
-
Validate startup, permissions, deep links, and notification entry points.
-
Emit pass/fail readiness with explicit waivers where accepted.
Rule examples
Android rules:
- Preserve required permissions and intent filters.
- Validate exported component requirements.
- Preserve package visibility queries where needed.
iOS rules:
- Preserve required Info.plist keys and URL schemes.
- Preserve entitlements and associated domains where feature dependent.
- Preserve required background modes and notification capabilities.
Windows rules:
- Map UWP declarations to MAUI Windows settings where supported.
- Emit unsupported UWP features as manual action items.
Lifecycle rules:
- Move native SDK startup to MAUI lifecycle hooks.
- Maintain startup ordering for SDKs with dependency constraints.
Safety and constraints
- Never silently drop platform capabilities.
- Any missing capability must be reported as a blocking or high-risk item.
- Any unsupported platform feature must include a replacement path or waiver requirement.
- Validation evidence is required before platform migration is considered complete.
References
- Platform checklist reference: references/platform-checklist.md
Related skills:
- ../xamarin-maui-framework-migration/SKILL.md
- ../xamarin-maui-renderer-handler-migration/SKILL.md
- ../xamarin-maui-syncfusion-migration/SKILL.md
Definition of done
Platform migration is complete when:
- Platform checklist is generated for Android, iOS, and Windows scope in project.
- Capability parity report is generated with no unresolved blockers.
- Missing or unsupported capabilities are either fixed or explicitly waived.
- Startup and lifecycle mapping has been validated.
- Smoke test plan exists for all migrated platform entry points.