luttje/livewire-gloom
Gloom brings effortless dark mode to your Livewire apps. Add a simple theme toggle, persist each user's preference, and sync cleanly with Tailwind's dark class—so your components switch themes instantly, with no flash and minimal setup.
luttje/livewire-gloom is a Livewire companion package: its release line is versioned in lockstep with Livewire itself, so the major version you install is dictated by the Livewire major you already run. 4.0.0 exists to pair with Livewire 4; 3.3.3 is the last line that pairs with Livewire 3.
Minimal path:
composer show livewire/livewire | grep versions
# Livewire 4 project
composer require luttje/livewire-gloom:^4.0
# Livewire 3 project (stay here for now)
composer require luttje/livewire-gloom:^3.3
php artisan vendor:publish --provider="Luttje\LivewireGloom\LivewireGloomServiceProvider"
wire: interactivity in the browser before wiring it into anything else.Where to look first: the package's README and composer.json on the 4.0.0 tag (the constraint tells you more about compatibility than the release notes do), then the diff of src/ between 3.3.3 and 4.0.0.
Pin by Livewire major, upgrade in lockstep. Treat the two version numbers as a single unit. A useful habit is a composer.json constraint pair plus a CI matrix job that proves the pair installs together:
"require": {
"livewire/livewire": "^4.0",
"luttje/livewire-gloom": "^4.0"
}
Upgrade in a branch, behind a feature flag. Because the release explicitly disclaims stability, gate the new components behind a config flag or a Blade conditional so you can flip back without a redeploy of the whole UI.
Wrap the package's components in your own. Create thin app-level wrappers (resources/views/components/ui/*.blade.php) that forward to the Gloom components. When the next major lands, you edit one wrapper file per component instead of grepping every view. This is also where you normalise prop names and add your own defaults.
Override views rather than editing vendor. If the package allows view publishing/overriding, put overrides under resources/views/vendor/... and record which files you've overridden in a short list in the repo. Every major bump, diff your overrides against the newly published originals.
Test at the Livewire level, not just the HTTP level. Livewire component packages break in ways HTTP assertions don't catch. Use Livewire::test() for anything interactive, and add a smoke test that renders each component you actually use — that's your regression net for a major bump.
Stage the rollout. Install 4.0.0 on a branch, run the full suite, then ship to a staging environment and click through the specific screens that use the package. Only then merge.
ramsey/composer-install, nick-fields/retry, dependabot/fetch-metadata) — CI plumbing that never reaches your vendor/ directory. The actual consumer-facing change is almost certainly the Livewire constraint in composer.json. Read that diff directly; don't infer behaviour from the notes.composer why-not luttje/livewire-gloom ^4.0 and composer why-not livewire/livewire ^4.0 will name the exact package holding you back. Mismatched majors here fail at install time, not runtime, which is the good outcome.vendor:publish --force into a scratch directory and diff before overwriting anything.How can I help you explore Laravel packages today?