IonBlazor 0.887.12
dotnet add package IonBlazor --version 0.887.12
NuGet\Install-Package IonBlazor -Version 0.887.12
<PackageReference Include="IonBlazor" Version="0.887.12" />
<PackageVersion Include="IonBlazor" Version="0.887.12" />
<PackageReference Include="IonBlazor" />
paket add IonBlazor --version 0.887.12
#r "nuget: IonBlazor, 0.887.12"
#:package IonBlazor@0.887.12
#addin nuget:?package=IonBlazor&version=0.887.12
#tool nuget:?package=IonBlazor&version=0.887.12
IonBlazor
Ionic Framework components for Blazor, MAUI Hybrid, and ASP.NET Core Razor.
The all-in-one package: pulls in the component wrappers and every static asset bundle so a fresh project can render Ionic UI without any extra setup.
Install
dotnet add package IonBlazor
Setup
Add the Ionic script and stylesheets to your host page — wwwroot/index.html for Blazor WebAssembly, Pages/_Host.cshtml (or App.razor in .NET 8+) for Blazor Server, wwwroot/index.html for MAUI Hybrid:
<script type="module" src="_content/IonBlazor/@ionic/core/dist/ionic/ionic.esm.js"></script>
<link rel="stylesheet" href="_content/IonBlazor/@ionic/core/css/core.css" />
<link rel="stylesheet" href="_content/IonBlazor/@ionic/core/css/ionic.bundle.css" />
Add the namespaces to _Imports.razor:
@using IonBlazor.Components
@using IonBlazor.Components.Abstractions
@using IonBlazor.Services
Use
<IonApp>
<IonContent>
<IonButton OnClick="@HandleClick">Tap me</IonButton>
</IonContent>
</IonApp>
@code {
void HandleClick() { /* ... */ }
}
Overlay services (Controllers → Services)
The four overlay controllers (IonAlertController, IonActionSheetController, IonToastController,
IonLoadingController) have been replaced by scoped DI services — IonAlertService,
IonActionSheetService, IonToastService, IonLoadingService. The old controllers are now
[Obsolete(error: true)] stubs and will fail the build with a pointer to the migration recipe.
Register all four services with one call in Program.cs / MauiProgram.cs:
builder.Services.AddIonBlazor();
Then inject and call:
@inject IonAlertService AlertService
@code {
private async Task Show()
{
await AlertService.PresentAsync(options =>
{
options.Header = "Heads up";
options.Message = "Hello.";
});
}
}
Remove every <IonAlertController/>, <IonActionSheetController/>, <IonToastController/>, and
<IonLoadingController/> tag from your root layout after switching. See the
IonBlazor.Components README for full details
including the per-service migration mapping and the dropped IonLoadingController.Create sync wrapper.
Package family
| Package | Use when |
|---|---|
| IonBlazor | You want everything in one reference. Recommended for most apps. |
| IonBlazor.Components | You want only the C# wrappers and will provide Ionic JS/CSS yourself. |
| IonBlazor.StaticAssets | JavaScript interop modules used by the wrappers (transitively required). |
| IonBlazor.StaticAssets.Ionic | The @ionic/core JavaScript bundle and CSS, served from _content/IonBlazor. |
| IonBlazor.StaticAssets.Ionic.Svg | Ionic SVG icon set, served from _content/IonBlazor. |
MAUI Hybrid multi-project caveat
In a MAUI Hybrid solution where multiple projects (e.g. a Core Razor class library and a MAUI host) all reference an asset-carrying package, MAUI's static-asset packaging fails with a duplicate-asset error.
Workaround: only one project ships the static assets. That project can use either:
- the bundle —
IonBlazor, or - the granular packages —
IonBlazor.StaticAssets+IonBlazor.StaticAssets.Ionic(+IonBlazor.StaticAssets.Ionic.Svgfor icons), optionally withIonBlazor.Components.
Every other project references only IonBlazor.Components, which has no static assets. The component wrappers stay available everywhere; the assets ship exactly once.
Supported frameworks
net8.0, net9.0, net10.0.
Links
- Source: https://github.com/wdcossey/ionblazor
- Issues: https://github.com/wdcossey/ionblazor/issues
- Ionic Framework: https://ionicframework.com/
License
MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- IonBlazor.Components (>= 0.887.12)
- Microsoft.AspNetCore.Components (>= 10.0.0)
- Microsoft.AspNetCore.Components.Web (>= 10.0.0)
-
net8.0
- IonBlazor.Components (>= 0.887.12)
- Microsoft.AspNetCore.Components (>= 8.0.0 && < 9.0.0)
- Microsoft.AspNetCore.Components.Web (>= 8.0.0 && < 9.0.0)
-
net9.0
- IonBlazor.Components (>= 0.887.12)
- Microsoft.AspNetCore.Components (>= 9.0.0 && < 10.0.0)
- Microsoft.AspNetCore.Components.Web (>= 9.0.0 && < 10.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.887.12 | 0 | 5/31/2026 |
| 0.887.11 | 83 | 5/26/2026 |
| 0.887.9 | 105 | 5/21/2026 |
| 0.887.8 | 94 | 5/18/2026 |
| 0.887.7 | 91 | 5/18/2026 |
| 0.887.0 | 90 | 5/17/2026 |
| 0.872.1 | 243 | 8/19/2025 |
| 0.843.0-alpha.6 | 227 | 4/28/2025 |
| 0.843.0-alpha.5 | 194 | 4/28/2025 |
| 0.843.0-alpha.4 | 140 | 4/26/2025 |
| 0.843.0-alpha.3 | 232 | 4/23/2025 |
| 0.843.0-alpha.2 | 140 | 2/22/2025 |
| 0.843.0-alpha.1 | 132 | 2/21/2025 |
| 0.842.0-alpha.1 | 136 | 2/21/2025 |
| 0.841.0-alpha.5 | 131 | 2/21/2025 |
| 0.841.0-alpha.4 | 156 | 2/19/2025 |
| 0.841.0-alpha.3 | 129 | 1/27/2025 |
| 0.786.0-rc.1 | 130 | 1/27/2025 |