novius/laravel-nova-contexts
Adds selectable contexts to Laravel Nova: define scopes such as sites, tenants, or locales, let users switch between them from the Nova UI, and automatically apply the matching global scopes to your resources and queries.
Evidence basis. The supplied artifacts are a 1.1.0 release note ("Laravel 9 compatibility"), an undated package description, and the fact of zero stars and a 2022-07-22 last release. There is no composer.json, no CI matrix, no changelog, no issue history, and no evidence of downstream adoption. Everything below is framed as hypotheses to validate, and the assessment is deliberately scoped to what a single package description can defensibly support.
Architecture fit. This is a Nova UI package, not an application service. It extends Laravel Nova through its documented extension points: a header tool (context switcher), resource scoping hooks, and custom fields/filters that read the active context. Nova is a closed-source, commercially licensed product with its own major version cadence that is loosely coupled to Laravel's; the package therefore has two compatibility axes (Laravel major × Nova major), not one, and a release that says "Laravel 9" is silent on which Nova version it targets. The deeper architectural dependency is Novius Contexts: this package is described as a presentation layer over an external context-aware model/middleware system, so its real fit question is not "does the switcher render" but "does our data model already subscribe to the Novius Contexts contract for tenant scoping, and is that contract stable." If we are not already running Novius Contexts, adopting this package drags in a second opinionated dependency that governs how every context-scoped model is scoped, queried, and migrated.
Integration feasibility. Higher friction than the 1.1.0 note implies, for reasons unrelated to Laravel version. Three gates: (1) Nova license and version — a paid, per-seat product; the package must match our Nova major (Nova 4 for Laravel 9; Nova 5 for Laravel 10/11), and no evidence is provided that this package ships a Nova 5 line. (2) Novius Contexts prerequisite — if we have not already adopted it, the true integration is a multi-tenant scoping retrofit, not a composer require. (3) Zero adoption signal — 0 stars, no issue history visible, no downstream references; there is no community to lean on for edge cases, no "me too" reports for breakage on newer Nova, and no contributor bench beyond the vendor.
Technical risk. Ranked by confidence and relevance:
Key questions to put to the maintainer before adoption.
composer.json diff for laravel/nova and novius/laravel-contexts between 1.0.x and 1.1.0.Stack fit. The first decision is a three-way question, not a version pin. (a) Do we run Laravel Nova at all? If not, the package is irrelevant regardless of quality — Nova is a paid product and this is a Nova-only extension. (b) Do we already run Novius Contexts for multi-tenant scoping? If yes, this package is a UI acceleration on an existing investment and the analysis is local. If no, "integrating laravel-nova-contexts" is a euphemism for a multi-tenant scoping retrofit across models, migrations, jobs, and admin screens — a different project with a different budget. (c) Which Nova major are we on? Nova 4 maps to Laravel 9; Nova 5 maps to Laravel 10/11. The 1.1.0 note is silent on Nova version, and no Nova 5 compatibility is advertised.
Migration path. Treat it as a scoped spike, not a drop-in:
Compatibility. Hard floors to verify before any branch time is spent: Nova major version (not stated in 1.1.0); Novius Contexts minimum version; PHP and Laravel support (Laravel 9 implies PHP 8.0+, Symfony 6, Flysystem 3 for any file-carrying fields). The package's only claimed compatibility point is Laravel 9, which reached end of security fixes in February 2025 — so a supported install is an install on an EOL framework line, which will conflict with any estate that has already moved to Laravel 10/11/12.
Sequencing. (1) Prerequisites audit: Nova license and version, Novius Contexts presence, list of scoped models. (2) Spike install in a disposable Nova app at our real Nova major. (3) Isolation proof on scratch data — list, search, lens, action, queued job. (4) Maintainer questions resolved (Nova 5 roadmap, isolation test coverage). (5) Production pilot on one surface with a rollback runbook. (6) Decide on full adoption or walk away. Any of (1)–(4) can kill the effort, which is why they come before a production pilot rather than after.
Maintenance. The observed cadence is one release in the last three years, and the content of that release is framework-compatibility metadata. Nova itself ships on a regular major cadence that is coupled to Laravel's; with no Nova 5 line advertised, we should budget for this package to lag each Nova major by an indeterminate interval — potentially indefinitely. Whether that is tolerable is a function of depth: a context switcher is on the request path of every admin screen that renders a scoped resource, which is a high-blast-radius place for lag, not a dev-only convenience.
Support. Two upstreams, neither of which we control, and one of which (Nova) is a commercial license — meaning if Nova releases a major that breaks this package's tool registration, our recourse is to the Novius maintainer's goodwill or to forking a 0-star repository with no community. Add the EOL Laravel 9 constraint: any CVE in Laravel or its Symfony 6 dependencies after that point becomes ours to remediate via a framework upgrade that may itself break this package. That is a dated obligation to write into the adoption decision, not to discover during an incident.
Scaling. Nothing here changes runtime throughput in any way a compatibility note can speak to; treat scaling as unassessed rather than validated. The scaling risk that matters is organisational: a second Nova extension and a Novius Contexts dependency that must both remain compatible with each Nova release, on a stack we are trying to keep current, each adding an upgrade step we do not own.
Failure modes. (a) Context leak — a scoping bug in fields, filters, lenses, or queue jobs exposing one tenant's data in another's admin view; this is the failure mode that justifies the entire diligence burden, and 0 stars means no community evidence that it does not occur. (b) Nova-major breakage — Nova upgrades to 5.x/6.x, the package does not, and the switcher (or the whole tool registration) breaks in the admin panel. (c) Novius dependency stranding — Novius Contexts moves on, this UI layer does not, and we are pinned to an old Contexts release to keep the switcher working. (d) Abandonment — the maintainer stops releasing before the next Nova major, leaving us to fork or remove the tool under time pressure. (e) False confidence — teams read "Laravel Nova Contexts" as an official Nova feature and skip the diligence a 0-star third-party extension actually requires.
Ramp-up. Low for developers fluent in Nova extension points and composer dependency resolution — the package itself is likely to be a thin tool + field + filter layer over the Novius Contexts contract. The non-obvious costs are (i) multi-tenant isolation reasoning, which is a different skill from Nova UI work and the actual failure surface here, and (ii) knowledge of which Nova surfaces (search, lenses, actions, queued jobs) the scoping does and does not cover — which must be documented in the integration ticket while the pilot is fresh, because reconstructing it at the next Nova upgrade will be expensive.
TPM recommendation. Do not treat the 1.1.0 note as grounds for adoption. The gating questions are binary and answerable in a day: is there a Nova 5 line, and is there isolation test coverage against Nova's non-list surfaces (search, lenses, actions, queued jobs)? If both answers are absent or negative, this is not a dependency we should take on a request-path admin surface, and the multi-tenant scoping problem is better solved explicitly in our own Nova tooling where we own the upgrade cadence and the isolation guarantees. If both answers are positive and we are already invested in Novius Contexts, run the spike and the isolation proof before any production pilot, and adopt a single surface at a time.
How can I help you explore Laravel packages today?