Bit.Borm
11.0.0-pre-10
dotnet add package Bit.Borm --version 11.0.0-pre-10
NuGet\Install-Package Bit.Borm -Version 11.0.0-pre-10
<PackageReference Include="Bit.Borm" Version="11.0.0-pre-10" />
<PackageVersion Include="Bit.Borm" Version="11.0.0-pre-10" />
<PackageReference Include="Bit.Borm" />
paket add Bit.Borm --version 11.0.0-pre-10
#r "nuget: Bit.Borm, 11.0.0-pre-10"
#:package Bit.Borm@11.0.0-pre-10
#addin nuget:?package=Bit.Borm&version=11.0.0-pre-10&prerelease
#tool nuget:?package=Bit.Borm&version=11.0.0-pre-10&prerelease
Bit.Borm
A schema-driven form engine for Blazor. Describe a form once - from a C# type, with a fluent builder or as a JSON Schema document - and Borm renders it, validates it and keeps its state. Every decision is made in C#; the renderers are plain, accessible HTML with a pluggable renderer registry, and there is no JavaScript at all.
Quick start
dotnet add package Bit.Borm
@* _Imports.razor *@
@using Bit.Borm
Register the rendering services in every container that renders a form (both the server and the client of a Blazor
Web App), and link the stylesheet from your host page (App.razor or index.html); it is not injected for you.
builder.Services.AddBorm();
<link rel="stylesheet" href="_content/Bit.Borm/bit-borm.css" />
<BormView Definition="_definition" Model="_model" OnValidSubmit="Save" />
@code {
private readonly Contact _model = new();
// Or BormSchemaGenerator.Generate<Contact>() to read the model's DataAnnotations,
// or BormJsonSchemaImporter.Import(json) to render a JSON Schema document.
private readonly BormDefinition _definition = BormBuilder.For<Contact>()
.Title("Contact us")
.Field(x => x.Name, f => f.Required().Placeholder("Your name"))
.Field(x => x.Email, f => f.AsEmail().Required().Trim())
.Field(x => x.Company, f => f
.VisibleWhen(nameof(Contact.IsBusiness), BormConditionOperator.IsTrue)
.RequiredWhen(nameof(Contact.IsBusiness), BormConditionOperator.IsTrue)
.ClearOnHide())
.Build();
private Task Save(BormState state) => Task.CompletedTask; // _model is populated and valid here
}
Features
- Schemas from a C# type and its DataAnnotations, from a strongly typed fluent builder, or from a JSON Schema
document (draft-07 to 2020-12, with
$ref,allOf,if/then/else) - and export back to JSON Schema. - Text, number, select, combobox, multi-select, radio, checkbox, switch, date and time, range, colour, file, tags, static headings, nested objects and repeating arrays.
- Built-in, custom, async, cross-field and form-level rules,
IValidatableObject, and FluentValidation through theBit.Borm.FluentValidationpackage. - Validation on submit, blur or change; dependent revalidation; superseded and cancelled async rules.
- Conditional visibility, requiredness, disabled and read-only state - per row inside a repeater - for fields and wizard steps.
- Computed values, async and cascading options, change handlers and value normalisation.
- Multi-step wizards with per-step validation and a clickable stepper.
- Dirty and touched tracking, snapshots, resets and server errors.
- Labels,
aria-*wiring, focus management, live announcements and an error summary out of the box. - Theming through
--bit-borm-*CSS custom properties, with light, dark and system colour modes, and every built-in string localizable throughIBormMessageProvider. - Blazor WebAssembly, Server, Web App (including prerendering) and Hybrid on .NET 8, 9 and 10.
For AI agents
The demo site hosts an MCP server at https://borm.bitplatform.dev/mcp (also served through
https://bitplatform.dev/mcp) that answers from the shipped library: its API, its guide, its theme properties and
the demo's working forms, and it can inspect a JSON Schema document you hand it.
Documentation
The full guide - schemas from C# types, the fluent builder, JSON Schema, validation, conditions and wizards, options, computed values, layout, custom renderers, theming, accessibility, localization and hosting models - is in the Borm README. See it running at borm.bitplatform.dev.
| 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. net11.0 is compatible. |
-
net10.0
- Microsoft.AspNetCore.Components.Web (>= 10.0.0 && < 11.0.0)
-
net11.0
- Microsoft.AspNetCore.Components.Web (>= 11.0.0-rc.1.26425.128 && < 12.0.0)
-
net8.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.0 && < 9.0.0)
-
net9.0
- Microsoft.AspNetCore.Components.Web (>= 9.0.0 && < 10.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Bit.Borm:
| Package | Downloads |
|---|---|
|
Bit.Borm.FluentValidation
FluentValidation integration for Bit.Borm. UseFluentValidation() runs a model's FluentValidation validator alongside the schema's own rules and puts every failure on the field its property path names. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 11.0.0-pre-10 | 0 | 10/20/2026 |