Modern HTML & CSS Are the UI Library
For years, the default answer to “How do I build a UI?” has been:
Use React
Use Angular
Use a component library like Telerik, MUI, or Bootstrap
That advice made sense 10 years ago.
It makes far less sense today.
Modern HTML and CSS have quietly absorbed huge portions of what UI frameworks used to justify themselves for — and most teams haven’t noticed.
This post shows how far plain HTML + CSS has come, how much payload you can avoid, and why building a native, framework-agnostic UI library is now not only possible — but often the better architectural choice.
The Hidden Cost of “Just Use a Framework”
Before we even look at code, let’s talk about downloads.
Typical UI stack sizes (approximate, min+gzip)
That’s before:
And that cost is paid:
All for functionality that the browser increasingly gives you for free.
Modern HTML Has Grown Up
HTML is no longer just <div> and <span>.
Today, browsers ship semantic, accessible, interactive primitives that used to require thousands of lines of JavaScript.
Let’s look at what you can do without a framework.
Modal Dialogs — No Framework Required
The <dialog> element is a native modal dialog with built-in accessibility.
What you get for free:
Ten years ago, this was a framework feature.
Today, it’s a browser feature.
Accordions — Native and Accessible
Accordions no longer require state management or JavaScript.
This supports:
Dropdowns and Menus — Semantic HTML First
You don’t need custom components to express intent.
This is:
The behavior layer can be added later — without changing the markup.
Toast Notifications — HTML + ARIA
Even transient UI like toasts no longer require a framework.
ARIA handles:
Your CSS handles layout and animation.
Tooltips and Popovers — Standards, Not Components
Tooltips can be entirely CSS-driven.
Modern browsers also support native popovers:
No framework.
No lifecycle hooks.
No state containers.
Focus Management — Built In
Focus trapping, tab order, and keyboard interaction used to be a framework selling point.
With modern HTML:
You’re aligning with the browser instead of fighting it.
Why This Changes How You Build UI Libraries
When your UI library is HTML + CSS:
It works everywhere
It’s stable
HTML rarely has breaking changes.
Frameworks do — constantly.
It’s inspectable
Developers can read it in DevTools and understand it instantly.
It’s portable
No transpilation.
No runtime dependency.
No lock-in.
It’s smaller
Measured in kilobytes, not megabytes.
A More Flexible “Native” UI Library
Instead of shipping components, you ship patterns:
-
design tokens (colors, spacing, typography)
-
layout utilities (grid, stack, flow)
-
component classes (buttons, cards, forms, dialogs)
-
optional behavior hooks (
data-*attributes)
Your consumers decide:
You stop exporting opinionated components
and start exporting capability.
This Is Not Anti-Framework — It’s Anti-Overkill
Frameworks still have a place:
But most internal business apps don’t need:
They need:
Modern HTML and CSS already deliver that.
Final Thought
We spent a decade compensating for missing browser features.
The browser caught up.
Now it’s time our architectures did too.
If your UI library can be:
…and all it takes is trusting the platform again?
That’s not regression.
That’s maturity.
