Comparison
Upgrade Radar vs Hiring an agency
80% of the Hiring an agency cells below carry a cited source — a dossier reference, a content snapshot and a capture date. The rest say "not verified": never invented, never blank. Full sourcing: the comparisons index.
| Feature | Upgrade Radar | Hiring an agency |
|---|---|---|
| Compatibility check method | Every plugin in your composer.lock checked against one target Shopware version in one report — 37-rule composer-semantics engine, Compatible / Conflict / Unknown with the excluding constraint quoted | An agency developer reads each plugin's composer.json / shopware/* constraint by hand, then runs `composer update --dry-run` — per plugin, per shop, per window. Same declared-constraint answer, done by a person. (ref: manual-check-method-001, snap: 372cb1e1, 2026-08-17) |
| Cost of the work | Hosted check free; the CLI is a one-time purchase you keep — no hourly bill, no retainer, no per-shop charge | Certified Shopware agencies in Germany bill EUR 100-180/h net in 2026 (Silver at the low end, Platinum at the high end); an hour of that buys the manual read of roughly one shop's plugins. (ref: agency-cost-001, snap: 12cedb97, 2026-08-17) |
| Typical scale per upgrade | Reads every plugin in the lock in one run — the same sweep an agency does plugin-by-plugin by hand | A Shopware agency admitted the manual test is 20-50 plugins after every core update, and that the effort is routinely underestimated when planning the window. (ref: agency-scale-001, snap: 10ae91dd, 2026-07-04) |
| Recurrence | Runs again on every new shop and every new window at no extra cost — the report is yours, re-runnable any time | The manual check recurs after every core update — an episodic, roughly annual need (6.7 shipped 2025, 6.8 planned for 2027) that an agency bills hourly each time. (ref: agency-scale-001, snap: e05e94eb, 2026-07-04) |
| Undeclared-constraint handling | Plugins with no evaluable shopware/* constraint are reported as unknown, never assumed fine — so your manual-check list is named, not hidden | not verified |
Check a real shop
Run your composer.lock through the checker — it reads declared constraints the same honest way this page does.