GraphQL in Magento 2 is not just a read API – you can add your own types, queries and mutations. A custom resolver is a PHP class responsible for fetching data for a given field or query. I show a complete implementation: GraphQL schema, resolver with authorisation, error handling and integration tests. Using a query fetching customer order history with filters as the example.
The shop stopped accepting card payments on Saturday night. Monitoring did not detect the problem because the site was working – only checkout was broken. Customers received a generic “Payment cannot be processed” error. Several hours of sales were lost before a report arrived Monday morning. Fix time: 45 minutes after the report.
A new React frontend could not communicate with the Magento REST API. Every AJAX request ended with a CORS error in the browser console. The backend worked correctly when tested through Postman or curl. Fix time: 2 hours.
An ERP integration with the shop via REST API was getting slower over time. Fetching the orders list via API took 45 seconds. The endpoint was returning the entire order history instead of the last 24 hours. Fix time: 3 hours.
After migrating the shop to a new server, product images were not displaying – grey placeholders instead. The database had file paths, but the files did not exist on disk. Fix time: 5 hours.
The Command pattern encapsulates a request as an object, allowing operations to be parameterised, queued, logged and undone. In Magento 2 this pattern is the foundation of the MessageQueue system – each message is a Command executed asynchronously by a consumer. I show the implementation from the classic version through to integration with the Magento queue.
A new module version deployed to production caused a 500 error across the whole shop. DI compilation ended with an error about a missing interface. The problem was a constructor signature change without updating di.xml. Fix time: 1 hour.
Customers were losing their cart contents and getting logged out randomly during shopping. The problem intensified on weekends with high traffic. Fix time: 2 hours.
Xdebug 3 changed the configuration approach – instead of many directives, one option xdebug.mode controls all behaviour. Combining Xdebug 3, DDEV and PHPStorm gives a complete environment: step debugger with breakpoints, a profiler generating cachegrind files, and coverage reports for PHPUnit. I show the configuration from scratch and how to analyse profiler results in PHPStorm and QCacheGrind.
Custom forms in the shop stopped working after a Magento update. “Invalid Form Key” error in logs. Custom AJAX endpoints threw CSRF exceptions on every request. Fix time: 2 hours.
