Xamarin.Forms Renderer to .NET MAUI Handler Migration Skill
Purpose
Use this companion skill to migrate Xamarin.Forms renderer-based UI customizations to .NET MAUI handler architecture with clear risk tracking and validation.
This skill focuses on:
- Detecting custom renderers, effects, and platform-specific native view customizations.
- Mapping renderer responsibilities to MAUI handler/property/command mappers.
- Scaffolding handler classes and platform partial implementations.
- Producing a manual action backlog for high-risk native mappings.
Recommended skill sequence
Run skills in this order for best outcomes:
- xamarin-maui-framework-migration
- xamarin-maui-syncfusion-migration
- xamarin-maui-platform-specific-migration
- xamarin-maui-renderer-handler-migration (this skill)
Use this skill after baseline and platform migration so renderer conversions happen against stable project and platform wiring.
When to use this skill
Use this skill when one or more of the following are present:
- ExportRenderer attributes or renderer registrations.
- Custom renderer classes extending ViewRenderer, PageRenderer, ShellRenderer, or similar.
- Platform effect implementations for Android, iOS, or Windows/UWP.
- Native control manipulations in OnElementChanged, OnElementPropertyChanged, or lifecycle callbacks.
- Custom drawing, gesture, accessibility, or input handling in native renderer code.
Use this skill after baseline namespace/API migration.
Do not use this skill for
- Pure namespace replacement tasks.
- Dependency-only migration with no custom UI layer.
- Platform capability migration without renderer or effect logic.
Inputs
Required input:
- MAUI target project root.
- Source renderer/effect files from Xamarin.Forms projects or copied modules.
Recommended inputs:
- Control API surface and bindable property definitions.
- Any existing MAUI custom control abstractions.
- Platform-specific rendering behavior notes and screenshots.
Optional behavior flags:
- Dry run (analysis and migration plan only).
- Scaffold only (generate templates without wiring registration).
- Strict mode (fail if any renderer has unresolved critical mapping items).
Outputs
Primary outputs:
- Renderer inventory and classification report.
- Handler mapping plan by control/effect.
- Generated handler scaffolds and platform partial templates.
- Manual action backlog with severity and rationale.
Secondary outputs:
- Suggested DI or registration updates.
- Risk heatmap for renderer complexity and platform divergence.
- Validation test matrix for visual and interaction parity.
Execution workflow
Renderer and effect inventory
Detect renderer classes, effects, and registration attributes.
Extract touched native APIs, lifecycle hooks, and property handlers.
Classify migration complexity (low, medium, high, critical).
Mapping strategy
Map renderer responsibilities to handler property and command mappers.
Separate shared control logic from platform native logic.
Identify unsupported or risky native APIs requiring manual redesign.
Scaffold generation
Generate handler base class and platform partial classes.
Generate property mapper entries for bindable properties.
Generate command mapper entries where imperative actions are required.
Preserve comments indicating manual mapping points.
Registration and wiring
Propose handler registration in MauiProgram.
Ensure control type-to-handler type mappings are explicit.
Flag startup ordering concerns when handlers depend on native SDK initialization.
Validation and reporting
Validate build references and handler wiring completeness.
Validate that no renderer registrations remain active.
Produce migration report with unresolved manual mappings.
Produce test matrix for visual parity, input behavior, and accessibility.
Rule examples
Detection rules:
- ExportRenderer and ExportEffect attributes indicate legacy wiring.
- Renderer lifecycle overrides indicate likely manual mapping points.
Mapping rules:
- OnElementPropertyChanged logic maps to property mapper actions.
- Imperative updates map to command mapper actions.
- Native view creation logic maps to handler platform view creation paths.
Safety rules:
- Do not remove renderer code until equivalent handler mapping exists.
- Any unresolved native API call must be tracked as manual action.
- Accessibility behavior parity must be explicitly validated.
Safety and constraints
- Default to additive migration (scaffold first, then replace wiring).
- Any high-risk renderer must include explicit validation scenarios.
- Effects with platform-specific side effects must be reviewed manually.
- Migration is incomplete until renderer wiring is removed and parity checks pass.
References
- Handler mapping checklist: references/handler-mapping-checklist.md
Related skills:
- ../xamarin-maui-framework-migration/SKILL.md
- ../xamarin-maui-platform-specific-migration/SKILL.md
- ../xamarin-maui-syncfusion-migration/SKILL.md
Definition of done
Renderer migration is complete when:
- All renderer and effect artifacts are inventoried and classified.
- Handler mappings are implemented or tracked with explicit manual actions.
- Legacy renderer registrations are removed or disabled.
- Visual, interaction, and accessibility parity checks are documented and executed.
- Final report includes unresolved risks, owners, and next actions.
1---2name: xamarin-maui-renderer-handler-migration3description: Companion migration skill for converting Xamarin.Forms custom renderers and effects to .NET MAUI handlers.4---56# Xamarin.Forms Renderer to .NET MAUI Handler Migration Skill78## Purpose910Use this companion skill to migrate Xamarin.Forms renderer-based UI customizations to .NET MAUI handler architecture with clear risk tracking and validation.1112This skill focuses on:131. Detecting custom renderers, effects, and platform-specific native view customizations.142. Mapping renderer responsibilities to MAUI handler/property/command mappers.153. Scaffolding handler classes and platform partial implementations.164. Producing a manual action backlog for high-risk native mappings.1718## Recommended skill sequence1920Run skills in this order for best outcomes:211. xamarin-maui-framework-migration222. xamarin-maui-syncfusion-migration233. xamarin-maui-platform-specific-migration244. xamarin-maui-renderer-handler-migration (this skill)2526Use this skill after baseline and platform migration so renderer conversions happen against stable project and platform wiring.2728## When to use this skill2930Use this skill when one or more of the following are present:311. ExportRenderer attributes or renderer registrations.322. Custom renderer classes extending ViewRenderer, PageRenderer, ShellRenderer, or similar.333. Platform effect implementations for Android, iOS, or Windows/UWP.344. Native control manipulations in OnElementChanged, OnElementPropertyChanged, or lifecycle callbacks.355. Custom drawing, gesture, accessibility, or input handling in native renderer code.3637Use this skill after baseline namespace/API migration.3839## Do not use this skill for40411. Pure namespace replacement tasks.422. Dependency-only migration with no custom UI layer.433. Platform capability migration without renderer or effect logic.4445## Inputs4647Required input:481. MAUI target project root.492. Source renderer/effect files from Xamarin.Forms projects or copied modules.5051Recommended inputs:521. Control API surface and bindable property definitions.532. Any existing MAUI custom control abstractions.543. Platform-specific rendering behavior notes and screenshots.5556Optional behavior flags:571. Dry run (analysis and migration plan only).582. Scaffold only (generate templates without wiring registration).593. Strict mode (fail if any renderer has unresolved critical mapping items).6061## Outputs6263Primary outputs:641. Renderer inventory and classification report.652. Handler mapping plan by control/effect.663. Generated handler scaffolds and platform partial templates.674. Manual action backlog with severity and rationale.6869Secondary outputs:701. Suggested DI or registration updates.712. Risk heatmap for renderer complexity and platform divergence.723. Validation test matrix for visual and interaction parity.7374## Execution workflow75761. Renderer and effect inventory771. Detect renderer classes, effects, and registration attributes.782. Extract touched native APIs, lifecycle hooks, and property handlers.793. Classify migration complexity (low, medium, high, critical).80812. Mapping strategy821. Map renderer responsibilities to handler property and command mappers.832. Separate shared control logic from platform native logic.843. Identify unsupported or risky native APIs requiring manual redesign.85863. Scaffold generation871. Generate handler base class and platform partial classes.882. Generate property mapper entries for bindable properties.893. Generate command mapper entries where imperative actions are required.904. Preserve comments indicating manual mapping points.91924. Registration and wiring931. Propose handler registration in MauiProgram.942. Ensure control type-to-handler type mappings are explicit.953. Flag startup ordering concerns when handlers depend on native SDK initialization.96975. Validation and reporting981. Validate build references and handler wiring completeness.992. Validate that no renderer registrations remain active.1003. Produce migration report with unresolved manual mappings.1014. Produce test matrix for visual parity, input behavior, and accessibility.102103## Rule examples104105Detection rules:1061. ExportRenderer and ExportEffect attributes indicate legacy wiring.1072. Renderer lifecycle overrides indicate likely manual mapping points.108109Mapping rules:1101. OnElementPropertyChanged logic maps to property mapper actions.1112. Imperative updates map to command mapper actions.1123. Native view creation logic maps to handler platform view creation paths.113114Safety rules:1151. Do not remove renderer code until equivalent handler mapping exists.1162. Any unresolved native API call must be tracked as manual action.1173. Accessibility behavior parity must be explicitly validated.118119## Safety and constraints1201211. Default to additive migration (scaffold first, then replace wiring).1222. Any high-risk renderer must include explicit validation scenarios.1233. Effects with platform-specific side effects must be reviewed manually.1244. Migration is incomplete until renderer wiring is removed and parity checks pass.125126## References1271281. Handler mapping checklist: references/handler-mapping-checklist.md129130Related skills:1311. ../xamarin-maui-framework-migration/SKILL.md1322. ../xamarin-maui-platform-specific-migration/SKILL.md1333. ../xamarin-maui-syncfusion-migration/SKILL.md134135## Definition of done136137Renderer migration is complete when:1381. All renderer and effect artifacts are inventoried and classified.1392. Handler mappings are implemented or tracked with explicit manual actions.1403. Legacy renderer registrations are removed or disabled.1414. Visual, interaction, and accessibility parity checks are documented and executed.1425. Final report includes unresolved risks, owners, and next actions.