htmxRazor v2.0.0: Platform and DX

htmxRazor v2.0.0: Platform and DX

An interactive playground, a live theme builder, SignalR, and a Kanban board, all on .NET 10 with no breaking changes. htmxRazor v2.0.0 is out today. The six features in this release span three distinct areas: developer tooling in your editor, interactive features on the demo site, and two new library components. This is the first major version since the initial …

Continue Reading
How to Delete and Update Millions of Rows in EF Core Without Loading a Single Entity

How to Delete and Update Millions of Rows in EF Core Without Loading a Single Entity

The Code Every Developer Has Written and Regretted Most EF Core performance disasters are not exotic edge cases. They get written in the first sprint, look clean in code review, and only reveal themselves when row counts hit production scale. The pattern below has ended more than a few on-call rotations badly: On a development database with a few hundred …

Continue Reading
htmxRazor Release Notes for v1.4.0

htmxRazor v1.4.0: SSE Streaming, Multi-step Wizard, and Optimistic UI

v1.4.0 ships today with seven features built around a single theme: the interaction patterns real production applications actually need. Real-time content streaming, multi-step workflows, immediate UI feedback, response-aware forms, and a handful of targeted quality-of-life additions. SSE Stream <rhx-sse-stream> wraps the htmx SSE extension declaratively. One Tag Helper, one server endpoint, no boilerplate: The component renders with hx-ext=”sse”, sse-connect, sse-swap, …

Continue Reading
htmxRazor v1.3.0: Data Table, Accessibility, and Modern CSS

htmxRazor v1.3.0: Data Table, Accessibility, and Modern CSS

v1.3.0 lands today with six features organized around a clear theme: production patterns for .NET developers building server-rendered UIs that work correctly for everyone, including keyboard users and screen reader users. Here is what shipped. Data Table The data table is the feature request I hear most from .NET developers evaluating htmx. Until now there was no MIT-licensed ASP.NET Core …

Continue Reading
htmxRazor 1.2.0: Toast Notifications, Pagination, and the End of CSS Specificity Fights

htmxRazor 1.2.0: Toast Notifications, Pagination, and the End of CSS Specificity Fights

The first feature release after htmxRazor hit 1.1 is here, and it targets the three complaints I hear most from .NET developers building server-rendered apps with htmx: “I need toast notifications,” “I need pagination that works with htmx from the start,” and “your CSS keeps fighting with mine.” Version 1.2.0 addresses all three. Here is what shipped. Toast Notifications That …

Continue Reading
Fencing Tokens and Generation Clock in .NET: Stop Zombie Leaders From Writing

Fencing Tokens and Generation Clock in .NET: Stop Zombie Leaders From Writing

Leader election and leases answer a comforting question: who should be in charge right now. They do not fully answer the dangerous question: who can still write right now. A node can lose its lease, another node can become leader, and the old leader can still push writes through an existing database connection. When that happens, your system is not …

Continue Reading
Stop Wrestling with JavaScript: htmxRazor Gives ASP.NET Core the Component Library It Deserves

Stop Wrestling with JavaScript: htmxRazor Gives ASP.NET Core the Component Library It Deserves

Here is an uncomfortable truth the ASP.NET Core community has been avoiding for too long: server-rendered web development should not require you to adopt React, Vue, or Angular just to get a decent set of UI components. For years, .NET developers have been stuck choosing between two bad options. You can wire up Bootstrap by hand, bolting htmx attributes onto …

Continue Reading
Lease Pattern in .NET: A Lock With an Expiration Date That Saves Your Data

Lease Pattern in .NET: A Lock With an Expiration Date That Saves Your Data

Indefinite locks belong to a world where processes never crash and networks never split. That world does not exist. In a distributed system, “I hold the lock” can mean “I held the lock before my VM paused for 45 seconds.” A lease fixes that by putting a deadline on ownership and forcing the owner to keep renewing that claim. A …

Continue Reading
Leader Election in .NET: Picking One Boss Without Creating Two

Leader Election in .NET: Picking One Boss Without Creating Two

If your service runs on more than one node and still has a single instance assumption, you already have leader election. You just do not have it on purpose. Leader election is the pattern that turns “somebody should run this” into “exactly one node is allowed to run this, and it must keep proving it deserves the role.” This post …

Continue Reading
Distributed System Pattern: Leader and Followers in .NET - One Decision Maker, Many Replicas, Fewer Outages

Distributed System Pattern: Leader and Followers in .NET – One Decision Maker, Many Replicas, Fewer Outages

Distributed systems rarely fail because you picked the wrong cloud service. They fail because two nodes believe they are in charge, both act, and both are “correct” from their own perspective. If your domain has any single authority assumption, and most systems do, you need a way to make that authority real. Leader and Followers is the pattern that turns …

Continue Reading