InstallData is dead. This is the data patch pattern I ship to client stores: one class, dropdown options, attribute set assignment, and a patch_list war story from a live deploy.
You upgraded the runtime to PHP 8.5 but your code still reads like 7.4. Here are the modern PHP features (property hooks, asymmetric visibility, and array predicates from 8.4, plus the pipe operator, clone with, and array_first/array_last from 8.5) that most developers sleep on, with real syntax and the Magento tie-in.
FrankenPHP worker mode boots your framework once and reuses it across requests for roughly 3-4× the throughput of nginx + PHP-FPM. Here is how it works, where it shines, and the honest take for Magento.
AI scaffolds Magento modules in seconds, but generates code that looks right and breaks the framework's conventions. Here's how to build a custom extension properly in the AI era: the canonical anatomy, a working example, the AI gotchas to reject, and the gates that keep it maintainable.
Magento 2.4.9 reached GA and Mage-OS 2.3.0 followed a day later. Here's what actually changed in the supported stack: PHP 8.5, OpenSearch 3.x, Valkey, Symfony Cache, which distribution to run, and a no-fluff upgrade checklist before 2.4.6 hits end of support.
PHP 8.4 demoted implicit-nullable parameter types (Type $param = null) to E_DEPRECATED. On Magento 2.4.4-2.4.7 vendor code that floods var/log/system.log on every request, and on a hot product page we measured the log growing by 412 MB an hour. Three vendor modules trip every store: Magento_Sales, Magento_Quote, and Magento_Catalog. This post walks the diagnose-grep-patch-verify loop: the one grep that finds every offender across vendor/, the exact patch shape Adobe ships in the 2.4.8/2.4.9 backports, the cweagans/composer-patches workflow when you cannot bump core, the phpstan rule that pins the regression on every future PR, and why the php.ini error_reporting shortcut is a stopgap not a fix.
After running 18 Magento 2.4.9 upgrades in the last six months, the same five problems show up on every project. None of them are in Adobe's release notes. Here is the diagnostic order, the fix for each, and the composer patches that make the upgrade reproducible.
Kishan Savaliya11 min read
Request a quote
I'll reply within 2-4 hours business with a written quote and timeline.