morethingsdigital/statamic-nextjs
A Statamic addon that connects your CMS to Next.js, exposing content through a headless API so your frontend can fetch and render Statamic entries, with support for previews and revalidation workflows.
Assessed version: v0.0.2-alpha (published from v0.0.1-alpha)
Package: morethingsdigital/statamic-nextjs — a Statamic CMS addon bridging a Laravel/Statamic backend with a Next.js frontend (headless content delivery, and/or preview & revalidation workflows).
Architecture fit. The package is structurally well-aligned with the stack we would use. Statamic addons are Laravel service providers by convention, so the integration surface is limited to the provider registration, a config file, and now a view namespace. That means it sits inside our existing Laravel service container rather than introducing a parallel runtime, a sidecar process, or a separate deployment unit. For a Next.js-on-top-of-Statamic architecture, this is the expected shape: content authoring stays in Statamic, rendering moves to Next.js, and the addon is the thin contract between them.
Integration feasibility. Adding a view namespace is a small, additive change with a clear intent: package-provided Blade views are now addressable under a namespaced prefix rather than either not being shipped at all or being loaded into the global view namespace. Practically this unlocks two things for us — (a) host applications can override package views without forking, and (b) it removes the risk of view-name collisions with application or other-addon views. Both are prerequisites for us to treat the package as customisable rather than a black box. That materially improves feasibility, because the most common reason we abandon a young addon is being forced to vendor-patch its templates.
Technical risk. The dominant risk is maturity, not design. This is 0.0.2-alpha — two releases in, pre-1.0, with no semver stability guarantee, and a release note that is a single bullet point. The change itself is low-risk; the version number is not. We should assume any patch release may alter public behaviour without a migration guide, and that the addon's content-delivery and preview contracts are still unsettled. There is also concentration risk: the package is published under an agency namespace, so maintainer bandwidth and long-term stewardship are unproven. Alpha status also implies limited or no automated compatibility testing against the Statamic and Laravel versions we run.
Key questions.
0.0.2-alpha declare support for in composer.json, and is that constraint tested in CI?Verdict on this release. Non-breaking, additive, and directionally positive: it makes the package more embeddable and less collision-prone. It does not change the underlying recommendation, which is driven by the alpha version number rather than by any single change.
Stack fit. Laravel + Statamic on the backend, Next.js on the frontend, content fetched at build/revalidate time. This addon fits inside that shape without requiring us to move off Statamic's flat-file content model or its Laravel-native addon system. No new infrastructure component is introduced by the addon itself; the Next.js app is the only new deployable, and that is a decision we would be making regardless of the package.
Migration path. Because there is no prior assessment and, presumably, no existing usage, this is a greenfield adoption rather than a migration. The practical path is: stand up a spike application on our target Laravel/Statamic/PHP matrix, install at a pinned commit rather than a version range, wire one content collection end-to-end to a Next.js route, and only then decide whether to promote it beyond the spike. There is no data migration, since Statamic content remains in its existing repository/format.
Compatibility. The view namespace addition is the first hint that the addon expects to be customised in-place, which raises the importance of version pinning: if we override a namespaced view, a future alpha may rename or restructure it and silently break our override. Pin to a commit SHA and record the view paths we depend on. Our compatibility gate should be an explicit matrix (PHP version, Laravel major, Statamic major) validated in our own CI, not inferred from the package's composer.json alone.
Sequencing.
0.0.x bumps as potentially breaking regardless of the notes.Maintenance. Low ongoing code footprint, moderate ongoing attention. The addon is thin, so there is little to patch; but at 0.0.x we should budget for reviewing each release rather than auto-updating. If we override namespaced views, that budget rises — every upstream view change becomes our problem. Set a standing expectation of a review pass per upstream release, plus a quarterly check on whether the package has reached a stable version or gone quiet.
Support. The support story is the weakest dimension. There is no evidence of a formal support contract, and the release notes are terse enough that we cannot rely on documentation to resolve issues. We should assume self-support: the ability to read the addon source and patch it in a fork if necessary. That in turn assumes we retain Laravel/Statamic-competent engineers, which we do — this is squarely within our existing skill set.
Scaling. The addon's work happens in the Laravel/Statamic tier, which scales the way the rest of our Statamic estate does; it is not a new bottleneck. The scaling profile of the overall architecture is dominated by the Next.js frontend and the content API request volume, not by this package. The one thing to watch is whether the addon sits in the request path for preview or revalidation — if it does, that path needs its own load consideration and a bypass.
Failure modes.
Ramp-up. Minimal for anyone already fluent in Laravel and Statamic — the concept count is tiny (a provider, a config file, a view namespace). Realistic estimate: half a day for a Laravel-competent engineer to complete the spike and read the source end-to-end. The genuine ramp-up cost is not learning the package; it is establishing the internal discipline of pinning, smoke-testing, and reviewing alpha releases, which is process work rather than training.
How can I help you explore Laravel packages today?