frosh/shopware-rector
Frosh Shopware Rector provides Rector rules to automate upgrading Shopware 6 extensions and themes to newer versions. It helps modernize plugin code, apply API changes, and reduce manual migration work so your Shopware projects stay compatible with less effort.
Framing correction (unchanged). This is not a Laravel package. frosh/shopware-rector targets Shopware (6.x, with migration-oriented rules for legacy/plugin code) and depends on rector/rector, nikic/php-parser, and Shopware core classes. Its applicability is gated entirely on whether the estate runs Shopware; for a Laravel-only portfolio the evaluation stops here.
Architecture fit (unchanged). Developer-time static-analysis tool, not a runtime dependency. Correct integration surface is require-dev plus a committed rector.php per Shopware repo, run locally and in CI, alongside PHPStan / PHP-CS-Fixer. No application-layer
coupling, no service provider, no runtime overhead. 0.6.0 strengthens this fit: the package now runs PHPStan against itself (PR #67), so it participates in the same quality-tooling substrate we already operate rather than being an opaque binary.
Integration feasibility. Still mechanically trivial: one Composer dependency, one config, one CI step. Two changes affect feasibility:
Technical risk.
@shyim). However, 0.6.0 is a genuine maintenance signal: a compatibility fix restoring Rector 2.6.2 support, dependency modernization, and a new deprecation rule. The project is not abandoned; it is thinly staffed. Still "adopt with guardrails," not implicit trust.rector/rector + frosh/shopware-rector + shopware/core trio remains mandatory.CartBehavior recalculation rule (PR #64) edits storefront/checkout recalculation logic — a class of change where a plausible-looking rewrite can alter cart totals. Elevated review scrutiny required for this rule specifically.@shyim with @Copilot. AI-assisted rule authorship is not disqualifying, but it shifts the burden of proof onto fixture coverage. Ask specifically what test fixtures accompany the CartBehavior rule and whether it was validated against real 6.6/6.7 plugins.composer update.Key questions.
CartBehavior recalculation rule, and was it validated against real plugins rather than only fixtures?services.xml, DAL definitions, storefront JS?Stack fit. Only viable inside Shopware 6 repositories (platform, plugins, or a plugin monorepo). PHP 8.2+ is now required, which aligns with Shopware 6.6/6.7 and simplifies the story for modern estates; it hard-blocks older plugins until they are uplifted. Keep it out of Laravel/Symfony repos entirely.
Migration path.
rector/rector, frosh/shopware-rector 0.6.x, shopware/core) in a throwaway branch before portfolio rollout — 0.6.0 exists precisely because that trio drifted.CartBehavior rule as its own review unit with functional cart-total tests.Compatibility. Pin exact versions (not ranges) for the trio and lock them in CI. Do not float frosh/shopware-rector across minors — 0.6.0 shows both a PHP floor bump and a developer-tooling removal in a minor. Per-repo rector.php initially, consolidated once stable. Maintain a local skip list; re-verify it after every bump, since rule behavior can change between 0.5.x and 0.6.x.
Sequencing. Adjust the prior plan: tooling pilot (1 sprint) → baseline + CI dry-run gate (1 sprint) → first migration wave (per-plugin) → then reassess custom-rule authoring. That last phase is now more expensive and less supported than previously assumed (scaffold removed), so it should be re-estimated rather than carried forward at the original cost. Budget the PHP 8.2 uplift of any straggler plugins as a prerequisite task, not a parallel one.
Maintenance. Community-maintained, no SLA, single maintainer — unchanged. 0.6.0 is evidence of active maintenance (compat fix, new rule, dependency refresh), which is reassuring but also confirms the maintainer is the sole bus factor. Assign a named internal owner and a pre-upgrade-cycle release review. MIT licensing keeps forking viable; the ~1 week vendor-and-patch contingency still stands, and is now slightly more attractive given demonstrated willingness to break in minors.
Support. GitHub issues only; unknown response times. The Frosh agency relationship remains a de facto, non-contractual escalation path. No change.
Scaling. Unchanged: CPU-bound, parallel by path, shard by plugin in CI. Minutes on a large plugin monorepo — fine as a pre-merge or nightly gate, too slow for pre-commit. The package's own added PHPStan step does not affect our runtime cost, but it is a mild positive signal for defect detection. Operational cost still scales linearly with repo count.
Failure modes.
CartBehavior recalculation rule, where a compiling rewrite can alter cart totals. Functional tests on cart math are the only real control.Ramp-up. Largely unchanged: roughly half a day for a PHP developer comfortable with Rector to a first productive run, one to two days to a config with sensible skips. Two adjustments: (a) confirm the local environment is PHP 8.2+ before the pilot, or the first hour is lost to a constraint error; (b) raise the estimate for authoring house custom rules now that the scaffold is gone — call it days, not hours, for the first rule. The runbook (baseline policy, dry-run workflow, PR review checklist, skip-list governance, pinned trio) remains the deciding artifact, with an added section on upgrade discipline for a pre-1.0, single-maintainer dependency.
How can I help you explore Laravel packages today?