Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Parabol Google Maps Picker Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  1. Abandonment. 0 stars, 0 dependents, score 0 is the strongest signal in this brief. There is no adoption evidence, no downstream consumers validating it against current PHP/Symfony versions, and no indication of recent commits. Expect PHP 8.1+ incompatibilities, unconstrained or stale composer.json requirements, and a transitive dependency graph you cannot patch upstream.
  2. External API surface. The widget is a hard runtime dependency on Google Maps JS API and likely the Places and Geocoding services. Google has retired major API versions before and continues to change Places billing and autocomplete semantics; any bundle that pins an old bootstrap URL is a scheduled outage.
  3. Client-side key exposure and compliance. A Maps API key must be shipped to the browser. That requires HTTP-referrer restriction, separate keys per environment, quota alarms, and a GDPR/consent decision for loading Google scripts — none of which a dormant bundle will help you with.

Key questions to resolve before any code is written.

  • Does the repo actually target Laravel, or is it Symfony? (Check composer.json require block — expect symfony/* constraints that confirm it.)
  • What is the last commit date, and does CI run against a currently supported PHP version?
  • Which Google APIs does it call, and are Places/Geocoding costs bounded per user action?
  • Is the license compatible with commercial use?
  • Do we need a map picker at all, or would an address autocomplete field plus server-side geocoding satisfy the requirement with less surface area?

Integration Approach

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.

  1. Read the repo's JS and Twig template to understand its event handling, marker placement, and hidden-input contract.
  2. Re-implement as resources/js/components/map-picker.js (vanilla or Alpine) plus resources/views/components/map-picker.blade.php.
  3. Keep the server-side contract identical to whatever it produced (lat, lng, optionally a formatted address string) so the persistence layer is unaffected.
  4. Delete the Composer dependency from the plan. If someone already added it, pin the exact commit and add a 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.

  1. Spike (1–2 days): build a throwaway map picker in a branch using a current Maps JS bootstrap; confirm the UX matches the requirement.
  2. Security and cost review (parallel): restricted API keys per environment, quota caps, consent banner decision, CSP allowances for maps.googleapis.com.
  3. Implement (2–3 days): component, validation rule, feature test asserting server-side rejection of out-of-range coordinates.
  4. Rollout: ship behind a feature flag to one form; monitor Maps API spend and error rates for a week before widening.
  5. Decide on the original package: archive it from consideration, document why in the ADR.

Operational Impact

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.

  • Key invalid, restricted, or billing disabled → map renders grey or fails entirely; users cannot submit the form. Provide a manual address fallback and a server-side validation message, not a silent failure.
  • Quota exceeded or Google outage → same symptom with no error surface. Instrument the Maps script onerror and the geocode callback.
  • Consent blocked / ad-blocker → script never loads. The form must remain submittable via typed coordinates or address.
  • Deprecated API version → hard break at a date you don't control. Add a calendar reminder tied to Google's deprecation notices.
  • Composer resolution failure on PHP upgrade → if the package is in 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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle