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

Transformers Laravel Package

saritasa/transformers

Saritasa Transformers is a Laravel package for turning models and data structures into consistent arrays or JSON using reusable transformer classes. It keeps API output, nested relationships, and custom formatting organized and easy to maintain.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. saritasa/transformers is a thin opinionated layer over league/fractal, which means it inherits Fractal's whole architectural worldview: a presentation/transformation layer that sits between Eloquent models and serialized API responses, with transformers, includes, and serializers as first-class concepts. That pattern predates — and is now largely displaced by — Laravel's native JsonResource/ResourceCollection and, for richer DTO workflows, spatie/laravel-data. Adopting this package therefore doesn't just add a utility; it commits the codebase to a transformation paradigm that the surrounding ecosystem has moved past. The value it adds over vanilla Fractal is unclear from the outside: with 1 star and 0 dependents, there is no public evidence of what the "custom" transformers actually are, which is the single most important unknown.

Integration feasibility. Mechanically trivial — a Composer require against an MIT-licensed package with a tagged release as recent as August 2024. Politically and operationally harder: the repository is archived, which is an explicit upstream statement that no further releases, PHP version bumps, Laravel compatibility shims, or security patches will arrive. Integration is only feasible if we treat the package as source we own rather than a dependency we consume — i.e., fork it, vendor it, or copy the transformers we need.

Technical risk. High, and concentrated in three places. First, abandonment: an archived package with a single-maintainer provenance (a dev agency's internal utility) has no continuity path. Second, transitive exposure: the real risk surface is league/fractal and its dependency tree, which we'd be pinned to at whatever versions the archived package's composer.json allows; a future Laravel or PHP minor can silently break the constraint graph with no upstream remedy. Third, zero validation: 0 dependents and 1 star means no battle-testing, no issue history to mine for known failure modes, and no Stack Overflow corpus. The low opportunity score (20.29) and composite score (0.0175) are consistent with a package that was published for the authors' convenience, not for external adoption.

Key questions to resolve before any decision.

  • What do these transformers do that vanilla Fractal (or JsonResource) does not? If the answer is "conventions and base classes," we can reimplement in a day.
  • What are the declared PHP and Laravel version constraints, and do they survive our target runtime?
  • Is there test coverage, and does it run green on a modern PHP/Laravel matrix?
  • Is the archive a hard stop, or is there an unarchived successor package from the same org?
  • Does any part of our existing codebase already depend on league/fractal? That changes the calculus from "adopt" to "consolidate."

Integration Approach

Stack fit. Narrow. This is a fit only for Laravel services already standardized on league/fractal and looking for shared base transformer classes — a legacy-modernization context, not a greenfield one. For any service on Laravel 10+ without an existing Fractal commitment, native API Resources cover the same ground with first-party support, and spatie/laravel-data covers the typed-DTO case with active maintenance. Recommending this package into a greenfield service would be a defensible-only-if-nothing-else-exists call, and it isn't.

Migration path. Two viable routes, both of which assume we own the code:

  1. Consolidate inward: cherry-pick the specific transformer classes we actually need into our own app/Support/Transformers namespace, drop the Composer dependency, and keep Fractal (if already present) or port the logic to JsonResource. Lowest long-term cost.
  2. Fork and vendor: fork the repo under our org, re-tag, pin to our own Git/VCS repository in composer.json, and add a CI matrix so Laravel/PHP upgrades are caught by us rather than by production.

What I would not do is add saritasa/transformers as a normal Packagist dependency. That path defers a maintenance obligation to a party that has explicitly declined it.

Compatibility. Unknown and unverifiable going forward. The August 2024 release is recent enough that it likely works on the Laravel 10/11 era, but an archived repo gives no signal for Laravel 12, PHP 8.4, or beyond. Treat any compatibility claim as a one-time snapshot, not a guarantee, and gate adoption on running the package's own tests against our target matrix first.

Sequencing. (1) Inventory whether we already use Fractal anywhere — this determines whether the conversation is "adopt" or "replace." (2) Spike: read the source and characterize the delta versus vanilla Fractal; timebox to a day. (3) Decide on port-in vs. fork vs. discard. (4) If retained, fork, add CI, document ownership and an exit criterion. (5) If discarded, no further work — this is the expected outcome and should be the default.

Operational Impact

Maintenance. Effectively total, and it lands on us. An archived dependency means every future PHP or Laravel upgrade is our problem to diagnose, and there is no upstream to escalate to. Budget it as internal code from day one, not as a third-party library.

Support. None. No issue triage, no CVE response, no maintainer Q&A. Any advisory in league/fractal or its transitives is ours to remediate, and our only lever is patching a fork — which is fine for a small surface area and painful for a large one.

Scaling. Runtime scaling is a non-issue: a transformation layer is not a throughput bottleneck, and Fractal's overhead is negligible relative to query and serialization costs. The scaling risk is organizational — the number of engineers who must learn a bespoke, undocumented, unmaintained convention grows with the team, and so does the cost of the eventual migration off it.

Failure modes. The realistic failure modes are quiet, not loud: a dependency constraint resolving to an incompatible league/fractal during a routine composer update; a Laravel major version that changes resource/serialization internals and breaks transformer output in ways tests don't cover; a security advisory with no patched release; and the slow accrual of tribal knowledge around a package that new hires cannot Google. The blast radius is API contract drift — response shape changes that surface in client integrations rather than in CI.

Ramp-up. Learning cost is low in absolute terms — a Fractal-familiar engineer is productive in hours, and a Fractal-unfamiliar engineer in a day or two. The real ramp-up cost is the absence of documentation and community, meaning every question routes to reading source or to whoever originally integrated it. For a package this small, that's a bus-factor problem rather than a skills problem, and it should be weighed against the near-zero cost of reimplementing the handful of classes that actually matter.

Recommendation. Do not adopt as a dependency. If Fractal is already in the stack, assess the source and port the useful transformers inward — the package is small enough that this is cheaper than the governance overhead of maintaining a fork. If Fractal is not already in the stack, use Laravel API Resources and close the evaluation.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager