| name | xamarin-maui-syncfusion-migration |
| description | Companion migration skill for converting Syncfusion Xamarin.Forms controls to .NET MAUI using control-specific mapping guidance. |
| metadata | {"author":"Syncfusion Inc","version":"1.0.1"} |
Xamarin.Forms to .NET MAUI Syncfusion Migration Skill
Purpose
Use this skill to migrate Syncfusion controls used in Xamarin.Forms apps to their .NET MAUI equivalents with control-level accuracy.
This skill is self-contained and relies on references bundled in this skill folder.
Control-wise API, event, and method migration mappings are captured in references/controls/*.md.
Recommended skill sequence
Run skills in this order for best outcomes:
- xamarin-maui-framework-migration
- xamarin-maui-syncfusion-migration (this skill)
- xamarin-maui-platform-specific-migration
- xamarin-maui-renderer-handler-migration
Use this skill after baseline MAUI project migration so Syncfusion namespace, API, and control mappings are applied before platform and renderer hardening.
When to use this skill
Use this skill when one or more of the following are present:
- Xamarin Syncfusion namespaces such as Syncfusion.*.XForms in XAML or C#.
- Syncfusion Xamarin controls in UI pages, templates, or custom controls.
- API rename or enum rename issues after moving code to MAUI.
- Split-control migrations (for example, Xamarin SfChart to MAUI chart families).
Use this skill for:
- Control equivalence mapping from Xamarin to MAUI.
- Namespace migration for Syncfusion assemblies.
- API rename triage (properties, enums, events, classes).
- Unsupported and obsolete control replacement guidance.
- Syncfusion migration backlog generation with risk tags.
- MAUI startup registration checks for Syncfusion core and control dependencies.
Do not use this skill for
- Non-Syncfusion migrations as a primary task.
- Pure platform manifest/plist capability migration.
- Custom renderer-to-handler rewrites unrelated to Syncfusion controls.
Inputs
Required input:
- MAUI target project root.
- Source Xamarin.Forms code (solution or copied modules).
- Syncfusion migration reference files in this skill folder.
Recommended inputs:
- List of controls used by feature area or page.
- Existing styling/theme resources affecting Syncfusion controls.
- Screenshots for visual parity checks.
Optional behavior flags:
- Dry run for analysis-only output.
- Strict mode to fail when unresolved Syncfusion control mappings remain.
- Control filter to scope migration to selected controls.
Outputs
Primary outputs:
- Syncfusion control inventory with Xamarin-to-MAUI mapping.
- Namespace and API rename change list.
- Manual action backlog for pending or unsupported features.
- Migration readiness score for Syncfusion-dependent screens.
- Startup registration checklist for MauiProgram and required Syncfusion packages.
- Control-wise migration reference set for APIs, events, and methods.
Secondary outputs:
- Suggested package and using updates.
- Per-control risk heatmap (low, medium, high).
- Visual parity checklist per migrated control.
Execution workflow
-
Inventory and classification
-
Detect Syncfusion controls, namespaces, enums, and API usages in XAML and C#.
-
Group findings by control and feature area.
-
Classify controls as direct map, split map, renamed API map, or obsolete map.
-
Control mapping
-
Use references/common-migration-summary.md for canonical control equivalence.
-
Use references/control-doc-index.md and references/nuget-package-map.md for control coverage, API patterns, and package mapping.
-
Use the corresponding references/controls/.md file for detailed API/event/method mapping per control.
-
Flag controls with upcoming, missing, or behavior-changed features.
-
Namespace and API migration
-
Replace Xamarin Syncfusion namespaces with MAUI Syncfusion namespaces per control guide.
-
Update XAML namespace declarations for each control (e.g., xmlns:sfPopup="clr-namespace:Syncfusion.Maui.Popup;assembly=Syncfusion.Maui.Popup").
-
Add C# using directives: using Syncfusion.Maui.Core.Hosting; (for ConfigureSyncfusionCore) and control-specific namespaces.
-
Apply API renames for properties, enums, events, and classes.
-
Preserve behavior with explicit notes where one-to-one mapping is not available.
-
Package and registration alignment
-
Verify required Syncfusion MAUI packages are referenced for detected controls.
-
Ensure MauiProgram includes Syncfusion core registration (builder.ConfigureSyncfusionCore()) and required using directives.
-
Flag missing registration or package gaps as blocking actions.
-
Obsolete and split-control handling
-
Apply split-control migration patterns (for example SfChart to SfCartesianChart, SfCircularChart, SfFunnelChart, SfPyramidChart, SfPolarChart).
-
Map obsolete controls to MAUI or built-in replacements when documented.
-
Record unsupported paths as manual actions with owners.
-
Validation and reporting
-
Validate no Xamarin Syncfusion namespaces remain in migrated files.
-
Validate each detected Xamarin control has a MAUI mapping decision.
-
Validate MauiProgram contains required Syncfusion registration and imports.
Namespace Migration Reference
C# Using Directives (Required)
- Hosting namespace (required for registration):
using Syncfusion.Maui.Core.Hosting;
- Provides the
ConfigureSyncfusionCore() extension method
- Core namespace (for core types):
using Syncfusion.Maui.Core;
- Control-specific namespaces:
using Syncfusion.Maui.Popup;, using Syncfusion.Maui.Charts;, etc.
XAML Namespace Declarations (Required)
Pattern: xmlns:prefix="clr-namespace:Syncfusion.Maui.ControlNamespace;assembly=Syncfusion.Maui.ControlNamespace"
Examples:
- Popup:
xmlns:sfPopup="clr-namespace:Syncfusion.Maui.Popup;assembly=Syncfusion.Maui.Popup"
- Charts:
xmlns:sfChart="clr-namespace:Syncfusion.Maui.Charts;assembly=Syncfusion.Maui.Charts"
- DataGrid:
xmlns:sfGrid="clr-namespace:Syncfusion.Maui.DataGrid;assembly=Syncfusion.Maui.DataGrid"
Rule examples
Namespace rules:
- Syncfusion..XForms namespaces must migrate to Syncfusion.Maui. namespaces per control guide.
- Update XAML namespace declarations to match new Syncfusion.Maui.* control namespaces.
- Add
using Syncfusion.Maui.Core.Hosting; to MauiProgram.cs for ConfigureSyncfusionCore().
- Remove stale Xamarin Syncfusion using directives after migration.
Registration rules:
- MauiProgram must register Syncfusion core using
builder.ConfigureSyncfusionCore().
- MauiProgram.cs must include
using Syncfusion.Maui.Core.Hosting; to access ConfigureSyncfusionCore() extension method.
- Syncfusion.Maui.Core package must be installed as a baseline dependency.
- If an app uses only a subset of controls, registration is still required unless explicitly documented otherwise.
Control mapping rules:
- Xamarin SfChart maps to MAUI chart family based on feature usage.
- Xamarin SfRangeSlider may map to MAUI SfSlider or SfRangeSlider depending on behavior.
- Xamarin controls marked obsolete in MAUI must map to documented alternatives.
API modernization rules:
- Apply enum/property/class renames exactly as documented in each control migration guide.
- For controls with pending features, retain workaround notes as explicit action items.
Safety and constraints
- Do not infer undocumented control mappings when docs provide explicit mappings.
- Any unresolved control mapping must be reported as a blocker or high-risk item.
- Behavioral parity checks are required for high-impact controls (charts, grid, scheduler, editors).
- Migration is incomplete until all Syncfusion usages are mapped, replaced, or explicitly deferred.
- Migration is incomplete until Syncfusion startup registration is validated in MauiProgram.
References
- Common migration summary: references/common-migration-summary.md
- Control document index: references/control-doc-index.md
- NuGet package map: references/nuget-package-map.md
Related skills:
- ../xamarin-maui-framework-migration/SKILL.md
- ../xamarin-maui-platform-specific-migration/SKILL.md
- ../xamarin-maui-renderer-handler-migration/SKILL.md
Definition of done
Syncfusion migration is complete when:
- All detected Xamarin Syncfusion controls have mapping decisions.
- Namespace and API rename changes are applied and validated.
- All XAML namespace declarations are updated to Syncfusion.Maui.* patterns.
- All C# using directives are updated, including
using Syncfusion.Maui.Core.Hosting; in MauiProgram.cs.
- Obsolete or unsupported controls have approved replacement plans.
- Visual and functional checks are documented for critical screens.
- MauiProgram registration includes
builder.ConfigureSyncfusionCore() and required imports:
using Syncfusion.Maui.Core.Hosting; (for ConfigureSyncfusionCore extension)
using Syncfusion.Maui.Core; (for core types)
- Syncfusion.Maui.Core and control-specific packages are installed.
- No residual Xamarin Syncfusion namespaces remain in the migrated code.
- Final report includes blockers, owners, and next actions.