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…

Toggles and switches
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.