justd/laravel
justd/laravel is a Laravel integration for JustD, offering straightforward configuration and Laravel-native helpers to connect JustD with new or existing applications quickly, with minimal setup and clean, maintainable code.
Critical framing: this is not a library, it is a scaffold — and v2.0.5 finally tells us whose scaffold. The changelog host (github.com/intentui/laravel) resolves the identity question that the previous assessment flagged as unresolved: this is the Intent UI Laravel starter kit, not a generic Laravel skeleton, despite the description reading "The skeleton application for the Laravel framework" verbatim. Intent UI is the Tailwind/React component library formerly published as Justd, which explains the justd/laravel package name and the intentuilabs repo owner — legacy naming from a rebrand, not (necessarily) a re-host. That is a materially better provenance read than "unverified," but it changes the value proposition: you are no longer just adopting a stack, you are adopting a vendor's design system and build toolchain as the foundation of your service. The right question remains "should this be the baseline of our next Laravel service, and can we own it?" — with a new sub-question: "are we prepared to be downstream of Intent UI's release cadence?"
Architecture fit. The backend half is unchanged and still coherent: Laravel 12's slim skeleton (bootstrap/app.php for middleware, exceptions, routing; no Http/Kernel.php or Console/Kernel.php), Inertia v2 + React 19 for a server-routed SPA, Wayfinder for generated TypeScript route helpers, Tailwind v4, Sanctum v4, Pest 3 + PHPUnit 11, Pint, Sail, and Laravel Boost v2 as an MCP server. The frontend half is now more opinionated, not less: Intent UI v4 supplies the component layer, and Vite+ supplies builds, linting, and formatting (Biome is gone). Net effect: the package is an even better fit for greenfield, TypeScript-fluent product teams that want a batteries-included UI kit, and an even worse fit for anyone who intended to swap in their own design system or their own lint/format standard. Teams on Blade/Livewire, Vue, or a separate API + separate SPA are now opting out of three layers (Inertia, Intent UI, Vite+) rather than two.
Integration feasibility. Still low friction at bootstrap, still high irreversibility — and v2.0.5 is the proof case. A 2.0.4 → 2.0.5 patch bump contained an Intent UI major migration (v3 → v4, i.e. component API and styling surface changes) and a full replacement of the build/lint/format toolchain. For a consumer of a published package that would be a semver violation; for a fork-and-own scaffold it is simply "upstream moved, you decide whether to follow." This is the single most useful thing the release tells us: upstream does not version for downstream mergeability. The no-upgrade-channel problem is now empirically demonstrated, which strengthens rather than weakens the fork-and-own recommendation — but it also means the fork diverges faster than the previous estimate assumed. Brownfield adoption remains unsupported; pattern extraction is still the only path there, and the extractable surface is now slightly smaller (the Biome config is gone, replaced by Vite+ config that is harder to lift in isolation).
Technical risk. Revised table:
| Risk | Signal | TPM read |
|---|---|---|
| Design-system coupling | Intent UI v4 is now the component layer; v3 → v4 migration shipped in a patch | Component APIs, props, and Tailwind class contracts can change on upstream's schedule. Every screen you build sits on this. Verify license and whether any Intent UI tier is paid/pro before designing around it |
| Build toolchain immaturity | "Switched to Vite+ for builds, linting, and formatting"; Biome and "unused tooling" removed | Vite+ is an early unified toolchain (Vite/Rolldown/Oxlint/Oxfmt lineage). It replaced two boring, well-understood tools with one new one on the critical path of every deploy. Confirm exact CLI surface (vp build vs npm run build) and whether a stable npm-installable release exists |
| Release hygiene / semver | Breaking-ish changes in a patch release; no migration guide in the notes | Upstream optimizes for its own velocity. Do not plan merges on the assumption that majors are where breakage lives |
| Pre-1.0 dependencies | laravel/wayfinder v0, laravel/mcp v0, laravel/prompts v0 |
Unchanged: breaking changes permitted by semver; Wayfinder is on the critical path for every frontend route call |
| Provenance (partially resolved) | Repo is intentui/laravel; description still matches the official Laravel skeleton verbatim |
Identity now explained (Intent UI starter kit, Justd legacy naming). Remaining gaps: license, copyright holder, and whether the description is a leftover rather than a claim |
| Release metadata | Previously observed future-dated "last release" | v2.x tag lineage is real and self-consistent, so tags exist — but the date anomaly is still unexplained. Verify against Packagist before the first install |
| Adoption depth | ~163 stars, 0 dependents | Unchanged: no downstream compatibility evidence, no Q&A corpus, no third-party bug reports |
| Tooling coupling | Boost v2 MCP (search-docs, tinker, browser-logs) |
Unchanged: degrades to "read the docs normally" without an MCP server |
| Stack freshness | PHP 8.4, React 19, Tailwind v4, now Intent UI v4 + Vite+ | Bleeding-edge across six axes. Each is individually defensible; jointly they shrink the hiring pool and the pool of people who can debug a broken build |
Key questions for the maintainer/vendor.
Stack fit assessment. Adopt wholesale only if all of the following now hold: greenfield service; PHP 8.4 in CI and prod; a team comfortable in React + TypeScript; acceptance of Intent UI as your design system rather than a placeholder; appetite for an early-stage unified build toolchain; a hard Vite/Vite+ build gate in every deploy path; and no requirement to interoperate with existing Blade/Livewire code. The Intent UI and Vite+ conditions are new and are the ones most likely to fail. If any condition fails, fall back to pattern extraction (path B).
Three viable paths, in order of preference.
internal/[email protected], and treat it as your product. Prune: Sail if container-native, Sanctum if no API surface, MCP/Boost if agent tooling isn't approved, Intent UI components you don't use, Vite+ if the toolchain doesn't clear the spike in step 4. Because upstream ships breaking changes in patches, decide explicitly that you will not track upstream and record that in the ADR — cherry-pick security fixes only.bootstrap/app.php configuration, the Wayfinder Vite plugin, pint.json + Pest config, and the AGENTS.md conventions as an internal engineering standard. Drop from the list: the Biome config (now removed upstream) — if you want JS lint/format in an existing app, choose your own tool rather than inheriting Vite+.Compatibility envelope. Hard floors: PHP 8.4, Laravel 12, Node with Vite-compatible toolchain, Tailwind v4, React 19. Dependency resolution happens once at scaffold time and is then frozen — good for reproducibility, bad for patching. Plan for quarterly manual merge reviews if you intend to follow upstream at all; realistically most teams should accept permanent divergence and track only Laravel framework security releases. Note that following upstream now also means following Intent UI majors and Vite+ releases, which is a second and third cadence you do not control.
Sequencing (pilot, ~3 weeks — extended by one week versus the prior plan).
composer.lock and the JS lockfile. Tag v1.0.0. No caret ranges in the starter.composer install --no-dev, JS install + production build (Vite+ or reverted Vite), lint/format check, php artisan test --compact, Pint check. The frontend build step remains non-negotiable — the manifest is a runtime dependency.Maintenance. You own this from hour one, and the recurring bill is now larger and less predictable. Baseline: ~0.5–1 dev-day per Laravel minor (quarterly) and 3–5 dev-days per Laravel major (annual). Add: Intent UI majors — v3 → v4 was a real migration, and upstream ships that class of change without a documented migration path; budget 3–5 dev-days each and expect to skip versions rather than track them. Add: Vite+ churn — an early unified toolchain will move faster than Vite did, and a broken build blocks every deploy. Add: the unbounded v0 risk on Wayfinder and MCP (Wayfinder breakage blocks every frontend route call simultaneously). Safest posture: pin Wayfinder hard, wrap its generated helpers in a thin internal module, pin Intent UI components behind an internal re-export layer, and never upgrade more than one of {Laravel, Intent UI, Vite+} in the same sprint. One genuine improvement in this release: removing Biome and unused tooling shrinks the dependency surface and the number of tools a new contributor must learn.
Support. Still no implied support contract — ~163 stars, zero dependents, and a maintainer whose release notes do not include migration guidance. You are the support tier. Mitigations: (a) establish a direct channel with the author and get a response expectation in writing, specifically asking whether Intent UI and the starter are supported products or side projects; or (b) treat upstream as read-only inspiration and make the internal fork the system of record. Do not let the team file upstream issues expecting turnaround. Internally designate one named owner per layer (PHP/backend, Inertia/React, design system, build tooling) — the design-system and build-tooling owners are new and are the ones that will be woken up.
Scaling. Runtime scaling is unconstrained — stock Laravel; PHP-FPM or Octane, Redis, queue workers, Horizon all behave normally. Intent UI and Vite+ are build-time and render-time concerns, not throughput concerns; component-library bloat affects bundle size and Core Web Vitals, not server capacity — worth a bundle-budget check in CI. The real constraint remains team scaling: Inertia + React + Wayfinder + Intent UI demands full-stack TypeScript competency plus familiarity with a niche component library, which narrows the hiring pool further than before. Mitigating factor unchanged and still the most team-scalable asset here: the AGENTS.md conventions (programmatic tests for every change, check sibling files, no unapproved dependency changes, no new base folders) reduce onboarding variance — contingent on enforcing them in CI rather than leaving them as prose. Add one line to those conventions: no Intent UI component outside the approved list, and no toolchain upgrades outside the named owner.
Failure modes to instrument for.
Unable to locate file in Vite manifest) — still highest-frequency, lowest-severity; guarantee a build step in every deploy path including previews and container images. Now slightly higher risk because the build chain changed.php artisan test arch tests for PHP-side conventions.SANCTUM_STATEFUL_DOMAINS, CSRF. Test in staging that mirrors production domains, not localhost.search-docs, tinker, browser-logs are the documented debugging path; without the server, developers guess at v12/v2 APIs. Include MCP setup in onboarding or don't mention it.composer install; a compromised starter kit is a fleet-wide compromise.Ramp-up. Backend Laravel developers new to Inertia/React: ~1–2 weeks to productive, ~4 weeks to confident with deferred props, prefetching, and polling — plus 2–3 days for Intent UI v4 (its Tailwind v4 conventions and component composition model are the steepest part of the frontend curve for Laravel-native devs). Frontend React developers new to Laravel: ~1–2 weeks, mostly Eloquent relationships, Form Requests, and the bootstrap/app.php registration model. Wayfinder: a day. Vite+: budget half a day for the named build owner to learn the command surface and CI wiring; everyone else can ignore it if the scripts are wrapped in npm run aliases — do that wrapping deliberately, because it preserves your ability to swap the toolchain without touching CI or docs. Realistic plan: 3 weeks from kickoff to first production deploy for a mid-level pair, with the pilot service doubling as the reference implementation.
Bottom line. v2.0.5 is a net-neutral-to-slightly-negative release for adopters, and a clarifying one. Positive: dependency surface shrank, and the identity question is substantially answered — this is the Intent UI starter kit, and the Justd/intentui naming mismatch is explained rather than suspicious. Negative: upstream shipped a design-system major and a full build-toolchain swap in a patch release, with no migration notes, which is direct evidence that this project will not be merged-with cheaply and that breakage is not confined to majors. Recommendation stands and hardens: adopt as an internal, forked, pinned starter kit for greenfield Laravel 12 services only — not as a tracked dependency, not for brownfield. Add two gates before the fork: confirm Intent UI v4 licensing (and that no paid tier is required), and clear a Vite+ toolchain spike in clean CI — if the build chain is preview-grade with no stable pin, take path B or C instead. The rest remains ordinary engineering discipline.
How can I help you explore Laravel packages today?