01Blazor: Beginner to Intermediate · Part 1 Hello, Blazor: Set Up and Build Your First App Install the .NET SDK and build your first Blazor app. See it run in the browser, the start of a hands-on series from zero to intermediate. Jul 30, 2026 · 6 min read →
02Blazor: Beginner to Intermediate · Part 2 Anatomy of a Blazor Project: Every File Explained A guided tour of every file in a new Blazor project. Program.cs, App.razor, Routes.razor, layouts and wwwroot, so nothing feels like magic. Jul 30, 2026 · 6 min read →
02Blazor vs React vs Angular · Part 2 The Same Todo App in Blazor WebAssembly and Blazor Server, Built by Claude Code Two Blazor builds from one spec, step by step. Why Blazor Server's second step cost 85 turns, where WebAssembly and Server diverged, and what the AI got wrong. Nov 5, 2026 · 9 min read →
03Blazor: Beginner to Intermediate · Part 3 Blazor Components: Build Once, Use Everywhere Components are Blazor's LEGO bricks. Build a reusable PatientCard, pass data in with parameters, and compose a page from pieces. Jul 30, 2026 · 6 min read →
05Blazor vs React vs Angular · Part 5 Blazor vs React vs Angular in 2026: Bundle Size, Speed, Memory, and How Well AI Builds Each Blazor vs React vs Angular, measured on one app. Bytes, Lighthouse, a 10,000-row list, memory, lines of code, axe, and how many AI turns each build took. Nov 5, 2026 · 13 min read →
07Blazor: Beginner to Intermediate · Part 7 Blazor Forms and Validation, the Friendly Way Build a complete add-patient form in Blazor. Collect input with EditForm, validate with data annotations, and show friendly error messages. Jul 30, 2026 · 7 min read →
12Blazor: Beginner to Intermediate · Part 12 Blazor Render Modes: SSR, Server, WebAssembly — and What's Next How each Blazor render mode works in .NET 10. Static SSR, Interactive Server, WebAssembly and Auto, how to choose, and where to go next. Jul 30, 2026 · 7 min read →
01Blazor vs React vs Angular · Part 1 How We Compared Blazor, React and Angular: One Spec, Four Clients, One Test Suite The method behind the comparison. One spec, one API, one frozen suite of 61 tests, four clients built by headless Claude Code sessions, and seven hypotheses. Nov 5, 2026 · 8 min read →
05Blazor: Beginner to Intermediate · Part 5 Rendering Lists and Conditionals in Blazor Render collections with @foreach and empty states with @if. Then build a searchable patient list, the bread and butter of real UIs. Jul 30, 2026 · 6 min read →
09Blazor: Beginner to Intermediate · Part 9 Services and Dependency Injection in Blazor Move shared logic into services and let DI deliver them. Singleton, scoped and transient lifetimes explained in plain words. Jul 30, 2026 · 6 min read →
11Blazor: Beginner to Intermediate · Part 11 Calling Web APIs from Blazor with HttpClient Fetch live data with HttpClient and GetFromJsonAsync. Handle loading and errors gracefully, and display API results in your UI. Jul 30, 2026 · 6 min read →
Fixes Blazor: 'An unhandled error has occurred' shows on every page after deleting the template CSS The Blazor error banner shows on every page. It is always in the layout markup and only hidden by a display:none rule in the template CSS you deleted. Sep 4, 2026 · 2 min read →
Fixes Blazor: 'A valid antiforgery token was not provided with the request' A raw form posted to a static Blazor page returns this 400. The cause, the one-line AntiforgeryToken fix and a curl test are inside. Nov 6, 2026 · 2 min read →
Fixes Blazor: 'Cannot provide a value for property' (no registered service) An @inject service was never registered in Program.cs. Why Blazor fails when it creates the component, and the one-line fix inside. Oct 9, 2026 · 2 min read →
Fixes Blazor: 'Headers are read-only, response has already started' Setting a cookie after an await on a streamed Blazor page fails. Why StreamRendering sends the headers early, and the fix inside. Oct 9, 2026 · 2 min read →
Fixes Blazor: 'The POST request does not specify which form is being submitted' A static Blazor form was posted without a name. Give EditForm a FormName or the form a @formname, and the POST reaches its handler. Sep 25, 2026 · 2 min read →
Fixes Blazor: 'JavaScript interop calls cannot be issued at this time' during prerendering JavaScript is not reachable while Blazor prerenders a component. Move the call to OnAfterRenderAsync(firstRender), or turn prerendering off. Sep 25, 2026 · 2 min read →
Fixes Blazor: 'The current thread is not associated with the Dispatcher. Use InvokeAsync()' A timer called StateHasChanged off the Blazor Dispatcher. Wrap the update in InvokeAsync; left alone, it crashed the whole server process. Sep 25, 2026 · 2 min read →
C# & .NET Blazor Server vs WebAssembly vs Hybrid: Which One, and When Three ways to run Blazor, compared on what actually decides it. Latency, offline, hosting cost, SEO and device access, from an app that shipped on all three. Sep 4, 2026 · 9 min read →
C# & .NET What Is Blazor? Full-Stack Web Apps in C# Blazor lets you build web apps in C# instead of JavaScript. This very site runs on it, and here is how it works and when to choose it. Jul 30, 2026 · 5 min read →
05From Prompt to Production · Part 5 Scaffold to Skeleton: Blazor Server, EF Core and Npgsql From template to skeleton with an AI pair. The SQLite to PostgreSQL swap, the first migration, a seeder, and the rule that makes AI scaffolding safe. Aug 9, 2026 · 8 min read →
08From Prompt to Production · Part 8 Chat, Presence and the 401 That Explains Blazor Server Staff chat with who is online and typing indicators. Plus the AI design that fails first: why an [Authorize] hub 401s from a server-side component. Aug 9, 2026 · 8 min read →
Fixes Blazor Hybrid on Android: content hidden under the status bar, env(safe-area-inset-top) is 0 Your header sits under Android's status bar. The CSS safe-area variables read zero inside the WebView, so the insets must come from the native side. Sep 4, 2026 · 2 min read →
Fixes Blazor serves empty CSS and JS files: MapStaticAssets without ASPNETCORE_ENVIRONMENT=Development Every static file comes back with zero bytes. dotnet run --no-launch-profile means Production, and MapStaticAssets wants published assets there. Sep 4, 2026 · 2 min read →
Fixes Blazor: the h1 shows a focus ring after navigation (FocusOnNavigate and tabindex=-1) FocusOnNavigate moves keyboard focus to your heading. Your :focus-visible rule then draws a ring around it. Keep the focus, lose the ring. Sep 4, 2026 · 2 min read →
Fixes CS0542: member names cannot be the same as their enclosing type (a Blazor @inject named after its page) Queue.razor compiles to a class called Queue. So injecting a member called Queue is illegal. Rename the injected property, not the page. Sep 4, 2026 · 2 min read →
Fixes Blazor: 'InputText requires a value for the ValueExpression parameter' InputText given Value without bind throws at render time. The cause and the @bind-Value fix are inside, tested on .NET 10. Nov 6, 2026 · 2 min read →
Fixes Blazor BL0005: 'Component parameter should not be set outside of its component' BL0005 flags a child parameter set from the parent's code. The cause and the fix that passes the value through markup are inside. Nov 6, 2026 · 2 min read →
Fixes Blazor RZ9985: 'Multiple components use the tag' RZ9985 means two components with one name are in scope. The cause and two fixes, a full namespace tag or one using, are inside. Nov 6, 2026 · 2 min read →
Fixes Blazor CS1503: 'cannot convert from void to EventCallback' on @onclick CS1503 on @onclick means the method was called, not passed. The cause and the two-character fix are inside, tested on .NET 10. Nov 6, 2026 · 2 min read →
Fixes Blazor: 'EditForm requires a Model parameter, or an EditContext parameter, but not both' EditForm got both Model and EditContext, or neither. Pass exactly one with a value; both errors and when EditContext is worth it are inside. Oct 23, 2026 · 2 min read →
Fixes Blazor: 'Found markup element with unexpected name' (RZ10012) RZ10012 means Razor cannot see your component's namespace. Why the tag turns into plain HTML, and the @using fix inside. Oct 9, 2026 · 2 min read →
Fixes Blazor: 'Cannot pass the parameter ChildContent to component with rendermode InteractiveServerRenderMode' Static pages cannot pass delegates to interactive children. Build the content or callback inside the interactive component instead. Sep 25, 2026 · 2 min read →
Fixes Blazor: 'Object of type X does not have a property matching the name Y' (a misspelled parameter) A component was given a parameter it does not declare. Fix the name on the tag, or forward extra attributes with CaptureUnmatchedValues. Sep 25, 2026 · 2 min read →
Fixes Blazor: 'the required endpoints are not mapped on the server' for an InteractiveServer component A render mode was used in an app built without interactivity. Add the two Program.cs calls that turn Interactive Server on, shown here. Sep 25, 2026 · 2 min read →
06Blazor: Beginner to Intermediate · Part 6 Component Communication: Parameters Down, Events Up Parameters flow down, events bubble up. Connect parent and child components with [Parameter] and EventCallback, the Blazor way. Jul 30, 2026 · 6 min read →
08Blazor: Beginner to Intermediate · Part 8 Routing and Navigation: Pages, URLs and Parameters Give every screen an address in your Blazor app. Page routes, route parameters, NavLink and programmatic navigation for a multi-page clinic app. Jul 30, 2026 · 6 min read →
10Blazor: Beginner to Intermediate · Part 10 The Component Lifecycle: What Runs When (and Why) What runs when in a Blazor component, and why. OnInitialized, OnParametersSet and OnAfterRender, where to load data, and the classic mistakes to avoid. Jul 30, 2026 · 8 min read →
04Blazor: Beginner to Intermediate · Part 4 Data Binding and Events: Making Pages Interactive Wire up @onclick and @bind to make pages interactive. Then understand the render loop that keeps your UI in sync with your data. Jul 30, 2026 · 6 min read →
01From Prompt to Pocket · Part 1 From Prompt to Pocket: One App for Phone, Desk and Browser Why ClinicLive's patients deserve an app. Why Blazor Hybrid instead of a rewrite, what a shared-screens architecture costs, and what this season does not cover. Sep 3, 2026 · 9 min read →
05From Prompt to Private · Part 5 Talking to It from .NET: OllamaSharp, Streaming, and a Chat Panel in the Staff Pages ClinicLive gets its first assistant screen. IChatClient over OllamaSharp, a streaming Blazor chat panel, and an answer that proves why the next two parts exist. Sep 18, 2026 · 7 min read →
09From Prompt to Polish · Part 9 Micro-Interactions: Motion That Explains Change Motion should explain change, and nothing runs over 400ms. Reduced motion kills it all, plus the Blazor @key trick that turns CSS animations into update cues. Aug 13, 2026 · 6 min read →
12From Prompt to Production · Part 12 Ship It: A VPS, nginx, systemd — and the Headers SignalR Needs Publish Blazor and SignalR to a Linux VPS. An AI-written runbook, GitHub Actions CI, and the three nginx lines between works locally and works in production. Aug 9, 2026 · 7 min read →
02From Prompt to Polish · Part 2 Foundations: Design Tokens, Dark Mode — and Killing Bootstrap Every color becomes a token, and dark mode is a token swap. Bootstrap is deleted while every page keeps compiling, thanks to the class-vocabulary trick. Aug 13, 2026 · 8 min read →
02From Prompt to Pocket · Part 2 One UI, Three Hosts: The Capability-Interface Pattern One shared Razor Class Library, three hosts, the same screens. Every native feature becomes an interface that each host answers honestly. Sep 3, 2026 · 9 min read →
03From Prompt to Pocket · Part 3 The App Needs a Door: A Thin API Over the Clinic A phone cannot talk to Postgres directly. Four minimal-API endpoints over the season-one services, a shared contracts project, and no CORS anywhere. Sep 3, 2026 · 8 min read →
03Blazor vs React vs Angular · Part 3 The Same Todo App in React 19, Built by Claude Code, Step by Step React 19 built by Claude Code in fifteen sessions. The fewest turns, one library, a whole app in one file, and the test race the model found itself. Nov 5, 2026 · 7 min read →
04From Prompt to Pocket · Part 4 Live Queue in Your Pocket: SignalR, App Lifecycle and a Reconnect That Never Gives Up The phone joins the same hub as the wall TV. One connection per app, a lifecycle capability for resume, and proof that the default reconnect policy gives up. Sep 3, 2026 · 8 min read →
04Blazor vs React vs Angular · Part 4 The Same Todo App in Angular 22, Built by Claude Code, Step by Step Angular 22 built by Claude Code in sixteen sessions. A Node version refusal, a zoneless redraw gap hit three times, and the one retry that fixed a real bug. Nov 5, 2026 · 8 min read →
08From Prompt to Polish · Part 8 The Accessibility Pass: Announce, Don't Just Paint A silently updating board is invisible to a screen reader. aria-live regions, landmarks, a skip link and a contrast audit, with AI as the auditor. Aug 13, 2026 · 7 min read →
08From Prompt to Pocket · Part 8 Scan to Check In: A QR on the Ticket, a Native Scanner Over the WebView A QR on the ticket, a native scanner over the WebView. QRCoder on the server, a ZXing camera page, and a parser test that caught a regex letting bad input in. Sep 3, 2026 · 7 min read →
10From Prompt to Pocket · Part 10 Same App, on the Desk: Windows, One Breakpoint and a Waiting-Room Page The same app on a Windows desk. One CSS breakpoint turns the tab bar into a side rail on every host, a reception queue page, and the toast that stayed open. Sep 3, 2026 · 6 min read →
12From Prompt to Pocket · Part 12 The Pocket Retro: What a Companion App Really Costs The Pocket season, measured and reviewed. The gallery across three hosts, every AI mistake, what the bench could not prove, and whether Hybrid was right. Sep 3, 2026 · 12 min read →
Fixes EF Core: 'A second operation was started on this context instance before a previous operation completed' Two queries ran at once on one DbContext. Why Task.WhenAll and Blazor Server trigger it, and two fixes, sequential awaits or IDbContextFactory. Sep 25, 2026 · 2 min read →