pepperfm/filament-json
pepperfm/filament-json provides Filament components for editing and displaying JSON in Laravel admin panels. It supports formatting, validation, and readable previews, making nested configuration, metadata, and API payloads easier to manage without custom UI code.
Architecture fit: pepperfm/filament-json is a presentation-layer Filament component for displaying JSON as Tree/Table content in inline, modal, or drawer modes. It does not own domain logic or persistence, so architectural coupling is low. Release 5.0.2 improves alignment with Filament’s native state lifecycle (state(), getStateUsing(), default(), relationship state, separators, state caching), which is important because custom JSON normalization can otherwise mask framework-resolved values. This makes the package a better fit for computed/relationship-backed JSON fields than the prior behavior suggests.
Integration feasibility: Composer-installable Laravel/Filament package; integration is likely a plugin registration plus a field/component usage in Filament resources. The patch is low-ceremony, but it is not behavior-neutral: raw JSON strings are now decoded into structured Tree/Table content, valid falsy JSON values are preserved, and filterNullable() now removes only null rather than all empty/falsy values. Existing panels that relied on previous normalization may see changed output. The added GitHub Actions tests/style checks on 5.x improve confidence but do not replace app-level regression testing.
Technical risk: Moderate-low. The release is a patch version but contains runtime behavior changes in edge cases. Main risks: (1) a JSON string column intended as literal text may now render as a tree/table; (2) empty strings, 0, false, and "0" may appear where previously hidden; (3) state resolution changes may alter computed/relationship field display; (4) Blade hardening for scalar states could change escaping/markup. Listed regression coverage is reassuring, but the supported Filament/PHP matrix, payload-size limits, and security posture for untrusted JSON still require validation.
Key questions: Which Filament major versions and PHP versions are supported? Are raw JSON string decoding changes documented as intentional behavior? Does filterNullable() behavior change affect existing published views or only new renders? Is scalar output consistently escaped for untrusted JSON? What are the memory/DOM limits for large JSON payloads in tree/table modes? Are CI checks only on 5.x, and is there a support/security policy? What is the maintainer bus factor and release cadence?
Stack fit: Suitable for Laravel + Filament admin panels that need read-only JSON inspection, especially structured payloads from APIs, audit logs, or metadata columns. It is not a JSON editor and should not be used for write-back or untrusted HTML rendering without validating escaping behavior. Best fit is internal/admin tooling where Filament state resolution and Livewire are already in use.
Migration path: From 5.0.1, treat as a normal Composer patch update but run targeted regression tests before production. Update the constraint to ^5.0.2, install in a branch, and verify existing resources against fixture data covering valid JSON strings, invalid JSON strings, false, 0, "0", empty strings, null, arrays, collections, Arrayable values, computed state, relationship state, and all render modes. If coming from an earlier major, treat as a Filament compatibility upgrade rather than a patch.
Compatibility: Confirm Filament and PHP support before rollout. The release explicitly depends on Filament’s native state resolution, so mismatched Filament versions are a real risk. Also verify Livewire and asset build compatibility, since Filament plugin assets can conflict after Composer updates. The new CI checks cover tests and code style on 5.x; they do not prove compatibility with every host application’s Filament version or asset pipeline.
Sequencing: (1) confirm version matrix and license; (2) install 5.0.2 in a non-production branch; (3) add fixture resources for the edge cases above; (4) exercise inline, modal, and drawer modes; (5) compare rendered output and Livewire payloads against 5.0.1; (6) run application test suite and a staging canary on one low-risk panel; (7) document behavior changes for admins; (8) roll out broadly with a rollback pin to 5.0.1 if regressions appear.
Maintenance: Low ongoing code footprint but non-zero dependency management. The package is presentation-focused and should be pinned and upgraded alongside Filament. The addition of GitHub Actions for tests and style is a positive maintenance signal, but the package appears maintainer-dependent; keep a fork/vendor contingency if it becomes critical. Because 5.0.2 changes normalization semantics, expect future patch releases to require similar edge-case verification.
Support: Internal support burden will center on data-shape confusion rather than package defects: users may report “missing” values when JSON is invalid/scalar, or “extra” values when falsy data is now preserved. Create a short runbook: invalid JSON renders as scalar by design; filterNullable() now removes only null; computed/relationship state follows Filament resolution first; large payloads may need truncation. Vendor support is GitHub-issue based with no SLA, so assign an internal owner for Filament plugin upgrades.
Scaling: Rendering large JSON as tree/table can increase DOM size, Livewire payloads, and memory use. Modal/drawer modes defer rendering but do not eliminate normalization cost. State caching helps but may mask stale data if not understood. Test with representative payloads and set practical size limits; for very large JSON, consider truncation, pagination, or a custom viewer rather than relying on inline rendering. The CI additions do not cover performance, so load testing remains an internal responsibility.
Failure modes: Likely failure modes include valid JSON strings unexpectedly rendering as structured content; falsy values appearing in tables where they were previously filtered; empty strings creating blank rows; computed or relationship state resolving differently in nested Filament forms; Blade rendering errors for unexpected scalar/Arrayable values; asset/build mismatches after Composer update; and XSS risk if untrusted JSON is rendered without complete escaping. The Blade hardening in 5.0.2 reduces this risk but should be verified with security-focused fixtures.
Ramp-up: Low for developers already familiar with Filament; moderate for admins and QA. Developers need a short guide covering normalization rules, Filament state resolution order, render modes, escaping, and payload-size limits. QA should own a regression matrix for valid/invalid JSON strings, falsy values, null, arrays, collections, Arrayable, computed state, relationships, and container modes. Expect roughly 1–2 developer days for integration and testing in a typical Filament app, plus QA time proportional to the number of JSON-backed resources.
How can I help you explore Laravel packages today?