Important: #95647 - Composer installations and extension usage

See forge#95647


With forge#94996 the behavior for Composer-based installations has changed.

Importance of ext_emconf.php file

The ext_emconf.php file which is located in the extensions' base folder, is not evaluated anymore in Composer-based installations. This means, the ordering of the extensions and their dependencies are now loaded from the composer.json file, instead of ext_emconf.php.

For non-Composer installation ("Classic Mode") the ext_emconf.php file is the source of truth for required dependencies and the loading order of active extensions.

Extension authors should ensure that the information in the composer.json file is in sync with the one in the extensions' ext_emconf.php file. This is especially important regarding constraints like depends , conflicts and suggests. Use the equivalent settings in composer.json require, conflict and suggest to set dependencies and ensure a specific loading order.

It is recommended to keep ext_emconf.php and composer.json in any public extension that is published to TYPO3 Extension Repository (TER), and to ensure optimal compatibility with Composer-based installations and Classic mode.

Removal of PackageStates.php

The typo3conf/PackageStates.php file is not evaluated anymore in Composer-based installations. When updating TYPO3 installations that still contain this file e.g. under version control, the file can safely be removed.

Use the TYPO3 CLI command extension:setup to set up all extensions available in Composer.

Package information (like paths or extension meta data) is still stored in and evaluated from a file in Composer's vendor folder. This file is written after Composer dumps autoload information. Make sure all files from that (vendor) folder are transferred during a deployment. This means no special action compared to previous TYPO3 versions is required regarding the vendor folder with TYPO3 11 LTS.


TYPO3 version 11.5.0 to 11.5.2 stored package information in var/build/ folder, which previously required this folder to be transferred as well during a deployment. This is not required any more now. Transferring the vendor folder is sufficient now.

All extensions are always active

All extensions and their dependant extensions required via Composer in a Composer-based TYPO3 installation are always activated. It is not possible to disable an extension by using the Extension Manager anymore.

The TYPO3 CLI command extension:setup can be used after each composer require or composer update command to update the database schema and other important actions usually done when previously activating an extension in the Extension Manager.