jeffersongoncalves/filament-bladewind
Integrates Bladewind UI components into Filament admin panels, letting Laravel developers use Bladewind's clean, accessible Blade components alongside Filament resources, forms, and tables for consistent, modern interfaces.
BladeWind 3.0.2 is a drop-in performance release: no API or config changes are called out, so upgrading is a composer update and (for a Filament panel) a page reload. Do that first, then confirm the win before touching anything else.
config/bladewind.php for the store/driver and any TTL knob. The package now writes "one key each" to your cache store — theme split, rule index, runtime-token scan — so the store is now part of your runtime dependency graph, not just a session/queue detail.php artisan tinker → Cache::get(...), or redis-cli --scan --pattern '*bladewind*'). Seeing those keys is the fastest proof the upgrade took effect.If you were running this under Octane before, treat 3.0.2 as a behaviour change worth a smoke test, not just a speed-up — see Gotchas.
Pick a real, shared cache store in production. The whole release hinges on the cache being reachable and persistent across requests. file works on a single box; multi-server or autoscaled setups need Redis/Memcached/DynamoDB, otherwise every node rebuilds independently and you keep paying the cold cost per node.
Warm on deploy, not on first visitor. After php artisan optimize / route caching, hit one representative panel page and one Livewire-heavy page as part of your deploy script (a curl against a health-ish route is enough). That turns a ~440 ms cold page into a warm one for the first real user, and it prevents a thundering herd of workers all building the same index simultaneously.
Rely on the invalidation, don't hand-roll it. The split and index key off the theme's content hash; the JS scan keys off the scripts' modification times. Editing your theme or republishing Filament assets invalidates automatically. Don't add your own Cache::forget calls around theme edits — you'll just race the hash check and cause redundant rebuilds.
Use the fast path as a design signal. An update that renders no class the page lacks now returns before touching the index. That makes the common Livewire interaction essentially free, but it also means the cost profile is dominated by pages that introduce new classes. Batch-y UI (filters, tabs, modals revealing new utility sets) is cheap; a component that mints a fresh arbitrary-value class on every keystroke is not.
Keep class names static where you can. Prefer a match/array map over string interpolation for dynamic variants (text-[{{ $size }}] style constructs defeat the index and the fast path alike). Where you genuinely need dynamic utilities, safelist them so they're known at build time rather than discovered at render time.
Disable or swap the store in tests. Because the cache is now load-bearing, tests that assert on rendered classes can become order- and store-dependent. Point the package at the array store (or its enable flag, if present) in phpunit.xml so each test starts clean rather than inheriting a warm index from a previous test or a stale one from your dev cache.
Under Octane, re-verify. Previously the memoisation was per PHP process, which under Octane meant per worker — a deploy could leave a worker serving the old split until it recycled. The content-hash keying fixes that, but it's a change in staleness semantics: confirm a theme edit is picked up without a worker restart, because your deploy runbook may have been written around the old behaviour.
php artisan cache:clear is now a performance event, not a no-op. It discards the split, the index and the scan, so the next few requests pay the full cold cost. Avoid it in deploy hooks that run after traffic is shifted; if you must clear, re-warm immediately after.COPY in Dockerfiles) often produce fresh mtimes on every deploy, so you'll see one rebuild per release — fine. The bad case is inconsistent mtimes across nodes sharing one Redis: two nodes disagree, each invalidates the other's entry, and you thrash. Normalise asset mtimes in the image, or accept that the scan rebuilds once per node.file store.How can I help you explore Laravel packages today?