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

Time Formatter Bundle Laravel Package

nehlsen/time-formatter-bundle

A Symfony bundle that adds reusable services for formatting time values in your templates and PHP code. Keeps duration and time display logic in one place so views stay clean. Install via Composer, then configure and use the provided formatter in your controllers or Twig templates.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is published as nehlsen/time-formatter-bundle, and the -bundle suffix is Symfony Bundle convention (DI extension class, Resources/config, FrameworkBundle registration), not Laravel package convention (service provider + facade + publishable config). Nothing in the release history indicates a Laravel service provider, auto-discovery entry, or facade. Treat this as "a PHP library that may be usable from Laravel" rather than "a Laravel package" until a composer.json extra.laravel.providers block and a Illuminate\Support\ServiceProvider subclass are confirmed. Scope appears limited to date/time formatting, which is a low-blast-radius concern and therefore easy to isolate or replace — that is the main thing working in its favour.

Integration feasibility. Version 2.0.1 changes exactly one thing: the package name declared in composer.json. That is materially more significant than a typical patch. A wrong package name in a published composer.json means the artifact 2.0.0 either failed to install, installed under an identity that did not match the Packagist listing, or produced a vendor/ path and lockfile entry inconsistent with what consumers referenced. Any integration attempt must be validated against 2.0.1 specifically; 2.0.0 should be treated as unusable and not as a fallback. Everything else about the package is unverified from this changelog: supported PHP versions, Laravel version constraints, illuminate/support compatibility, test coverage, and whether the formatting surface is locale/timezone aware.

Technical risk. Three risks dominate. First, ecosystem mismatch — installing a Symfony bundle in Laravel commonly means manually instantiating classes rather than resolving them from the container, and any services.yaml-based wiring is inert. Second, identity instability — a package name correction shipped as a patch bump can change the vendor directory and lockfile reference between 2.0.0 and 2.0.1, so teams that pinned 2.0.0 may need to remove and re-require rather than run composer update, and any internal fork or mirror referencing the old name will diverge silently. Third, single-maintainer concentration: two pull requests and a one-line changelog across two releases is thin evidence of a maintenance cadence, so bus-factor risk is high.

Key questions.

  • What is the authoritative package name on Packagist, and does it match the name field in the 2.0.1 composer.json exactly?
  • Does 2.0.1 declare a Laravel service provider under extra.laravel, or only a Symfony bundle class?
  • Which illuminate/* / symfony/* version ranges are declared, and does that overlap our current Laravel LTS?
  • Is 2.0.0 yanked or still resolvable? If still resolvable, do we need a repo-level constraint to prevent accidental install?
  • What date/time formatting behaviour does the library actually own — parsing, timezone conversion, locale-aware output, relative-time/humanise? This determines whether it is a convenience wrapper around Carbon or a genuine capability.
  • Is there a test suite and CI matrix in the repository, and does it run against the PHP versions we deploy?

Integration Approach

Stack fit. Provisional fit is "usable with an adapter." The likely integration is: keep the dependency at the Composer level, but do not rely on framework auto-wiring. Bind the formatter behind an internal interface in our own service provider so call sites depend on our abstraction, not on the vendor class. This costs a small amount of glue code and buys us the ability to swap to Carbon/IntlDateFormatter-based formatting if the dependency stalls — which, given the maintenance signal, is the appropriate default posture. If the package turns out to be Symfony-only with no container-agnostic entry point, fit drops to "evaluate alternatives first."

Migration path. There is no prior assessment and no prior install, so this is greenfield rather than migration. The only migration artefact is the 2.0.0 → 2.0.1 name correction: if any spike branch already required 2.0.0, discard it and re-require from scratch on 2.0.1, then rebuild the lockfile. Do not attempt an in-place composer update from 2.0.0; a changed package name is an identity change, not a content change.

Compatibility. Verify against our actual runtime rather than the README: PHP version floor, Laravel LTS minor, composer.json require block, and whether the package pulls in Symfony components that could collide with Laravel's own dependency graph. Pay particular attention to any transitive symfony/* constraints — bundles frequently pin components to major versions that conflict with what Laravel already resolves, which turns a small formatting utility into a dependency-resolution negotiation.

Sequencing.

  1. Confirm Packagist name and 2.0.1 metadata match; confirm 2.0.0 is not silently resolvable.
  2. Spike install in a throwaway Laravel app; record resolved dependency delta against a clean baseline.
  3. Determine the actual formatting surface and write a thin internal interface around it.
  4. Only then decide adopt vs. reimplement-on-Carbon — the decision hinges on whether the package does anything meaningfully beyond what Carbon already provides, which for a "time formatter" is genuinely uncertain.
  5. If adopted, pin the exact version and add a lockfile-review step for the first few upgrades given the name-change precedent.

Operational Impact

Maintenance. Low ongoing code cost, but non-trivial tracking cost. The dependency is small enough to vendor or replace, so the real obligation is monitoring upstream. Single-maintainer projects with two-PR histories warrant a scheduled quarterly review and a standing note in the dependency register that replacement is cheap and pre-planned.

Support. No commercial backing is evident. Upstream support is best-effort issues on a personal repository. Internal support burden sits with whichever team owns the formatting abstraction — which is another argument for the interface wrapper: it converts an upstream outage into an internal swap rather than a cross-team incident.

Scaling. The workload is CPU-bound formatting with no I/O, no shared state, and no persistence. It scales horizontally with the application and introduces no new bottleneck, no connection pool pressure, and no cache dependency. The only scaling consideration is per-request object construction — bind the formatter as a singleton rather than resolving it per format call.

Failure modes. Ranked by likelihood and impact:

  • Package identity drift — the vendor path or lockfile reference changes across a patch release, breaking CI or a deploy artefact. Mitigated by exact-version pinning and lockfile diff review.
  • Abandonment — no upstream commits for an extended period. Impact is bounded because the domain is narrow; the interface wrapper makes replacement a contained ticket.
  • Dependency-graph conflict — a future release tightens a symfony/* constraint and blocks a Laravel upgrade. Mitigated by recording the resolved dependency delta at adoption time so future conflicts are diagnosable in one step.
  • Silent behavioural divergence — formatting output differs from our current convention in locale, timezone, or DST edge cases. Mitigated by a golden-file test suite on the internal interface covering DST boundaries and non-UTC locales before rollout.

Ramp-up. Small. A developer can be productive in under half a day given the narrow API surface. The non-obvious learning is ecosystem, not API: engineers expecting Laravel conventions will look for a facade and a config file that do not exist, and will need to know that this is a Symfony-shaped package consumed as a plain library. Budget that as a short note in the onboarding docs rather than as training.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin