Blazor Migration
This page is about adopting DrawnUI in an existing Blazor codebase without forcing the whole app into a new rendering model on day one.
Migration Strategy
The safe approach is incremental:
- keep the existing Blazor shell, routing, and layouts
- introduce one DrawnUI island where custom rendering actually pays off
- choose runtime based on the surface behavior, not on branding alone
- expand only after the first slice proves its value
If You Already Have A Blazor Server App
Start with DrawnUi.Blazor.Server when:
- the target surface is event-driven
- the page is mostly normal Razor/HTML with one or two drawn islands
- you want minimum architecture churn first
Move that specific surface to DrawnUi.Blazor.Wasm later if you discover it really needs local animation or richer input handling.
If You Already Have A WASM App
Start with DrawnUi.Blazor.Wasm when:
- the target surface needs local responsiveness
- DrawnUI will own a large part of the interaction model
- you expect animation, gesture work, or frequent redraw
If You Are Building A New Blazor Web App
Use a mixed architecture only when the app genuinely needs both runtime behaviors.
Do not choose hybrid just because it seems more flexible on paper. Mixed render modes add structure and deployment complexity. Use them when one surface clearly belongs on the server and another clearly belongs in the browser.
Good First Candidates
- custom dashboards
- inspectors and property panels
- interactive cards and branded widgets
- drawing-heavy surfaces that are awkward in plain HTML/CSS
- areas where normal Blazor controls still make sense around the edges
Poor First Candidates
- text-entry-heavy workflows if you expect browser-native editing behavior inside the DrawnUI area
- high-FPS scenes on the server path
- drag-heavy interactions on the server path
- app-wide migration before the first isolated surface is validated
Practical Path
- start with one page or one panel
- validate the runtime fit with the matching sample pattern from this repo
- keep surrounding app structure conventional
- widen usage only after the interaction and performance model is proven