Home › Modules › Catalog › Magento_Catalog Version Compatibility
Version Compatibility

Magento_Catalog Version Compatibility

Magento_Catalog Version Compatibility

Magento 2.4.7+ Magento_Catalog

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.