github ColorlibHQ/AdminLTE v4.2.0
AdminLTE 4.2.0

4 hours ago

AdminLTE 4.2.0 is a focused release that mostly answers one question the community kept asking: how do I stop AdminLTE from managing my theme? It also ships the lifecycle API that client-side rendered layouts have been waiting for, plus three new demo pages.

Highlights

Color mode gets out of your way

Applications with their own theming — a custom Bootstrap theme, a per-user preference rendered by Laravel or Django, or simply your own switcher — can now turn the bundled module off with a single attribute. No JavaScript, no load-order concerns, works straight from dist:

<html data-lte-color-mode="off">

ColorMode then never writes data-bs-theme: not on load, not when a [data-bs-theme-value] toggle is clicked, not when the OS preference changes. The pre-paint snippet in <head> honours it too, so nothing touches your theme before first paint either.

And if all you need is a server-rendered default, you no longer have to opt out at all. The theme is now resolved from the visitor's stored choice → the theme your page declared → the OS preference, so this survives both page load and later OS preference changes:

<html lang="en" data-bs-theme="dark">

It stays a default: the moment a visitor picks a theme themselves, their choice wins on that device.

Thanks to @cytech for the report (#6084), and to @dfsmania (#6093) for putting markup-as-a-preference on the table in the first place.

initialize() / teardown() for client-side rendered layouts

Frameworks that build the layout after DOMContentLoaded into a persistent <body> — GWT and similar widget toolkits — used to find no sidebar and no menu when AdminLTE ran its init pass. Two new exports fix that:

import { initialize, teardown } from "admin-lte"

initialize() // re-run every plugin's init against the DOM as it stands right now
teardown()   // drop this cycle's listeners when you unmount the layout

initialize() is safe to call repeatedly — it tears the previous cycle down first, so listeners never stack. Thanks @themarioga (#6083).

New demo pages

  • forms/advanced.html — the recommended Tom Select and Flatpickr integrations
  • forms/editors.html — Quill 2 in both the snow (toolbar) and bubble (inline) themes
  • layout/top-nav.html — a sidebar-less layout with primary navigation in the app-header

Fixes

  • A sidebar rendered as <body class="sidebar-collapse"> no longer springs open on wide screens — the responsive pass was overwriting the state declared in the markup (#6076, thanks @dfsmania)
  • The Color Mode docs page no longer runs two switchers at once: it still carried the pre-4.1 inline toggler, which bound its own handlers to the same buttons as the bundled module and persisted to a different localStorage key

Maintenance

Every dev dependency refreshed to its latest release, including the eslint-plugin-astro 3 and eslint-plugin-unicorn 73 majors. TypeScript stays on 6.0.3 for now — 7.0 has shipped, but typescript-eslint and @astrojs/check both still cap the peer range, so installing it breaks npm ci outright. The unit suite grew to 51 tests, 13 of them covering the new color-mode precedence chain and the opt-out.

Install

npm install admin-lte@4.2.0
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@4.2.0/dist/css/adminlte.min.css" />
<script src="https://cdn.jsdelivr.net/npm/admin-lte@4.2.0/dist/js/adminlte.min.js"></script>
// Or as a module
import { PushMenu, ColorMode } from "admin-lte"

Full details in the CHANGELOG.

Don't miss a new AdminLTE release

NewReleases is sending notifications on new releases.