parabol/parabol-google-maps-picker-bundle
A Symfony bundle that adds an interactive Google Maps location picker form type, letting users search for an address or drop a pin and submit precise latitude/longitude coordinates. Configurable map options, simple asset setup, and easy integration into existing forms.
What this appears to be. Despite the brief, the naming (...Bundle, vendor parabolalab) and the Symfony-style package ID strongly suggest this is a Symfony bundle, not a Laravel package. It almost certainly wraps the Google Maps JavaScript API into a form widget (map + marker + Places autocomplete) that yields a latitude/longitude pair for persistence. Any evaluation has to start from that mismatch: a Laravel team cannot composer require this and expect it to register routes, config, or Twig-rendered form types without a Symfony kernel.
Architecture fit. Low as a drop-in dependency. Symfony bundles assume DI container extension classes, Resources/config service definitions, Twig form themes, and an ibexa/Symfony\Component\HttpKernel\Bundle\Bundle entry point — none of which Laravel's service container or Blade understands. The genuinely reusable part is a thin slice: the client-side JS that initialises a map, binds a marker, and reverse-geocodes into hidden form inputs. That slice is typically 100–300 lines and is the only thing worth extracting.
Integration feasibility. Feasible as a reference implementation / asset lift, not as a Composer dependency. A TPM should frame the decision as "port the pattern" versus "adopt the library." Porting means re-implementing a Blade component (or Livewire/Alpine component) around a hidden lat/lng field, a <div> map canvas, and a script include. That is a 1–3 day task for a mid-level engineer and produces code the team actually owns.
Technical risk. High, and concentrated in three places:
composer.json requirements, and a transitive dependency graph you cannot patch upstream.Key questions to resolve before any code is written.
composer.json require block — expect symfony/* constraints that confirm it.)Stack fit. Poor as-is, good as a pattern source. The Laravel equivalents — a Blade/Alpine component, a FormRequest validation rule for lat/lng bounds, and a Location cast or value object — are straightforward and remove the Symfony coupling entirely. Nothing in a map picker is so complex that it justifies carrying an unmaintained bundle.
Migration path. Recommended: vendor the idea, not the package.
resources/js/components/map-picker.js (vanilla or Alpine) plus resources/views/components/map-picker.blade.php.lat, lng, optionally a formatted address string) so the persistence layer is unaffected.composer audit gate, but treat removal as the goal.If a dependency is non-negotiable, the alternative is a maintained, Laravel-native package (e.g. a Google Maps wrapper such as finnbear/laravel-google-maps or a Places-autocomplete front-end library). Evaluate those on the same criteria below rather than defaulting to this one.
Compatibility. Assume nothing. Verify PHP version constraint, Google Maps API version referenced in the script URL, and whether the JS uses deprecated globals (google.maps.places.Autocomplete versus the newer PlaceAutocompleteElement). A bundle with zero stars is very unlikely to have been updated for the current Places API.
Sequencing.
maps.googleapis.com.Maintenance. Adopting this package transfers ownership of a dormant codebase to your team without giving you the usual levers — you cannot rely on upstream fixes, and forking means you now maintain a Symfony bundle you don't otherwise use. Building a ~200-line component keeps the maintenance surface proportional to the feature. Either way, someone must own Google API version upgrades, which is the real recurring cost.
Support. Effectively none. Zero stars and zero dependents means no Stack Overflow trail, no issue history worth reading, and no maintainer responsiveness to assume. Internal ramp-up documentation will have to be written from scratch by whoever reads the source. Budget half a day of senior-engineer time for that read-through even if you decide not to adopt.
Scaling. Two axes. Traffic: the client-side widget is static assets and scales trivially; the constraint is Google's per-project quota and billing, not your servers. Request volume: if the implementation reverse-geocodes on every marker drag or keystroke, API calls multiply fast — enforce debounce and consider caching resolved addresses keyed by rounded coordinates. Data: storing lat/lng as DECIMAL(10,7) or a spatial index keeps queries cheap; a bundle that hands back strings silently will bite you at reporting time.
Failure modes.
onerror and the geocode callback.composer.json, a routine PHP bump becomes a blocker. Another argument for not taking the dependency.Ramp-up. Low for the re-implementation path — the concepts (map init, marker, Places autocomplete, hidden inputs) are standard front-end work an mid-level engineer can pick up in a day with current Google docs. Higher for the adoption path, because a new engineer must learn both the feature and Symfony bundle conventions to debug it, plus reconstruct intent from an unmaintained repo with no docs. Net: the build path is cheaper on onboarding despite being marginally more work up front.
Bottom line for the roadmap. Do not add this as a dependency. Treat it as a 30-minute read for design inspiration, then implement a small, owned Laravel component. The dominant risks — abandoned upstream, Google API drift, and client-side key handling — are all better managed in code you control.
How can I help you explore Laravel packages today?