What actually changed in Stratos UI
Priya Nadkarni
27 July 2026 · 9 min read
v6-dev branch.
Why a major version
older UI frameworks shipped in 2021, and the platform moved a long way underneath it.
Cascade layers landed. color-mix() and oklch() became
broadly usable. <dialog> grew a real top layer, a focus trap
and a backdrop. Stratos UI is largely the framework catching up to all of it —
and deleting the JavaScript it no longer needs.
The upgrade is not a rename pass. Grid classes, colour utilities, three component names and the entire JavaScript entry point all change. Budget for a rewrite of your markup, not a find-and-replace.
Responsive prefixes move to the front
The infix is gone. Breakpoints and pseudo-states are now prefixes with a colon, which reads much closer to Tailwind:
.d-md-nonebecomes.md:d-none.col-md-6becomes.md:col-6.opacity-50-hoverbecomes.hover:opacity-50xxlis renamed2xl
Breakpoint values moved too — lg from 992px to 1024px,
xl from 1200px to 1280px, and 2xl to 1536px. If your
layout was tuned to the old numbers, it will shift.
Per-colour classes become theme tokens
This is the change with the widest blast radius. Every
.btn-primary, .alert-success and
.bg-danger variant collapses into a composition:
A component picks its shape, and a
.theme-*class supplies the colour..btn-primaryis now.btn-solid .theme-primary.
Adding .theme-primary sets --theme-bg,
--theme-fg, --theme-border and friends, which the
component reads. The upside is that one token works across buttons, badges,
alerts, tables, cards and accordions — and your own components can read the same
variables.
Three components became native elements
Modal is now Dialog, built on <dialog>. Offcanvas is now Drawer,
also a <dialog>. Accordion is now
<details>/<summary>, with the
name attribute replacing data-bs-parent.
The practical effect is that Stratos UI deleted util/backdrop,
util/focustrap and util/scrollbar outright. The browser
does that work now, and it does it better — find-in-page can open a closed
<details>, which no div-based accordion ever managed.
The JavaScript is ESM-only
No more UMD bundle, and therefore no more window.bootstrap. Script
tags need type="module", and global calls become imports:
import { Tooltip } from 'bootstrap'
const tip = Tooltip.getOrCreateInstance(el)
Data attributes are untouched. If you only ever wrote
data-bs-toggle="modal", the migration is renaming that to
dialog and adding type="module".
Should you upgrade yet
Not for production. There is no npm release, the branch is taking several commits
a day, and the alpha still has rough edges — a closed .dialog
currently keeps its layout space, and Combobox logs a console error on every
instance.
It is worth building something now, though. The component set is genuinely ahead of v5 — Combobox, Datepicker, OTP, password strength and nav overflow have no v5 equivalent — and the markup changes are large enough that you want the learning done before the real alpha lands.