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

Fixr Laravel Package

zenphp/fixr

Fixr by ZenPHP is a Laravel/PHP package that provides a simple, developer-friendly way to handle common fix-up tasks, with straightforward setup and minimal configuration for smoother project maintenance.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. zenphp/fixr is a development-time tool, not a runtime dependency, which is the single most favorable fact in this assessment. A formatter sits at the edge of the architecture: it reads source, rewrites whitespace and token layout, and never ships to production. That means the blast radius of adopting — or later abandoning — it is confined to CI configuration, pre-commit hooks, and the diff noise of one reformatting commit. For a Laravel/PHP shop already standardizing on Pint or PHP-CS-Fixer, the architectural question is not "can we integrate this" but "does its opinionated ruleset buy us anything the incumbent doesn't."

Integration feasibility. Mechanically straightforward: a require-dev entry, a config file at repo root, a CI job, and an optional Husky/Grunt or CaptainHook pre-commit step. The real feasibility gate is whether the package is a thin wrapper over an established engine (PHP-CS-Fixer, PHP_CodeSniffer, or nikic/php-parser) or a bespoke tokenizer. A wrapper inherits upstream maturity and rule coverage; a bespoke parser is a far larger surface for semantic-changing bugs. This must be confirmed by reading the source before any pilot, not inferred from the README.

Technical risk. The dominant risk is project maturity, not code quality. Zero stars, zero dependents, a score of 0.5, and no observable downstream usage mean there is no evidence base: no battle-tested edge cases, no third-party bug reports, no community pressure on the maintainer to fix PHP-version regressions. A formatter that mishandles a heredoc, an attribute, a first-class callable, or PHP 8.4 asymmetric visibility can silently alter program semantics — the worst failure class for a tool whose output is committed. Secondary risks: single-maintainer abandonment, no security disclosure process, unverified test coverage, and an "opinionated" ruleset that may diverge sharply from the team's existing style, producing a large one-time diff that collides with in-flight branches.

Key questions.

  • What engine underpins the formatter, and what is the package's own code volume versus wrapper code?
  • Which PHP and Laravel versions are declared and CI-tested? Is PHP 8.4 covered?
  • Does it support --dry-run/--test with non-zero exit codes, and diff output suitable for CI?
  • Is there a parallelization or cache mechanism, and what is the wall-clock cost on a 500k-LOC monorepo?
  • How does it coexist with Pint? Can it run on a subtree or must it own the whole repo?
  • What is the release cadence, issue-response history, and is there a tagged support/security policy?
  • Is there an escaping/config mechanism for generated code, vendor paths, and Blade-embedded PHP?
  • What does the test suite look like — fixture-based idempotency tests, or none?

Verdict for decision-making: treat this as an unproven tool with a low-cost evaluation path, not as a candidate for organizational standardization. It is a spike, not an adoption.

Integration Approach

Stack fit. Composer-native, PSR-4, MIT-licensed — no impedance mismatch with a Laravel codebase. The fit question is stylistic: an opinionated formatter is a policy decision, and the team must accept its defaults wholesale or the value proposition collapses into per-rule configuration debt.

Migration path. Do not run it across the repo on day one. Sequence:

  1. Source audit (0.5 day). Read the dependency tree and entry points; classify as wrapper vs. bespoke; confirm PHP version support and CI presence.
  2. Shadow evaluation (1–2 days). Install as a dev dependency on a throwaway branch. Run in dry-run mode across the full codebase and capture the diff. Compare token-for-token against Pint's output on the same tree. Any diff that is not pure formatting is a stop-ship signal.
  3. Bounded pilot (1 sprint). Apply to one non-critical module or a single team's package. Enforce in that scope's CI only. Measure developer friction and pre-commit latency.
  4. Decision gate. Adopt, defer, or reject against explicit exit criteria: zero semantic diffs, CI runtime under an agreed threshold, maintainer responsiveness demonstrated by at least one answered issue, and a documented rollback (delete config, revert dev dependency, no production code touched).
  5. Optional standardization. Only after a clean pilot, with a single pinned version, a committed config, and a repo-wide reformat scheduled during a code freeze.

Compatibility. Verify coexistence with editor format-on-save (PHPStorm, VS Code Intelephense), with PHPStan/Psalm baselines (formatting can shift line numbers in ignore comments), and with git blame hygiene — plan a .git-blame-ignore-revs entry for the reformat commit. Check interaction with Laravel's own pint.json if both are present; two formatters fighting over the same files is a guaranteed support ticket.

Sequencing. Pin an exact version in composer.json (not a caret range) for the pilot. Gate the CI job as non-blocking initially, then blocking after the diff audit. Keep the incumbent formatter installed and authoritative until the gate passes, so rollback is a config revert rather than a re-tooling exercise.

Operational Impact

Maintenance. Low absolute effort but nonzero ownership: someone must track PHP releases, bump the pinned version, and re-run the audit when the formatter's ruleset changes. Because the package is opinionated and pre-1.0 in adoption terms, minor releases may reformat large swaths of code. Budget a recurring "formatter upgrade" line item and require changelog review before any bump.

Support. The critical unknown. With zero dependents and zero stars there is no community to absorb questions, no Stack Overflow corpus, and no proven maintainer SLA. Internal support burden falls entirely on whichever engineer volunteers as owner. If that person leaves, the tool becomes orphaned config. Mitigate by documenting the config rationale and the rollback procedure in the repo README, not in someone's head.

Scaling. Two dimensions. Technically, formatters are CPU-bound and embarrassingly parallel; without built-in caching or parallelism, a monorepo CI job can add minutes to every pull request, which developers will route around with --no-verify. Organizationally, scaling means every new repository copies the config, and drift is inevitable without a shared baseline package or a CI template. Plan for a single source of truth (a published config preset) before rolling past two or three repos.

Failure modes.

  • Semantic corruption: formatter rewrites code in a way that compiles but behaves differently. Highest severity, lowest detectability; caught only by a full test suite and the token-level diff audit.
  • CI blockage: a formatter crash or a ruleset change fails the pipeline on unrelated PRs. Mitigate with non-blocking rollout and a pinned version.
  • Merge conflicts: the repo-wide reformat lands while feature branches are open, forcing rebases. Mitigate with a freeze window and a coordinated merge.
  • Tooling conflict: editor format-on-save and CI disagree, producing a permanent dirty-working-tree loop.
  • Abandonment: upstream goes quiet and a new PHP version breaks parsing. Exit cost is low — remove the dev dependency — which is the main reason this risk is tolerable.

Ramp-up. For engineers already fluent in Pint or PHP-CS-Fixer, ramp-up is under an hour: same mental model, different defaults. The cost is not learning the tool, it is retraining muscle memory around a new canonical style and updating onboarding docs, editor configs, and code-review checklists. Expect a two-to-four-week period of stylistic review comments and "why did this line change" questions, concentrated immediately after the reformat commit.

Recommendation. Do not standardize on zenphp/fixr at this time. Fund a one-sprint spike only if the team has a concrete unmet formatting need that Pint cannot satisfy; otherwise remain on the incumbent. Revisit if the project accumulates real dependents, publishes a supported-version policy, and demonstrates a track record across at least one PHP minor release cycle.

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.
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
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