
Virtual Types in Adobe Commerce
Virtual types in Adobe Commerce can seem intimidating, but they’re nothing to fear. Learn what they are and how to work with them confidentl…

Using View Models
Are you using view models in your Adobe Commerce presentation layer, or still creating custom block classes for every need? There’s a better…

The Right LESS File for the Right Purpose
Know the difference between _module.less and _extend.less in Magento. Avoid compile errors from theme-specific references in the wrong file.

Sensitive and Environment-Specific Configs
When creating a Magento config setting, ask if it’s sensitive or env-specific—then declare it in di.xml to keep it out of versioned files.

Synchronize Upstream Changes in Adobe Commerce Cloud
Using Adobe Commerce Cloud? Simplify your workflow with the Synchronize action for code and data changes that need to flow downstream.

A Peek Into Adobe Commerce Page Builder
Adobe Commerce’s Page Builder offers powerful drag-and-drop content types, and you can extend them or create your own with the right compone…

Getting the most out of view.xml
You probably use view.xml only when you have to. Define your own vars to add presentational flexibility to custom Adobe Commerce features.

The magento2-base Package
The magento/magento2-base Composer package works behind the scenes in Adobe Commerce. Learn its implications for your version control workfl…

Magento Environment Refreshes: More Than a git pull
Syncing code and data between environments is a fact of dev life. Adobe Commerce has many moving pieces, develop a consistent workflow to sa…

Collection Processors
Magento collection processors may seem scary, but they’re a great example of ‘one class, one job’ composition and less complex than they app…

GraphQL Response Caching
GraphQL caching boosts headless Adobe Commerce performance. Learn the right Varnish config, back-end setup, and front-end request format.

GraphQL Resolver Flexibility
GraphQL resolvers in Magento are flexible, but traditional API habits can hold you back. Break free from the ‘one request, one resolver’ men…

Generating a Schema Whitelist File
Don’t forget to generate a whitelist file with setup:db-declaration:generate-whitelist when using Magento declarative schema. Here’s why.

Generated Classes: Proxies
We’re continuing our look into generated classes in Adobe Commerce, and this time we’re going to examine the neglected and oft forgotten sib…

Feature Toggles
Make feature toggles part of your Magento development mindset. Use Store Config settings to disable code effects without reverting changes.

Constants in Magento XML
You know to use class constants instead of hard-coded strings in PHP, but did you know you can do the same in Magento XML files?

Managing Enabled Modules in Magento
Make sure you have a good handle on the mechanics of enabling/disabling modules in Adobe Commerce, and the implications.

Using the @var Annotation in Adobe Commerce
I hope you're making consistent use of PHP type-hints in your Magento code. But don't throw the habit of variable annotations out the window…

URLs and Layout Handles in Adobe Commerce
In Adobe Commerce, layout XML files control the content on a given page. It’s often fairly easy to sleuth out which layout filename controls…

Generated Classes: Interceptors
In this short series, we’re going to look at the different kinds of auto-generated PHP classes in Adobe Commerce. First up: interceptors!

Generated Classes: Factories
We’re continuing our look at generated classes in Adobe Commerce, and in this segment we’re examining factories.

Generated Classes: Extensions
In this last entry in a series looking at generated classes in Adobe Commerce, we’re examining extension classes.