Magento_Catalog Version Compatibility
Magento_Catalog Version Compatibility
Magento_Catalog Version Compatibility
Overview
This document tracks verified API surface, deprecations, and compatibility information for the Magento_Catalog module in version 2.4.7.
Note
This document only contains facts verified against the Magento 2.4.7 source code. Version-to-version changelog entries that could not be verified against source have been removed.
Module Version (2.4.7): 104.0.7
PHP Requirement: ~8.1.0||~8.2.0||~8.3.0
Key Facts
CatalogInventory Module Status
The Magento_CatalogInventory module (100.4.7) still exists in Magento 2.4.7. It is marked as "abandoned" in its composer.json with a reference to magento/inventory-metapackage, but the module is still present and functional. The Catalog module depends on it: "magento/module-catalog-inventory": "100.4.*".
Do NOT remove CatalogInventory usage assuming it was removed in 2.4.7. Plan migration to MSI as a gradual process.
Flat Catalog Configuration
Flat catalog configuration paths still exist in 2.4.7 etc/config.xml:
<flat_catalog_category>0</flat_catalog_category>
<flat_catalog_product>0</flat_catalog_product>
Both are disabled by default. The flat product index has max_index_count set to 64.
Interface Return Types
Magento 2.4.7 Catalog API interfaces use docblock @return annotations only — they do NOT have PHP native return type declarations. For example:
// Actual ProductRepositoryInterface in 2.4.7
// NO `: ProductInterface` return type — only @return docblock
public function save(
\Magento\Catalog\Api\Data\ProductInterface $product,
$saveOptions = false
);
// NO `: ProductInterface` return type
public function get($sku, $editMode = false, $storeId = null, $forceReload = false);
// NO `: ProductInterface` return type
public function getById($productId, $editMode = false, $storeId = null, $forceReload = false);
When implementing these interfaces, you do NOT need PHP return type declarations — match the interface signature exactly.
Composer Dependencies (2.4.7)
The Catalog module depends on these Magento modules:
| Dependency | Version Constraint |
|---|---|
| magento/framework | 103.0.* |
| magento/module-backend | 102.0.* |
| magento/module-catalog-inventory | 100.4.* |
| magento/module-catalog-rule | 101.2.* |
| magento/module-catalog-url-rewrite | 100.4.* |
| magento/module-checkout | 100.4.* |
| magento/module-cms | 104.0.* |
| magento/module-config | 101.2.* |
| magento/module-customer | 103.0.* |
| magento/module-directory | 100.4.* |
| magento/module-eav | 102.1.* |
| magento/module-indexer | 100.4.* |
| magento/module-media-storage | 100.4.* |
| magento/module-msrp | 100.4.* |
| magento/module-page-cache | 100.4.* |
| magento/module-product-alert | 100.4.* |
| magento/module-quote | 101.2.* |
| magento/module-store | 101.1.* |
| magento/module-tax | 100.4.* |
| magento/module-theme | 101.1.* |
| magento/module-ui | 101.2.* |
| magento/module-url-rewrite | 102.0.* |
| magento/module-widget | 101.2.* |
| magento/module-wishlist | 101.2.* |
Verified Deprecations (from @deprecated annotations in source)
Deprecated Interfaces
| Interface | Deprecated Since | Replacement |
|---|---|---|
ProductTierPriceManagementInterface |
102.0.0 | ScopedProductTierPriceManagementInterface |
Deprecated Classes
| Class | Deprecated Since | Notes |
|---|---|---|
Cron\SynchronizeWebsiteAttributes |
(no version) | See Attribute\Backend\WebsiteSpecific\ValueSynchronizer |
Model\ResourceModel\Category\Flat |
100.0.2 | Flat catalog deprecated |
Deprecated Product Model Methods (sample)
| Method | Deprecated Since | Reason |
|---|---|---|
getMediaAttributes() |
102.0.6 | — |
getMediaAttributeValues() |
102.0.6 | — |
isConfigurable() |
102.0.6 | — |
getConfigurableAttributeCollection() |
102.0.4 | — |
getGroupedLinkCollection() |
102.0.6 | — |
getRelatedLinkCollection() |
102.0.5 | — |
getStockItem() |
102.0.0 | "Product model shouldn't be responsible for stock status" |
setStockItem() |
102.0.0 | Same reason |
Deprecated Controller Classes
| Class | Deprecated Since |
|---|---|
Controller\Adminhtml\Category |
101.0.8 |
Deprecated Helpers
| Class | Deprecated Since |
|---|---|
Various ProductLink\Repository methods |
103.0.4 |
@since Version Tags
The majority of Catalog API interfaces are tagged @since 100.0.2 (foundational). Notable later additions:
| Class/Interface | @since |
|---|---|
ProductFrontendActionInterface |
102.0.0 |
CategoryLinkInterface |
102.0.0 |
BasePriceInterface |
102.0.0 |
CostInterface |
102.0.0 |
SpecialPriceInterface |
102.0.0 |
ScopedProductTierPriceManagementInterface |
102.0.0 |
CategoryListInterface |
102.0.0 |
Product Model Class Signature
The Product model in 2.4.7 extends and implements:
class Product extends \Magento\Catalog\Model\AbstractModel implements
IdentityInterface,
SaleableInterface,
ProductInterface,
ResetAfterRequestInterface
Properties use untyped declarations (e.g., protected $_cacheTag = 'cat_p'), not PHP typed properties.
Upgrade Best Practices
Use Service Contracts
// Recommended — uses interface (stable API)
public function __construct(
private readonly \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
) {}
// Avoid — uses concrete class (internal, may change)
public function __construct(
private readonly \Magento\Catalog\Model\ProductRepository $productRepository
) {}
Loading Products
// Deprecated pattern (still works)
$product = $this->productFactory->create()->load($id);
// Recommended pattern
$product = $this->productRepository->getById($id);
Disclaimer: This document covers the Magento_Catalog module as found in magento/product-community-edition:2.4.7. Version-to-version change details (e.g., "added in 2.4.6") could not be verified from source alone and have been removed to prevent inaccuracies. For version-specific changelogs, consult the official Adobe Commerce release notes.