Guide
Choosing a Composer‑Based Extension Bundle vs Classic Local Extension in Contao 5/6
A practical guide to decide between a Composer‑based extension bundle and a classic local extension for Contao 5/6, with trade‑offs, a comparison table, and verification steps.
12 Apr 2026, 11:54 UTC
1 min34.3K views0

Decision and Constraints
The task is to add a custom backend module to Contao. The clear decision is to use a Composer‑based Extension Bundle, or fall back to a classic local extension. Constraints: Contao version 5.5 or higher (including 6.x), PHP 8.0+, no direct edits to core files, Composer must be available for dependency management, and the module must be registerable through the Extension Management Console.
Option Comparison
| Aspect | Composer Bundle | Classic Local |
|---|---|---|
| Location | Project directory, installed via Composer | Contao packages/extension/ folder |
| Update method | Composer require/update, lock file |
Manual copy/replace of files |
| Dependency handling | Composer resolves packages, can use Symfony components | None; only core Contao APIs |
| Compatibility | Works with Contao 5.5+ / 6.x, PHP 8.0+ | Limited to core APIs, may break with future Contao releases |
| Deployment effort | Composer install step, requires write access to project directory | Simple copy, but manual updates required |