Livewire v4.4.3 Released: Bug Fixes, Performance Improvements & Alpine 3.17.1
Livewire #Livewire #Laravel #PHP #Alpine.js #Release Notes

Livewire v4.4.3 Released: Bug Fixes, Performance Improvements & Alpine 3.17.1

4 min read Mohamed Said Mohamed Said

Livewire v4.4.3 Is Out — Here's Everything That Changed

Released on 31 August 2026, Livewire v4.4.3 is a focused patch release packed with 24 pull requests. It addresses a broad range of bugs, tightens up edge-case behaviour, and ships a bundled upgrade to Alpine.js 3.17.1. If you are running Livewire 4.x in production, this update is worth applying promptly.


Key Fixes

wire:loading Now Restores Attributes and Classes

A long-standing annoyance is resolved: after a wire:loading state ends, Livewire now correctly restores any pre-existing HTML attributes and CSS classes that were present on the element before loading began. Previously those values could be lost after the loading cycle completed.

Uninitialized Form Properties Reset Correctly

Calling reset() on a form object that contained uninitialized properties no longer throws errors or produces unexpected state. The fix ensures the reset path handles properties that were never explicitly set during mount().

URL Properties Preserve Structured Strings

When a component property is bound to the URL via #[Url], structured string values (such as JSON-encoded data or comma-separated lists) are now preserved faithfully instead of being mangled during hydration.

Islands Survive Nested Blade Directives

Livewire islands are now preserved correctly when they appear inside nested Blade directives. Previously, certain directive nesting patterns caused islands to be dropped from the rendered output.

Script Module Suspension

Two related PRs introduce smarter handling of JavaScript ES module scripts:

  • Component trees are now suspended until their required script modules have fully loaded, preventing components from initialising against an incomplete JS environment.
  • Script modules are prefetched before the page actually needs them, reducing the perceived latency of first interaction.

Model Reuse Across Properties

When multiple Livewire properties resolve to the same Eloquent model, Livewire now reuses the already-resolved model instance instead of querying the database again. This can meaningfully reduce query counts in components with several model-typed properties.

wire:dirty Stays Subscribed

wire:dirty bindings now remain subscribed to every target element they track, fixing cases where dirty indicators stopped responding after a partial DOM update.


Other Notable Changes

  • $attributes in lazy placeholder views$attributes passed to a lazy component are now available inside its placeholder() view.
  • wire:poll minute durations — You can now specify poll intervals in minutes (e.g. wire:poll.1m) rather than only seconds or milliseconds.
  • wire:intersect continuous visibility timing — A new continuous visibility timing option has been added, giving finer control over intersection-triggered behaviour.
  • wire:sort:item late-added attributes — Attributes added to sortable items after initial render are now picked up correctly.
  • SupportPageComponents listener cleanup — The render listener is now properly removed when a component skips rendering or throws an exception, preventing memory leaks in long-running processes.
  • wire:transition after Flux toast dismissal — A bug where wire:transition was skipped after a Flux toast auto-dismissed has been resolved.
  • Redirect responses excluded from returns effect — Redirect responses are no longer incorrectly included in the component's returns effect payload.
  • Array-shaped synthesizer guard — Property updates now validate array-shaped synthesizers before processing, preventing type errors on malformed payloads.
  • Unnecessary validation data unwrapping removed — An internal optimisation avoids redundant unwrapping of validation data structures.
  • TypeErrors surfaced in testsTypeErrors thrown during Livewire test runs are now propagated correctly across all supported Laravel versions.
  • Alpine.js bumped to 3.17.1 — The bundled Alpine version has been updated.
  • FrontendAssets return types — Public methods on FrontendAssets now carry explicit PHP return type declarations.
  • Component instance shared with island views — The parent component instance is now shared with views rendered during an island render pass.

Quick Takeaways

  • wire:loading no longer strips existing attributes/classes from elements.
  • URL-bound properties now handle structured strings without corruption.
  • Script modules are prefetched and components suspend until modules are ready.
  • Eloquent model resolution is deduplicated across properties in the same component.
  • wire:poll now accepts minute-based intervals.
  • Alpine.js 3.17.1 is bundled.
  • TypeErrors in tests are reliably surfaced across Laravel versions.

Update via Composer:

composer update livewire/livewire

Review the full diff at the official v4.4.3 release page.

Found this useful?

Frequently Asked Questions

3 questions
Q01 What does the wire:loading attribute restoration fix in Livewire v4.4.3 mean for my components?
Before v4.4.3, any HTML attributes or CSS classes already present on an element could be lost after a wire:loading cycle completed. The fix ensures those original attributes and classes are fully restored once the loading state ends, so your UI no longer loses styling or behaviour after a Livewire request.
Q02 How does script module suspension work in Livewire v4.4.3?
Livewire now holds a component tree in a suspended state until all required JavaScript ES modules have finished loading. It also begins fetching those modules earlier in the page lifecycle. Together, these changes prevent components from initialising before their JS dependencies are ready and reduce the delay before a component becomes interactive.
Q03 Can I now use minute-based intervals with wire:poll in Livewire 4.x?
Yes. Livewire v4.4.3 adds support for minute durations in wire:poll, so you can write wire:poll.1m or similar instead of converting to milliseconds manually.

Continue reading

More Articles

View all