elevate-digital/nova-charcounted-fields
A Laravel Nova package that adds character-counted text fields with live counts and length-limit support. Ideal for titles, excerpts, meta descriptions, and other constrained content, helping editors stay within required limits while composing in Nova. Easy to configure and integrate into existing r...
composer require it?" For most teams already on Nova, adopting is cheaper than building — but the package is small enough (a custom Nova Text/Textarea subclass) that copying the field class into app/Nova/Fields is a credible fallback if dependency risk is a concern.VARCHAR(60) column, a Google SERP truncation point, a 160-character SMS segment, a 280-character social post) into visible feedback at the moment of authoring. That reduces a class of preventable defects: truncated meta descriptions, cut-off product titles, broken SMS templates, and rejected API payloads from downstream platforms.max: rules server-side. Any decision to rely on it must be paired with existing Laravel validation, or you've simply moved the truncation risk rather than removed it.Adopt when:
max: validation in place; the counter is purely a UX layer on top.Look elsewhere (or build in-house) when:
length counting misleads editors on multilingual or emoji-heavy content; verify behaviour before rollout.To executives: A small, low-cost admin improvement that prevents a recurring, low-severity content defect — copy that gets silently truncated by search engines, SMS carriers, or downstream APIs because editors can't see the limit while writing. Cost is a Composer dependency and roughly an hour of integration per resource; there is no infrastructure, licensing, or migration impact. Framed honestly: this is a nice-to-have that improves editorial confidence, not a revenue or compliance lever. Given its negligible adoption, treat it as a convenience with a documented fallback (we can own the field class ourselves in an afternoon).
To engineering: A Nova custom field that renders a live character count beside Text and Textarea inputs. Integration is a field-type substitution in the relevant Nova resources, plus keeping existing max: validation rules as the actual enforcement layer — the counter must never be treated as validation. Two caveats to flag in the PR: it is a low-traffic, single-maintainer package, so pin the version and be ready to vendor it; and confirm its counting semantics (JS string length vs. grapheme clusters vs. bytes) match the limits we're targeting before we advertise it to editors. Success looks like fewer truncated-field defects and fewer "why did my description get cut off" tickets — measure on the fields we instrument, not globally.
How can I help you explore Laravel packages today?