64robots/nova-json
64robots/nova-json provides a JSON field for Laravel Nova, making it simple to view and edit JSON attributes directly within your admin panel. It offers a clean, developer-friendly way to manage structured data on Nova resources without building custom field components.
Architecture fit
64robots/nova-json is a Nova field extension — a PHP field class plus a compiled Vue component registered through Nova's asset pipeline — that renders a JSON/JSONB column as an editable form control inside Laravel Nova resources. Architecturally it slots into a well-defined extension point, so there is no structural friction with a standard Laravel + Nova stack. The friction is governance, not architecture: it inserts a 26-star, archived, single-maintainer package into the admin plane, which is typically the highest-privilege surface in a Laravel application and the one place where unreviewed code has the widest blast radius.
Integration feasibility
Installation is trivial (composer require, add the field to fields() on a resource, ensure the model casts the column as array/json). The real effort is verification, not integration. Because the repository is archived, we cannot rely on the maintainer to have validated compatibility with current Nova majors, Laravel 10/11, or PHP 8.2+. Nova 4 moved to Vue 3 and a reworked asset/build pipeline, so a Nova 2/3-era field component has a meaningful probability of not compiling or not rendering without patches.
Technical risk High, and concentrated in three areas:
Key questions
KeyValue field — or a small in-house field — cover the same requirement?Stack fit Requires Laravel plus a licensed Nova installation. If Nova is not already a committed part of the stack, the package is moot — the decision is really "do we adopt Nova," and this field is a footnote. If Nova is present, fit is good on Laravel 8/9-era stacks and unproven beyond that.
Migration path Three viable paths, in descending order of preference:
KeyValue field for flat key/value JSON, or a maintained community JSON field. Zero new ownership burden. Valid only if the JSON shape is flat.Straight adoption of the archived upstream is not recommended for anything beyond a throwaway internal tool.
Compatibility
Build an explicit compatibility matrix before committing: Nova major × Laravel version × PHP version × Vue runtime. Verify the compiled JS assets actually load in the Nova 4/5 asset pipeline. Confirm the model cast (array vs json vs AsArrayObject) matches how the field serializes and deserializes.
Sequencing
rules() entry enforcing the JSON schema at the field level, independent of the package.Maintenance Effectively 100% ours from day one. Archived status means the maintenance line item is not "upgrade the package" but "re-verify and patch the package on every Nova and Laravel upgrade." If Nova ships twice a year, budget a recurring half-day per upgrade cycle for the fork, plus unbounded time if the Vue component breaks.
Support No upstream support channel. Issues, PRs, and security reports go nowhere. Internal support falls to whichever engineer owns the admin panel — a single-point-of-failure pattern unless explicitly staffed.
Scaling Negligible from a runtime perspective: it is a form control, not a query path. The scaling concerns are payload size (very large JSON documents degrade the Nova edit page and browser responsiveness) and concurrent admin edits (JSON columns are prone to last-write-wins clobbering when multiple admins edit different keys of the same document). Neither is solved by this package.
Failure modes
"" or null where the application expects {}, or vice versa.Ramp-up Low for any developer already fluent in Nova custom fields — the package surface is one class and one component, roughly half a day to read. The ramp-up cost is not comprehension but ownership discipline: establishing the fork workflow, the upgrade checklist, and the fixture-based round-trip tests. Teams without prior Nova field experience should assume 2–3 days to become confident enough to patch it, which is close to the cost of simply rebuilding it in-house — a strong argument for option 2 above.
How can I help you explore Laravel packages today?