jonassiewertsen/statamic-livewire
A Statamic addon that integrates Laravel Livewire, letting you build dynamic, reactive components directly inside your Antlers templates and control panel while keeping your familiar Statamic workflow.
Architecture fit. Unchanged. Statamic and Livewire are both first-class Laravel packages — same framework, same container, same routing/session/Blade stack. The integration remains deliberately thin: Antlers tag syntax that resolves to Livewire's @livewire mount directive at render time, plus companion tags for asset injection. Nothing is reimplemented; one templating DSL is mapped onto another's component renderer. Coupling stays low and the blast radius of removal stays small.
Integration feasibility. High for the happy path; the risks remain at the seams rather than in the core function:
wire: attributes passing through an Antlers parse pass.<head>/body-close; in Statamic those are Antlers layouts the team controls, so injection points need explicit verification.Entry::make() date parsing, which is a Statamic data/entry path, not the render path. That widens the assumed surface area — the package appears to touch more than the Antlers→Livewire tag seam, so the spike should scope what else it owns.Technical risk. Materially reassessed. The prior dominant risk — archived status — is no longer supported by the evidence. v3.8.1 is a published patch release with a merged external contributor PR (#73, @johncarter-), which demonstrates that the repository is writable, that PRs are being reviewed and merged, and that a release pipeline exists. That is a genuine and welcome correction to the thesis.
Do not over-correct, however. One patch release and one first-time contributor is evidence of life, not evidence of health:
Revised posture: the fork-or-reimplement decision is now a hedge against bus factor and version drift, not a response to abandonment. That is a cheaper, calmer conversation — but still a decision to make deliberately during the spike rather than at upgrade time.
Key questions for engineering.
Entry::make() date fix implies entry/data handling — enumerate what else the package touches so we are not surprised by a future change in an area we did not know we depended on.Read on the scores. 90 stars / 0 dependents remains a weak adoption signal, but it is no longer compounded by an archived repository. The opportunity score still reflects the pattern — interactive islands on a Statamic site without a JS framework is genuinely underserved — and the package remains the most direct expression of that pattern. Adopt the pattern with intent: take the artifact, pin it, and keep the fork path open rather than exercising it by default.
Stack fit. Unchanged. Laravel + Statamic + Livewire is a single-vendor-family stack: one Composer manifest, one deploy artifact, no new runtime, no Node build step, no separate API surface. For a team already on Statamic, this is the lowest-friction path to interactivity short of hand-written Alpine.
Migration path. None required — additive rendering layer, no schema, no data migration, no content model change. The decision is still ownership, but the default has shifted:
Compatibility. Pin Composer constraints explicitly; add a CI matrix job that boots the app against each supported Statamic/Livewire pair and renders a representative component. With upstream active, also add a release-watch job that surfaces new tags and fails the build if a minor/patch bump is available but unvetted — cheap early warning that replaces the old "nothing is watching this" blind spot. Treat "package renders correctly" as a contract test, not an assumption, especially across Livewire majors, which have historically changed asset injection and hydration behavior.
Sequencing.
Entry::make() fix in v3.8.1 is the prompt for this).Maintenance. Downgraded from "we are the maintainers from day one" to "we own our pin, and we have a credible fallback." Upstream is publishing releases and merging community PRs, so routine compatibility work is now shared rather than wholly ours. Still budget a small recurring allowance — a few engineer-days per major upgrade cycle — and still assign an internal owner, because a single-maintainer project is a bus-factor risk regardless of current activity. Security exposure stays bounded (no auth, no persistence, no external I/O), but the package sits in the templating path, so an escaping/XSS review of rendered component output is still warranted before it reaches user-facing input flows.
Support. Upstream gives us something to escalate to and a changelog to read — a meaningful improvement over the prior assessment. That said, support is best-effort, not contractual, so keep the internal runbook of recurring failure signatures and the triage rule for "the interactive block is broken." Front-line support and content editors won't touch the code, but they should know which page regions are dynamic and therefore not edge-cacheable — that single piece of knowledge prevents most confused bug reports.
Scaling. Unchanged. The cost model shifts: budget requests per session, not requests per pageview. Each Livewire interaction is a PHP round-trip, so capacity planning, Octane worker counts, and database connection pools all need to account for interaction volume rather than traffic volume. Static cache hit rate drops wherever components render — either exclude those pages/regions deliberately or accept fully dynamic rendering for them. Verify the Livewire update endpoint is not accidentally cached at the CDN.
Failure modes.
Ramp-up. Low for Laravel developers — the Livewire mental model is familiar and the Antlers tag is a one-line addition. The genuinely novel part remains the Antlers/Blade seam: two escaping contexts and two parse passes in one render path. Budget the spike and a documented reference pattern rather than assuming this is free; it is a half-day for a Laravel dev and a genuine trap for anyone debugging it cold six months later.
Bottom line. Architecturally cheap, delivers real product value, and the package's outlook has improved: v3.8.1 is evidence of an active repository, not an archived one, so the fork-or-reimplement decision shifts from required mitigation to held hedge. Adopt with a pinned version, scope the package's true surface during the spike, and keep the ownership options documented with explicit trigger conditions. The release does not change the engineering plan; it lowers the urgency and raises the confidence.
How can I help you explore Laravel packages today?