Documentation
bit BlazorUI
v10.6.0 MIT licensed .NET 8, 9 and 10An open-source suite of native components written entirely in C#, rendering unchanged under WebAssembly, Server, Hybrid (MAUI) and pre-rendering. This page is the whole library in one read: what is in the box, how to install it, how it is put together, what it costs you, and where it runs.
At a glance
What is in the box
Every component the library ships, grouped the way the navigation groups them. A category goes straight to that part of the gallery.
Quick start
Three steps from an empty Blazor project to a working component.
1. Install the package
dotnet add package Bit.BlazorUI2. Add the styles and scripts
<link href="_content/Bit.BlazorUI/styles/bit.blazorui.css" rel="stylesheet" />
<script src="_content/Bit.BlazorUI/scripts/bit.blazorui.js"></script>3. Use a component
@using Bit.BlazorUI
<BitButton Size="BitSize.Large" IconName="@BitIconName.Add">
Click me
</BitButton>
<BitTextField Label="Enter your name" Placeholder="Name" />
<BitDatePicker Label="Select a date" />Start from the project template
A clean solution wired for theming, SSR and responsive layouts, so the first commit is your app rather than its setup.
Install the template once:
dotnet new install Bit.BlazorEmptyThen create an app from it:
dotnet new bit-empty -n MyBitBlazorEmptyAppThe packages
One package is required. The others exist so that an app only ships the parts it asked for.
Bit.BlazorUI
RequiredThe library itself: every component in the categories above except Extras and Legacy, the theme runtime, and the Fluent design system the core stylesheet implements.
Bit.BlazorUI.Extras
OptionalThe heavier components - the data grid, the native charts, the map, the PDF viewer and the editors - together with the Fluent 2, Material and Cupertino design system presets. Every component page says which package it comes from.
Bit.BlazorUI.Icons
Optional
The Fabric (MDL2) icon set that BitIconName names, shipped as a font
and browsable on the iconography page.
Bit.BlazorUI.Assets
Optional
The Segoe UI and Roboto web fonts behind the Fluent and Material type ramps, for
clients that do not have them installed - plus the Script and
Link components that fingerprint a static asset by its content.
Bit.BlazorUI.Legacy
OptionalThe previous implementations of the chart, the grid, the editors and the PDF reader, preserved unchanged under their own namespace so an upgrading project can run both generations side by side.
Bit.BlazorEmpty
Template
A dotnet new template rather than a dependency: the starting solution
from the section above, already
wired for theming, SSR and responsive layouts.
How it is built
Six decisions that shape every component in the library - and that are close to impossible to retrofit into one later.
Native C#, not a wrapper
Every component is a Blazor component rather than a thin layer over a JavaScript widget. Even the ones you would expect to need a JS library - the PDF viewer, the markdown renderer and editor, the charts - are drawn by the library itself. That is the reason one piece of markup works under every render mode instead of only the interactive ones.
One API, learned once
Every component inherits the same base parameters -
Class,Style,Id,Dir,IsEnabled,Visibility,TabIndex,AriaLabel,HtmlAttributesandForceAnimation. Learn them on the first component and you already know them on all 99.Styled by tokens, not by cascade
Color, shape, size, type, motion and elevation are
--bit-*custom properties that every component reads. A theme is therefore data you set on:root, not a stylesheet you fork or an!importantyou have to win with - which is how four design systems re-skin the whole library from one block of variables.Direction, keyboard and motion are defaults
Diris a parameter on every component, so right-to-left is a direction rather than a stylesheet added later. Keyboard support and ARIA semantics arrive with the component, andprefers-reduced-motionis honoured by the motion tokens themselves, so it takes effect everywhere at once rather than component by component.You pay for what you render
There is no barrel to import and no framework runtime to load before the first component appears. Nothing is pulled into the app that it did not use, which is what keeps the figures below as low as they are.
Documented for people and for agents
Every component has a page with live examples and its full API table. The same catalog is served over MCP, so GitHub Copilot, Cursor, Claude and Windsurf write against the real API instead of guessing at it - set it up here.
What it costs
Measured on a published WebAssembly app - dll, css and js together, on top of the framework the app already ships:
| What you use | Roughly adds |
|---|---|
| Five components | 50 KB |
| Forty components | 200 KB |
| The whole suite | 400 KB |
Where it runs
The same component, the same parameters and the same markup under all four Blazor render modes - and on the browsers and devices below.
WebAssembly
Standalone or ASP.NET Core hosted, with the whole library running in the browser.
Server
Interactive circuits over SignalR, rendered on the server and patched into the DOM over the wire.
Hybrid
.NET MAUI on Android, iOS, macOS and Windows, through a BlazorWebView.
Static SSR and pre-rendering
Real HTML on the first response, which the component picks up from once interactivity arrives.
Browsers and platforms
Verified on the current release of each, for desktop and mobile.
Browsers
- Apple Safari (current+)
- Google Chrome (current+)
- Microsoft Edge (current+)
- Mozilla Firefox (current+)
Blazor Hybrid platforms
- Android 7.1 (API level 24) or higher
- iOS 15 or higher
- macOS 12 (Monterey) or higher
- Windows 7 SP1 or higher
License, versions and support
What using the library commits you to, and who is on the other end when something does not work.
MIT, and that is all
Free in commercial products, with no per-developer fee, no per-application fee and nothing you have to display in your own UI. The license(opens in a new tab) is the whole agreement.
One package, three .NET versions
Bit.BlazorUI multi-targets .NET 8, 9 and 10, so moving the app to a
newer framework does not mean changing the package reference. These docs describe
v10.6.0.
Built in the open
A dedicated team at bit platform develops the library on the same repository you file an issue on. Ask in discussions(opens in a new tab), report a bug in issues(opens in a new tab).
Resources
Where to go next, and where to go when something does not work.
Feedback
Found a mistake, a gap, or something that could be clearer? Every page and every component is one click from its source.