AdminLTE 4.0.4 is a quality patch driven by a full-code audit of the template — JavaScript, Sass, demo markup, packaging, and the accessibility layer. No breaking changes; upgrading from any 4.0.x is drop-in.
Heads-up for npm users: 4.0.3 was tagged but never published to npm, so this release moves the registry directly from 4.0.2 to 4.0.4. The npm package is also much leaner now — it ships the library (CSS/JS/Sass/TS sources) without the demo HTML, dropping from 12.7 MB to 9.0 MB unpacked.
Fixes
- Every dist stylesheet shipped the docs-site styles twice — a duplicated Sass import cost ~23 KB in each of the four CSS bundles. Removed once and locked in with tighter bundlewatch budgets.
- Accessibility module keyboard handling: removed a document-edge Tab wrap that acted as a page-level keyboard trap (WCAG 2.1.2); arrow keys are no longer intercepted while typing in inputs/textareas/selects; modal focus now restores to the actual triggering element (and respects
[autofocus]). - Hotwired Turbo: skip links, the live region, and the sidebar overlay are no longer duplicated on every Turbo navigation when restoring cached snapshots (follow-up to the Turbo support shipped in 4.0.3, #6059).
- Card widget:
remove()now actually removes the card from the DOM (hidden form fields no longer keep submitting); toggling collapse mid-animation reverses it instead of being swallowed; widget events dispatch on the toggle button rather than a clicked icon. - Slide animations are cancelable — rapid-toggling a treeview or card no longer desyncs its display state.
- Treeview: fixed an accordion guard that could slide an already-open menu shut; submenu toggles now expose
aria-expandedto assistive tech. - PushMenu: sidebar state now reacts only to genuine breakpoint crossings via
matchMedia— mobile URL-bar/keyboard resizes no longer re-expand a sidebar you collapsed; fixed a 992px off-by-one between JS and CSS. - Callout variants never recolored links/inline code (two custom properties were referenced but never defined); the user-menu footer used a Bootstrap token that doesn't exist in 5.3.
- Demo pages: added the missing forgot-password page (a dead link on both login pages since 4.0.0); Bootstrap JS CDN pin now matches the compiled CSS (5.3.8); removed the non-functional navbar-search button; every page has a proper
<h1>; breadcrumbs are navigation landmarks; all icon-only buttons carryaria-labels; auth forms have real labels and<main>landmarks.
Maintenance
- npm packaging hardened: the package is now built from a
filesallowlist instead of.npmignore, so stray local files can never leak into the tarball again, andengines: node >= 20is declared. - ACCESSIBILITY-COMPLIANCE.md rewritten as an accurate accessibility statement — what's implemented, what's partial, and the roadmap — replacing the aspirational checklist. Demo meta descriptions updated to match.
Install
npm install admin-lte@4.0.4<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.4/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.4/dist/js/adminlte.min.js"></script>Full details in the CHANGELOG.