Modern HTML Replaced Your UI Framework (You Just Didn’t Notice)

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:

:white_check_mark: It works everywhere

:white_check_mark: It’s stable

HTML rarely has breaking changes.
Frameworks do — constantly.

:white_check_mark: It’s inspectable

Developers can read it in DevTools and understand it instantly.

:white_check_mark: It’s portable

No transpilation.
No runtime dependency.
No lock-in.

:white_check_mark: 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.