b13 / typo3-updater
TYPO3 Composer Plugin to ease upgrades
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 7
Forks: 0
Open Issues: 1
Type:composer-plugin
pkg:composer/b13/typo3-updater
Requires
- php: >=8.1
- composer-plugin-api: ^2.0
- composer/composer: ^2.0
This package is auto-updated.
Last update: 2026-02-06 21:41:50 UTC
README
Upgrading a TYPO3 project to a new major version involves several manual steps:
- checking which extensions are compatible,
- finding newer versions,
- updating constraints in multiple
composer.jsonfiles, - and running the right Composer commands in the right order.
This plugin automates that entire workflow into two commands and a clear three-step process.
Installation
composer require b13/typo3-updater
You can set it up for all your projects in a global way:
composer require global b13/typo3-updater
Upgrade workflow
Upgrading from e.g. TYPO3 12 to 13 is a three-step process:
Step 1: Prepare extensions for the target TYPO3 version
composer typo3:extensions:update ^13.4 --dry-run
Updates extensions to versions that are compatible with the target TYPO3 version, while still running on the current core. This is the safest first step because it doesn't touch the core yet — only extensions are updated.
The command shows a compatibility table comparing each extension against
both the current and target TYPO3 versions, then interactively offers to bump
constraints and run composer require.
Use --dry-run to only see the table without making changes.
Step 2: Update TYPO3 core (and remaining extensions)
composer typo3:core:update ^13.4
Updates all typo3/cms-* constraints to the target version. It also detects
any remaining extensions that are still incompatible and finds their latest
compatible versions — so everything is resolved in one composer update -W call.
Use --dry-run to preview all changes without modifying anything.
Step 3: Update extensions to their latest versions
composer typo3:extensions:update ^13.4
Now that the core is at 13.4, running the same command again finds the latest available version of each extension for the running TYPO3 version. This ensures you're not stuck on the minimum compatible version but running the newest release.
Use --dry-run to audit which extensions have newer versions available.
Quick reference
# Step 1: Prepare extensions for the upgrade composer typo3:extensions:update ^13.4 # Step 2: Upgrade TYPO3 core and remaining extensions composer typo3:core:update ^13.4 # Step 3: Bring all extensions to their latest version composer typo3:extensions:update ^13.4
Commands
composer typo3:core:update <version> - Update TYPO3 core and extensions
The main command for upgrading the TYPO3 core. It handles core packages and third-party extensions in one go.
composer typo3:core:update ^13.4 --dry-run # Preview all changes without modifying anything composer typo3:core:update ^13.4 # Apply changes after confirmation
What it does under the hood:
- Reads the root
composer.jsonand collects alltypo3/cms-*packages whose constraints don't yet match the target version - Scans all installed extensions (packages of type
typo3-cms-extension) and checks whether theirtypo3/cms-coreconstraint is compatible with the target version - For each incompatible extension, queries Packagist for the latest compatible version (stable first, falls back to pre-release if no stable version exists)
- Displays up to three tables:
- Core packages:
typo3/cms-*constraint changes (e.g.^12.4->^13.4) - Extensions to upgrade: extensions that need a version bump, including the new constraint (pre-release versions are flagged)
- Unresolvable extensions: extensions with no published version compatible with the target (warning)
- Core packages:
- Shows the exact
composer update ... -Wcommand that will be executed - On confirmation: writes all new constraints to
composer.json(respectingrequirevsrequire-dev) and runscomposer updatewith-W(update with all dependencies) - On failure: reverts
composer.jsonto its original state
Without this plugin you would need to manually: open composer.json, change every typo3/cms-* constraint, search Packagist or TER for each extension to find a compatible version, update those constraints too, run composer update, and if it fails, figure out which package is the problem and revert your changes.
composer typo3:extensions:update <version> - Check and update extension compatibility
A versatile command for managing extensions. It serves two purposes depending on the context:
- Before a core upgrade (target version > installed version): shows which extensions are compatible with the target TYPO3 version and offers to update them
- After a core upgrade (target version = installed version): finds the latest available version of each extension for the running TYPO3 version and offers to update them
composer typo3:extensions:update ^13.4 --dry-run # Show compatibility table only composer typo3:extensions:update ^13.4 # Interactively update extensions
What it does under the hood:
- Loads all installed TYPO3 extensions (from
require,require-dev, and path repositories) - For each extension, queries Packagist for the latest version compatible with the currently installed TYPO3 core
- When the target version is newer than the installed version (upgrade scenario), additionally:
- Queries Packagist for the latest version compatible with the target TYPO3 version
- Shows a compatibility column comparing current vs target
- Displays a compatibility table with columns:
- Current installed version
- Latest compatible version (for the current core)
- Compatibility status for the current TYPO3 version
- Target TYPO3 compatibility (only in upgrade scenario)
- With
--dry-run: stops after the table - Without
--dry-run: asks for confirmation, then interactively offers to:- Bump version constraints in local package
composer.jsonfiles (e.g. path repository extensions) - Run
composer require(andcomposer require --devseparately for dev dependencies) to update extensions
- Bump version constraints in local package
- On failure: reverts all modified
composer.jsonfiles to their original state
Without this plugin you would need to: manually check each extension's page on Packagist or TER, compare version constraints, figure out which version supports your target TYPO3 version, and update constraints in potentially multiple composer.json files across your project.
Credits
This extension was created by Jochen Roth in 2023 for b13 GmbH, Stuttgart.
Find more TYPO3 extensions we have developed that help us deliver value in client projects. As part of the way we work, we focus on testing and best practices to ensure long-term performance, reliability, and results in all our code.