glhd/laravel-timezone-mapper
Laravel Timezone Mapper helps map IANA timezone identifiers to the values your app needs, with a clean Laravel integration and simple API. It makes timezone lookups and display easier in forms, APIs, and user settings.
What 1.5.0 is. A minor-version release whose stated content is Laravel 13 support plus "modern conventions." Neither the release note nor the supplied data set includes a diff, constraint changes, or a test matrix, so this assessment treats the changelog as a signal of framework-compatibility work rather than evidence of behavioral change. Every capability claim below is flagged for verification against the actual composer.json diff and public API surface.
Architecture fit. glhd/laravel-timezone-mapper is a thin domain utility: it resolves and normalizes timezone identifiers/offsets so application code does not hand-roll mapping tables or string comparisons. That is architecturally cheap to adopt — it should sit beneath application services as a stateless helper, with no persistence, no service provider boot work beyond container binding, and no middleware. Fit is good precisely because it is shallow: it does not impose a data model, and replacing it later is a bounded refactor if we keep the call sites behind our own small abstraction (a Timezones interface or wrapper) rather than referencing the package facade directly in controllers, models, and Blade templates.
Integration feasibility. Standard Composer install with Laravel package auto-discovery; likely a publishable config. Feasibility hinges on one thing the release note does not state: whether 1.5.0 widens the illuminate/support constraint to include 13 or replaces it, dropping 10/11/12. A minor bump that raises the PHP floor or narrows framework support is semver-questionable even if intentional, and it can block unrelated dependency upgrades in a shared monorepo.
Technical risk.
illuminate/* constraint.Key questions.
illuminate/support and php constraints? What is the minimum supported PHP and Laravel?DateTimeZone, or an external service — and how is it refreshed when tzdata changes?Stack fit. Appropriate for any Laravel application that accepts user- or partner-supplied timezone data, converts display strings to canonical identifiers, or generates offset labels. It is not a scheduler, an event-calendar library, or a substitute for storing UTC plus a named zone — we should keep the storage convention (UTC timestamps, IANA identifier column) ours and use the package only at the boundaries.
Migration path.
composer.json constraints with composer why-not glhd/laravel-timezone-mapper 1.5.0 in a scratch branch to surface conflicts without touching the trunk lockfile.Compatibility. Verify against queue workers and Octane (long-lived workers cache container bindings — re-test config resolution), FormRequest validation rules if the package supplies any, and API resources that serialize timezone names. Confirm PHP and extension requirements match our base images, and that the package's mapping assumptions agree with the Postgres/MySQL session timezone settings we ship.
Sequencing. Do not take 1.5.0 as a standalone upgrade. Bundle it with the Laravel 13 migration so the framework bump and the package's support matrix move together; if we are staying on 11/12 for now, pin ^1.4 explicitly, confirm 1.4 still receives security-relevant fixes, and revisit at the framework upgrade. If we are already targeting 13, adopt 1.5.0 early in that migration — it is a low-risk canary for the rest of the dependency graph.
Recommendation. Conditional adopt. Take 1.5.0 as part of the Laravel 13 upgrade, behind the internal wrapper, with a pinned fallback to 1.4 if constraint conflicts appear. Do not upgrade solely for the version number.
Maintenance. Small surface area, infrequent releases, low ongoing cost — but the upgrade cadence is coupled to Laravel majors, so it will demand attention exactly when the framework upgrade is already consuming capacity. Pin the version, watch the repository's release feed, and keep the wrapper thin enough that a fork or a ~100-line internal replacement is a realistic fallback.
Support. Community-only, best-effort, no SLA. Escalation is a GitHub issue. For anything in a revenue-affecting path (billing periods, SLA timestamps, scheduled notifications), the wrapper should own the semantics so a maintainer going quiet is an inconvenience rather than an incident.
Scaling. Negligible runtime cost — mapping is in-memory lookups, not I/O. The only scaling-adjacent concerns are per-request config resolution under Octane and, if mapping tables are ever loaded from disk or a service, the absence of a cache layer. Neither is material at our volumes.
Failure modes.
Mitigations: validate and canonicalize input at the edge, store UTC plus an IANA zone, assert tzdata version parity across environments, and add a test suite pinned to known DST transition instants.
Ramp-up. A Laravel developer is productive in under an hour on the API; the real onboarding cost is the timezone domain — DST transitions, ambiguous times, offset-versus-zone confusion, and why "store the offset" is wrong. Budget that as a documentation task (one page of house conventions plus the DST test fixtures), not as package training. Total effort to adopt inside the Laravel 13 migration: one to two engineer-days including tests and staging soak.
How can I help you explore Laravel packages today?