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

Maps Bundle Laravel Package

nucleos/maps-bundle

Symfony bundle for adding interactive maps to your application. Configure map providers, render maps in Twig, and place markers and locations, keeping map setup centralized so pages can display geographic data with minimal effort and configuration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What the package actually is. nucleos/maps-bundle is a Symfony bundle, not a Laravel package. Its scope is narrow and presentation-layer: it renders a map (marker/coordinate data → HTML/JS map widget) inside a Symfony application, primarily via Twig templating and Symfony DI configuration. That single fact dominates the evaluation, because the stated context is a Laravel/PHP stack.

What changed in 3.7.0 (2026-05-01). One PR, one contributor, zero issues closed. The change is Add support for willdurand/geocoder-bundle 7 — a dependency-compatibility bump widening the supported range of the optional geocoder integration. No new rendering features, no provider abstraction, no breaking changes, no deprecations, no API surface changes. For our purposes this is a maintenance signal, not a capability change: the project is still receiving compatibility updates, and it is still being maintained by essentially one person.

Architecture fit. Weak-to-moderate as a direct dependency in a Laravel codebase. A Laravel app has no bundle registration mechanism, no Twig-by-default view layer, no Symfony DI container to load the bundle's service definitions, and no AbstractBundle/Bundle kernel integration. Adopting it "as-is" would require a Symfony kernel running inside or alongside Laravel — an architectural mismatch far out of proportion to the value of rendering a map. Fit improves dramatically if the target stack is Symfony (or a hybrid where Symfony components are already bootstrapped), in which case this is a clean, purpose-built fit. 3.7.0 sharpens this: the release is entirely about tracking a Symfony bundle major version, which is further evidence the package's center of gravity is the Symfony ecosystem and its release cadence is driven by Symfony dependency churn, not by map-rendering feature demand.

Integration feasibility. Two realistic paths:

  1. Pattern extraction (recommended). Read the bundle as a reference implementation: its data shapes for markers/coordinates, its template structure, its JS/asset wiring, and how it delegates geocoding to willdurand/geocoder-bundle behind an interface. Reimplement in a Laravel package of our own (Blade component + config file + service provider + published JS assets), roughly 1–3 days of work for a simple map widget. This gets us the domain insight with zero coupling and full control. The geocoder integration is worth reading specifically, because it is the one place the bundle demonstrates a seam we would want to replicate as a Laravel contract.
  2. Direct adoption. Only viable if a Symfony runtime already exists in the estate (e.g., a legacy Symfony app, or a Symfony-based CMS we are integrating with). In that case the bundle is a standard Composer install plus bundle registration and config, and the 3.7.0 geocoder-bundle-7 support may actually unblock us if our Symfony estate already runs geocoder-bundle 7 — verify the version alignment before assuming it does.

Technical risk.

  • Low blast radius. Map rendering is presentation-only; failure degrades a UI element, not a transaction path. No database migrations, no auth surface, no queue semantics introduced.
  • High adoption/support risk. 5 stars, 0 dependents, single-vendor provenance (Nucleos is an internal tooling org publishing its own bundles). We would be among the first external consumers. 3.7.0 confirms rather than relieves this: 1 contributor, 1 PR, 0 issues in the release. This is the dominant risk, not the code.
  • Bus factor of one. @core23 authored the sole change. The project's continuity is that individual's attention. Nothing in 3.7.0 suggests a maintainer bench is forming.
  • Compatibility churn originates upstream in Symfony. Because releases are driven by Symfony dependency majors (as 3.7.0 demonstrates), each Symfony major cycle is likely to generate a release here — good for freshness, but it also means the package's compatibility envelope is defined by third parties, and a lag at the wrong moment is plausible.
  • Coupling risk if adopted directly. Twig templates, Symfony asset handling, bundle config conventions, and now a coupling to willdurand/geocoder-bundle major versions mean customizing the output (custom markers, clustering, provider swap) may require forking.
  • Licensing. MIT — no legal friction, and fork-and-own is explicitly permitted.

Key questions.

  • Is any part of our stack Symfony-based, or is this strictly a Laravel estate? (Determines whether path 1 or 2 applies.) If Symfony, does that estate already run willdurand/geocoder-bundle 7 — i.e., does 3.7.0 unblock us or is it irrelevant?
  • What does "leverage" mean here: dependency adoption, or harvesting design patterns?
  • Which map provider/rendering approach do we actually require (Leaflet/OpenStreetMap vs. Google Maps vs. Mapbox), and does the bundle support it, or is it hard-wired? 3.7.0 did not touch this, so the rigidity we flagged previously stands.
  • Who maintains it upstream, what is the release cadence, and what is the bus factor? (Partial answer from 3.7.0: one contributor, cadence tied to Symfony dependency majors, bus factor one.)
  • Does the bundle handle our data volume (many markers, clustering, server-side geocoding) or only simple static rendering? The geocoder integration delegates to willdurand/geocoder-bundle, so geocoding is a composable dependency, not a built-in capability — clarify whether that is sufficient for our needs.
  • The 2026-05-01 date is now corroborated by a second data point. Treat it as a consistent metadata convention rather than an error, but still validate version resolution against actual repository tags.

Integration Approach

Stack fit. Poor against a pure Laravel stack; good against a Symfony stack. Concrete gaps in Laravel: no auto-discovery of bundle service definitions, no Twig view engine by default, no Symfony form/asset component assumptions satisfied, and no geocoder-bundle wiring. A Laravel adapter would be a shim we own and maintain — effectively a fork with extra steps. 3.7.0 does nothing to narrow this gap; it widens the set of Symfony-side dependencies we would need to satisfy.

Migration path (if we choose pattern extraction, which I still recommend).

  1. Harvest, don't install. Pull the bundle into a read-only review: marker/DTO shape, template markup, JS asset wiring, config keys and defaults, and the geocoder adapter boundary introduced/widened in 3.7.0.
  2. Re-implement as a first-party Laravel package: config/maps.php, a service provider, a Blade component (<x-map :markers="$markers" />), published JS/CSS assets via Vite, and an optional geocoding adapter behind our own interface — mirroring the seam the bundle uses for willdurand/geocoder-bundle, but as a Laravel contract.
  3. Keep the provider abstraction. Model the map provider (Leaflet/Google/Mapbox) as a swappable driver from day one; this is where the upstream bundle remains rigid and we should not inherit that rigidity. Three minor releases into 3.x, no provider abstraction has appeared.
  4. Deprecate the upstream dependency. No runtime reference to nucleos/maps-bundle; document the provenance (including the version reviewed, 3.7.0) so future maintainers know where the patterns came from.

Migration path (if direct adoption is forced by an existing Symfony subsystem).

  • Composer require with a pinned minor version (~3.7.0); register the bundle in config/bundles.php; publish/verify its config; confirm asset pipeline compatibility (AssetMapper vs. Webpack Encore vs. Vite); validate against the installed Symfony and Twig major versions.
  • If we rely on geocoding, confirm willdurand/geocoder-bundle 7 is present and consistent across the estate — 3.7.0 is precisely the release that makes that combination supported, so this is the one scenario where upgrading is clearly positive.
  • For a hybrid Laravel + Symfony estate, isolate the Symfony app that renders maps behind an HTTP boundary rather than co-mounting two kernels in one process.

Compatibility work required before any commitment.

  • Read composer.json at the 3.7.0 tag: PHP constraint, symfony/* constraint range, Twig major, asset component requirement, and the new willdurand/geocoder-bundle constraint.
  • Confirm behavior on our PHP version and on the framework versions we standardize on.
  • Verify the render path in a throwaway Symfony skeleton app (half a day) to see actual output, JS footprint, and whether a provider can be swapped without forking.
  • Read PR #963 directly — it is small enough to review in full and tells us exactly how the geocoder coupling is expressed.

Sequencing.

  1. Spike (0.5–1 day): confirm stack reality (Laravel-only vs. mixed), read composer.json and templates, review PR #963, verify tag history.
  2. Decision gate: if Laravel-only → pattern extraction; if Symfony present → direct adoption PoC, with 3.7.0 as the minimum acceptable version if geocoder-bundle 7 is in play.
  3. PoC (1–2 days): Laravel Blade component rendering the same data shapes; compare output and effort against building from scratch with Leaflet directly.
  4. Package and document (2–3 days): first-party package, tests around marker serialization and escaping, README, example.
  5. Adopt in one surface, then roll out.

Given 5 stars, 0 dependents, and a single-contributor release, I would not schedule a direct-adoption path unless a Symfony runtime already exists. 3.7.0 does not change that calculus; it only tells us the dependency bump is a live option for a Symfony shop. The expected value of the dependency itself remains low; the expected value of the reference implementation is moderate.

Operational Impact

Maintenance. Direct adoption creates a dependency we cannot influence and a small upstream unlikely to prioritize our issues. 3.7.0 reinforces the shape of this: releases happen, but they are reactive to Symfony dependency majors and land as single-PR, single-author events. With zero dependents, we would be a de facto beta tester. Every Symfony/PHP upgrade becomes a coordination problem where the bundle may lag. Pattern extraction converts this into code we own — more upfront cost, far lower long-term maintenance variance.

Support. No meaningful community, no Stack Overflow corpus, no third-party tutorials. Support is "read the source." That is acceptable for a ~200-line rendering concern and unacceptable for anything load-bearing. Budget for one engineer to become the internal owner in either path.

Scaling. The package's stated scope is simple map rendering. Expect limits around: large marker counts (client-side clustering is not a given), server-side geocoding/tile proxying, and caching of rendered fragments. Geocoding is delegated upstream to willdurand/geocoder-bundle, so our geocoding throughput and failure semantics are governed by that dependency, not this one — factor it into capacity planning separately. If our roadmap includes heatmaps, routing, or high-density datasets, plan to outgrow the bundle and design the internal abstraction so the renderer is replaceable.

Failure modes.

  • Silent upstream abandonment — no security patches, no framework compatibility updates; mitigated by pinning and by not adopting directly. 3.7.0 lowers this risk slightly for now but does not change the structural exposure.
  • Dependency-chain breakage — 3.7.0 introduces a hard compatibility statement about willdurand/geocoder-bundle 7; if our Symfony estate is pinned to an older geocoder-bundle, adopting 3.7.0 forces a coordinated upgrade, and adopting an older maps-bundle forces the reverse.
  • Asset pipeline breakage — bundle assets not picked up by Vite/Encore configuration; surfaces as a blank map container, easy to triage, easy to miss in CI.
  • Provider lock-in — hard-wired tile/JS provider; swapping providers requires a fork. Unchanged by this release.
  • Data escaping / XSS — marker labels and popups rendered into HTML; must verify escaping on any template we inherit or reimplement.
  • API key exposure — client-side map providers require keys; ensure the config path does not push secrets into version control or public bundles.
  • Metadata risk — the 2026-05-01 date now appears consistently across two records, so treat the anomaly as convention rather than error; still validate version resolution against actual repository tags.

Ramp-up. Low for the map-rendering domain itself (a competent PHP engineer is productive in under a day). High for the Symfony-bundle-in-Laravel bridge, which is where most of the effort and all of the resentment would go. Pattern extraction keeps ramp-up at "read one small package and its Blade equivalent."

Recommendation. Do not add nucleos/maps-bundle as a runtime dependency in a Laravel codebase. Use it as a design reference for a small first-party map component (1–3 engineer-days), and reserve direct adoption for a scenario where a Symfony runtime is already present, the map requirement is genuinely simple, and the estate is already on willdurand/geocoder-bundle 7. 3.7.0 is a routine dependency-compatibility release: it is mildly reassuring as a maintenance signal and materially irrelevant to the Laravel decision. Reassess if upstream gains dependents, a maintainer bench, or a documented provider abstraction.

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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource