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

Addressable Laravel Package

maggomann/addressable

Maggomann Addressable is a Laravel package that adds polymorphic address support to your Eloquent models, letting any model store one or more addresses through a simple trait and relation.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Scope of this release (v0.2.2). The published release notes contain only an auto-generated compare link (v0.2.1...v0.2.2) with no changelog body, no migration notes, and no deprecation callouts. On a 0.x project, semver permits breaking changes in any minor bump, and patches are intended to be non-breaking — but "intended" is not evidence. Treat v0.2.2 as a presumed patch release of unknown content until the commit diff is read.

Architecture fit. Based on the package name and Laravel ecosystem conventions, this appears to provide an address model plus a polymorphic addressable contract/trait so that entities (User, Order, Warehouse, etc.) can own one or more addresses without duplicating schema. That fits a common Laravel pattern: a domain-adjacent, Eloquent-native package layered over migrations and model traits, consumed via Composer with optional config publishing. Fit is high if our need is "several models need postal addresses"; fit is poor if we need geocoding, address validation/normalization against a vendor, or country-specific address schemas — those are separate concerns and likely out of scope.

Integration feasibility. Low-to-moderate effort, assuming standard Laravel packaging: composer require, publish migrations/config, run migrations, add the trait to host models, and define any address type/role enumeration we require. The real cost is not installation; it is the data model decision — whether addresses are owned (one-to-many, denormalized per entity) or shared (many-to-many, reusable address book), and whether the package's default schema matches our reporting and dedupe needs.

Technical risk.

  • Pre-1.0 API instability (high). Anything in 0.x can shift in a minor release. Budget for pinning and for periodic upgrade work.
  • Undocumented change surface (high, this release). The empty release notes mean we cannot triage risk from the notes alone. A silent patch on a pre-1.0 package is exactly the case where a diff review is mandatory.
  • Polymorphic relation integrity (medium). addressable_type/addressable_id columns are unenforceable at the DB level; orphaned addresses after entity deletion are a known failure class. Confirm cascade/cleanup behavior in the package or add it ourselves.
  • Schema ownership (medium). If the package ships migrations we do not control, customizing address fields (e.g., adding label, is_default, geo columns) means either extending the table or forking.
  • Maintenance signal (medium). Single-maintainer packages are a concentration risk. Release cadence is a positive signal; the missing changelog body is a negative one.

Key questions.

  1. What actually changed between v0.2.1 and v0.2.2 — diff, files touched, any migration or signature edits?
  2. Is the address schema one-to-many, many-to-many, or both? Can we add columns without forking?
  3. What happens to addresses when the parent entity is deleted — DB cascade, model event, or nothing?
  4. Any validation, normalization, or country handling included, or is it pure persistence?
  5. Supported Laravel/PHP matrix, and is there a CI matrix proving it?
  6. Test suite depth and coverage of the polymorphic edge cases?
  7. Is there a tagged 1.0 roadmap, or is 0.x the steady state?

Integration Approach

Stack fit. Presumes a conventional Laravel app on Eloquent with standard Composer workflow. It is a low-coupling, domain-adjacent dependency — it does not touch queues, HTTP, or auth — so it can be adopted narrowly by one or two models first without disturbing the rest of the application. That containment is the main reason this is a low-risk pilot rather than an architecture decision.

Migration path. Two phases, deliberately asymmetric:

  • Pilot (one entity). Install, publish, review the generated migration, apply in a dev branch, attach the trait to a single low-stakes model (not User), and write an address CRUD path end to end. This validates the schema and the trait contract cheaply.
  • Broaden. Only after the pilot, extend to the remaining host models and backfill any existing address data. If existing addresses live in denormalized columns on the host tables, plan an explicit extract-transform-load step — this is the highest-effort, least-reversible part and should be scoped as its own deliverable with a rollback that preserves the source columns until verified.

Compatibility. Confirm, from composer.json and CI config rather than release notes, the supported PHP and Laravel versions against our current floor and our next upgrade target. Also confirm the package's stance on the Illuminate major we plan to run, since a stall here can block a framework upgrade later. Pin to an exact version (0.2.2) — do not use a caret range on a 0.x dependency, where ^0.2 silently accepts 0.3.

Sequencing.

  1. Diff review of v0.2.1→v0.2.2 and read composer.json, migrations, and tests. (Blocking gate — do this before anything else.)
  2. Decide owned vs. shared address model against our reporting/dedupe requirements.
  3. Pin 0.2.2; pilot integration on one non-critical model.
  4. Add cleanup guarantees for polymorphic orphans if the package does not provide them.
  5. Data backfill (if applicable) behind a feature flag, with source columns retained.
  6. Broaden adoption and document the extension points we used.

Operational Impact

Maintenance. Expect recurring upgrade work proportional to release cadence on a 0.x line, plus the cost of our own extensions (extra columns, cleanup logic, validation). Every minor bump should trigger a diff review, not just a changelog read — the v0.2.2 notes demonstrate why. Assign a named owner; an unowned pre-1.0 dependency tends to sit unchanged until a framework upgrade forces the issue.

Support. Upstream support is community/single-maintainer: GitHub issues, no SLA, no vendor escalation path. Our internal support surface is small (address persistence), so this is acceptable if we can absorb a fix ourselves. Before broad adoption, confirm we have someone able to read and patch the package — if not, the exit cost is higher than the entry cost.

Scaling. Address data is low-volume and read-heavy relative to core transactional tables; no scaling concern at the package level. Watch two things: index coverage on the polymorphic columns (addressable_type, addressable_id — composite index is typically required for lookup performance), and query patterns that eager-load addresses across large collections. If we add geocoding or validation, that is an external-service concern with its own rate limits and costs, not something this package governs.

Failure modes.

  • Silent breakage on upgrade. A patch or minor changes behavior or schema; no changelog flags it. Mitigation: exact version pin, diff review on bump, integration test covering address create/read/update/delete and orphan cleanup.
  • Orphaned addresses. Parent deleted, address rows remain. Mitigation: DB-level cascade or model event, verified by test.
  • Migration collision. Package migration filename or table name conflicts with existing schema. Mitigation: read the migration before running it; consider renaming or inlining the schema under our own migration ownership.
  • Schema lock-in. Needing a field the package does not model, forcing a fork. Mitigation: validate our field list against the shipped schema during the pilot, before data lands.
  • Dependency stall. Package stops tracking Illuminate majors and blocks a framework upgrade. Mitigation: note the exit path (short, package-shaped code; migration of the table into app-owned models is a day, not a quarter) and revisit at each framework upgrade.

Ramp-up. Low for a Laravel-fluent engineer: the trait-plus-migration idiom is familiar, and the pilot should take well under a sprint. The non-obvious cost is the owned-vs-shared data modeling decision, which needs a product/reporting perspective, not just an engineering one. Budget a short design conversation up front; it is far cheaper than reworking address data after backfill.

Recommendation. Proceed to pilot, gated on the diff review of v0.2.2. The release itself does not change our position — it is an undocumented patch on a pre-1.0 package, which is neutral-to-mildly-negative on process and neutral on capability. Pin exactly, contain the blast radius to one model, and revisit the assessment when a substantive changelog or a 1.0 tag appears.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core