Most forms get in the way. Formidable gets out of it.
Formidable is xfunc's open-source form layer for Blazor applications: free, tested and already at work on real client forms.

Why I built it
You've met these forms. They tell you you're wrong before you've finished typing. They make you hunt for what's wrong. They wait until the last step to ask for something you don't have to hand, then won't let you save, so you start again.
In my experience, most forms end up that way because the tools make it the easy path, not because anyone wanted it. I care about the person on the other side of the form. Formidable is the validation layer I kept wishing existed: published as an open-source library anyone can use, and covered by tests.
It's already at work on a real client's forms, and the live demo, the code, the tests and the documentation are all public.
Tim Schneider, principal
What your users get
Messages when they help, not before
A field nobody has touched stays quiet. Once someone has engaged with it, it says what would actually stop the save.
Save now, finish later
A lenient draft saves what's there so far; the full checks run at submit. Someone missing one document can save and come back.
Every problem in one place
At submit, a summary lists what needs fixing, based on what is on screen at the time.
No surprises at the end
The same rules run in the browser and on the server, so a rejected save points at the exact field instead of a generic error.
Long lists that keep track
Add, remove or reorder rows, and every message stays with the row it belongs to.
Built the way we build for clients
Formidable came out of a real Blazor engagement. If you need a form-heavy business application built, and left behind with tests, documentation and a codebase your team can run, that is what we do.
Adelaide-based, working across Australia.
For developers
Building forms in Blazor yourself? Formidable is free and MIT-licensed. Your FluentValidation validators, all the way to the browser: Draft and Submit profiles, progressive disclosure, row-stable collections, and one wire format shared by client and server. Try the demo, read the docs, open an issue. Let's make better forms.
Packages
Your models and validators reference Formidable only. A Blazor client adds Formidable.Blazor; an API adds Formidable.AspNetCore. Neither depends on the other.
| Package | Depends on | Contents |
|---|---|---|
| Formidable | Depends on: FluentValidation + Microsoft. | Validation profiles, ProfiledValidator<T> and DraftSubmitValidator<T>, the IModelValidator seam, ValidationIssue and ValidationReport, model introspection. No Blazor dependency. |
| Formidable. | Depends on: Formidable + Microsoft. | The validation engine (EditContext integration, field registry, validation flows) and the headless component kit. |
| Formidable. | Depends on: Formidable + ASP. | A minimal-API endpoint filter and an MVC [Validate] action filter, returning ValidationProblemDetails in the path format the Blazor client consumes. |
dotnet add package Formidable.BlazorThe quickstart, the concepts and the full reference are in the documentation.