What happens
After installing livewire/blaze (with no other changes), every <flux:select> / dropdown on a page becomes unstyled and unselectable. The console shows an uncaught error thrown from flux.js:
Uncaught TypeError: Cannot read properties of undefined (reading 'activate')
at refresh (flux.js:5790)
at displayEmptyAndCreateOptions (flux.js:5845)
at HTMLElement.mount (flux.js:5648)
The throw aborts the rest of flux.js initialization, so all Flux selects on the page lose their JS behavior/styling — not just the offending one.
Trigger
A <flux:select searchable> that contains a <flux:select.option.create> and is empty on first load (e.g. a backend-searched picker whose options only populate after the user types):
<flux:select searchable variant="listbox" wire:model="categoryId">
{{-- options come from a backend search; empty on first paint --}}
<flux:select.option.create wire:click="startCategoryCreate">Create new</flux:select.option.create>
</flux:select>
Internally, the parent <ui-options>.mount() runs displayEmptyAndCreateOptions() and reaches create._activatable.activate(true) before the child <ui-option-create> custom element has mounted (so _activatable is still undefined).
It is NOT the fold layer
I published flux/select/options.blade.php and flux/select/option/create.blade.php and removed their @blaze(fold: true) directive — verified via ComponentSource that Blaze now reports fold: NULL for both. The crash persisted. Folding emits identical HTML, so it can't change the runtime custom-element mount order; the breakage comes from Blaze's compile/memo layer changing how Livewire morphs / the element connect–disconnect lifecycle. Confirmed by toggling BLAZE_ENABLED=false — selects work again immediately.
Workaround
BLAZE_ENABLED=false (or removing livewire/blaze) fully resolves it. There's no per-component / per-layer opt-out that helps, since fold isn't the cause.
Related
Versions
- livewire/blaze v1.0.12
- livewire/flux + flux-pro v2.14.1 (also reproduces on v2.15.0 — flux.js still unguarded, select views still ship
@blaze(fold: true))
- livewire/livewire v4.3.1
- Laravel 13, PHP 8.4, Tailwind 4
What happens
After installing
livewire/blaze(with no other changes), every<flux:select>/ dropdown on a page becomes unstyled and unselectable. The console shows an uncaught error thrown fromflux.js:The throw aborts the rest of flux.js initialization, so all Flux selects on the page lose their JS behavior/styling — not just the offending one.
Trigger
A
<flux:select searchable>that contains a<flux:select.option.create>and is empty on first load (e.g. a backend-searched picker whose options only populate after the user types):Internally, the parent
<ui-options>.mount()runsdisplayEmptyAndCreateOptions()and reachescreate._activatable.activate(true)before the child<ui-option-create>custom element has mounted (so_activatableis stillundefined).It is NOT the
foldlayerI published
flux/select/options.blade.phpandflux/select/option/create.blade.phpand removed their@blaze(fold: true)directive — verified viaComponentSourcethat Blaze now reportsfold: NULLfor both. The crash persisted. Folding emits identical HTML, so it can't change the runtime custom-element mount order; the breakage comes from Blaze'scompile/memolayer changing how Livewire morphs / the element connect–disconnect lifecycle. Confirmed by togglingBLAZE_ENABLED=false— selects work again immediately.Workaround
BLAZE_ENABLED=false(or removinglivewire/blaze) fully resolves it. There's no per-component / per-layer opt-out that helps, sincefoldisn't the cause.Related
searchableto aflux:selectwhich has the 'create' as a modal throws a JS error flux#2309 — samecreate._activatable is undefinederror; fixed for the non-Blaze runtime case, but Blaze re-creates the "empty on first load" condition at the static/compile layer.@blazefrom the component. Suggests this may need the same treatment for the select/create path, or a guard in flux.js.Versions
@blaze(fold: true))