digitalcloud/nova-address-field
Dedicated address field for Laravel Nova forms with autocomplete and geocoding support, so you can capture, store, and display structured addresses without custom components. A simple drop-in field that keeps admin forms tidy and saves development time.
Architecture fit. Nova field packages are thin, single-purpose extensions: a PHP Field subclass that registers a Vue component, plus compiled JS/CSS published into Nova's asset pipeline. This one wraps Google Places Autocomplete around a text input. It fits cleanly into a Laravel monolith using Nova as the admin surface — no service, no queue, no persistence layer of its own. The coupling is entirely to two fast-moving external contracts: Nova's internal field API and Google's Places JS API. Both have moved substantially since the April 2019 release.
Integration feasibility. Feasible only on a legacy stack. The 2019 release date implies Laravel 5.7–6.x, Nova 1.x/2.x, Vue 2, and laravel-mix. Nova 4+ (Vue 3/Inertia, Vite) breaks the component and asset registration model; Nova 5 breaks it further. Verify composer.json constraints before anything else. On a current stack (Laravel 11/12, Nova 4/5), assume it will not install or will not render.
Technical risk.
google.maps.places.Autocomplete is deprecated in favor of the new Places API (AutocompleteSuggestion / PlaceAutocompleteElement). Behavior, billing model, and SKU pricing all changed in 2025.place_id). For reporting, validation, and downstream geocoding, a flat string is usually the wrong shape.Key questions.
place_id retained?Stack fit. Good fit only for Laravel ≤6 + Nova 1.x/2.x, an internal admin form needing a single free-text address input, and a team already holding a billed Google Maps key. Poor fit for anything modern or customer-facing.
Migration path. Two viable routes:
composer.json, rewrite the Vue component for Nova 4/5 (Vue 3, Inertia, Vite), and port to the new Places API. Scope is genuinely small — a field class, one Vue component, and asset registration — likely 2–5 days for a mid-level Laravel developer plus review.Compatibility. Verify in order: PHP constraint → Laravel constraint → nova constraint → asset registration mechanism (Nova::script/Nova::style vs. Nova 4's npm-published component model). Treat any mismatch as a fail-fast gate, not a patch target.
Sequencing.
place_id, lat/lng) before writing UI.fill/resolve behavior.Maintenance. Effectively zero upstream — treat total cost of ownership as internal. Budget a review at each Nova major and each Google Places API change. Pin the fork to a commit and record the rationale in-repo.
Support. No vendor, no SLA, and 10 stars means no community depth; Stack Overflow will not rescue you. Every incident is self-served. Write the failure modes into the runbook explicitly.
Scaling. Cost scales with typing, not users: every keystroke-triggered request is billable unless debounced and session-tokened. Fine for internal admin traffic; unsuitable for bulk import or customer-facing volume. Mitigate with autocomplete session tokens, ~300ms debounce, a 3-character minimum query length, and server-side caching of Place Details by place_id.
Failure modes.
Ramp-up. Low for a Laravel developer to read the code (hours). Higher for surrounding context: Nova's field lifecycle, Google Places billing semantics, and Vue 2→3 if forking. Plan half a day of onboarding plus a Maps billing walkthrough.
Recommendation. A score of 2.70 with opportunity at 4.17 reads as real demand, poor execution. Do not adopt as a dependency. If the need is current and the stack is legacy, fork it with a named owner and a bounded effort; otherwise build the field natively and spend the saved integration risk on getting the data model and key restrictions right.
How can I help you explore Laravel packages today?