emaia/laravel-hotwire
Laravel Hotwire brings Turbo and Stimulus to your Laravel app, trimming JavaScript while keeping pages fast and reactive. Integrates seamlessly with Blade, delivering SPA-like navigation with minimal setup.
response()->modal()/sheet()/drawer()->open(...)) cover opening, returning content, and instance-scoped closing. That is a meaningful amount of interaction plumbing we would otherwise own.returnFromOverlay() paired with <hw:overlay-return> and the opener’s overlay-return prop) mean we can ship edit-in-place, nested create flows, and partial-update dialogs where validation errors and returned HTML land in the correct parent region. PMs can scope richer in-context editing into roadmap items that previously looked like they required a custom SPA-style renderer.closeOverlay($origin)) with late responses unable to affect a later opening, plus safe failure when a return destination is replaced, converts a class of “stale modal overwrote my form” bugs into handled behavior. This supports committing the component library to critical flows like checkout-adjacent forms and admin editing.modal-auto-close, replaces marker appends with closeOverlay(), requires concrete instance IDs for frame-backed openings (use $request->overlayOrigin() and guard null), and requires rebuilding published controller assets. PMs should budget an upgrade spike for any existing overlay integrations rather than treating this as a drop-in minor bump—and should note the package moved 0.81 → 0.83 with a breaking change, so pinning and scheduled upgrades remain necessary.error-focus on <hw:form> focuses the first eligible invalid control after validation, including delayed Rich Text initialization, and focus returns to the Dropdown/Popover trigger when an overlay’s opener is no longer focusable. These are recurring accessibility audit findings we can close without dedicated engineering work.host:, result:, and package-managed renderers are unsupported; composition happens via application-owned fragments or native Turbo Frames. That is a deliberate trade: less magic, more predictable debugging, but our team owns fragment composition. PMs should treat this as a design constraint when estimating overlay-heavy features.modal-auto-close and changes frame-backed overlay identity, which is real migration work. Existing integrations that depend on package-managed return renderers (host:, result:) or on the previous static overlay close semantics will need rework; teams without bandwidth for that should defer. Static overlays now close by root ID, and stream openings require explicit origin: and source: when a fragment contains a form—worth verifying against current markup before committing.response()->modal()/sheet()/drawer()->open(...), returnFromOverlay($origin, $content) targeting <hw:overlay-return>, and instance-scoped closeOverlay($origin); late responses cannot affect later openings and replaced return destinations fail safely. Validation gains opt-in error-focus on <hw:form> (handles delayed Rich Text init) and focus returns to Dropdown/Popover triggers when the original opener is unfocusable. Upgrade notes: modal-auto-close removed—replace marker appends with closeOverlay(), delete any published controller copy, rebuild assets; frame-backed openings now have concrete instance IDs, so use $request->overlayOrigin() and guard null for actions also serving page requests; static overlays close by root ID; stream openings need explicit origin: and source: for fragments containing forms. Do not expect package-managed return renderers. Tiptap dependency group moved to 3.32.0 with dev tooling refreshed.How can I help you explore Laravel packages today?