Contao news

Read the official Contao announcements.

Contao 5.3 LTS is available

by Marcus Lelle – Current issues

2024 is already off to a good start: The new version Contao 5.3 LTS is here!

The core team and many other developers have been working hard over the last six months to take our favorite CMS to the next level. We are looking forward to the new big and small features for users and developers.

Contao 5.3 replaces Contao 5.2, whose support ends with it. The new version will be supported with bug fixes until February 2027. As with all Contao LTS versions, 5.3 will be provided with security updates for another year until February 2028.

Support for version 4.9 LTS also ends today. There will be no more updates for Contao 4.9!

You can find out which Contao versions are currently supported in the Contao release plan.

For users

Nested content elements

This feature provides more clarity in the article and is the basis for further display options in the back end, e.g. grid views. I'm excited to see what else will be possible through extensions and further versions.

At the moment, this has been implemented for the content slider and the accordion.

Content slider

The new content slider is based on the modern swiper.js. For backwards compatibility, the legacy elements slider wrapper start and slider wrapper stop still exist.

Each child element of the content slider represents a slide.

If a slide is to consist of several content elements, these can be combined using the new element group.


The new accordion element also works with nested content elements. Here too, elements can be combined into a group if required, which are then treated like an accordion area. If the child elements belong to an accordion, you will automatically receive a field for the area heading when editing.

The accordion single element, the accordion wrapper start and the accordion wrapper stop are still available for downward compatibility.

Improved edit form

In future, you will find a menu in each content element when editing, which you can use to jump directly to a specific area/legend of the input mask. The menu remains sticky at the top when scrolling.

Description list

There is another new content element, the description list. It creates a <dl> markup. This is a good alternative for lists such as glossaries or similar.

Newsletter now with inline styles and new responsive template

CSS that is written in the newsletter template is now automatically converted into inline styles before sending. This makes it easier to use templates from third-party providers. A new mail_responsive.html5 template shows the possibilities.

"Forgotten password" within the login module

A link to a "forgotten password" page can now be entered in the login module. This makes logging in much more user-friendly.

Permission settings for front end modules

You can now give editors access to individual front end modules, e.g. to enable settings for news or event lists.

Further crawler settings in the back end

In the crawler settings in the back end, it is now possible to change the depth of the crawl. The higher the number, the more links are found and the longer the process takes.

Your own content security policies per website root

Extensive settings can now be made for the CSP header for each website root. Scripts, styles and inline styles are automatically provided with a nonce and the corresponding entries are added to the CSP header.

Standard maintenance template is automatically translated

The standard template of the maintenance page is now automatically translated into other languages.


Contao automatically sends a Strict-Transport-Security header for all HTTPS requests. This tells the browser that access should only take place via HTTPS.

Automatic login for cross-domain preview links

The preview now also works across domains in a multi-domain installation. A call on works, even if the back end was called under

DNS mapping migration

The DNS mapping migration automatically changes the domain of the starting points when the database is imported from the live system into a local system.

You can now store different configurations for local, staging and live installations.

# .env.local in your local environment
    "": "example.local",
    "": "foobar.local",
    "": "http://lorem.local" # Deactivate https in your local environment

# .env.local in your staging environment
    "": "",
    "": "",
    "": ""

For developers

Automatic controller detection

In future, it will no longer be necessary to create routes.yaml for your own controllers with routes. Detection will be automatic.


The onpalette_callback is executed when a palette is created. Fields that are inserted via the callback are also available correctly in "edit multiple" mode.

Content URL generator

The content URL generator can generate their front end URLs from various models.

$model = NewsModel::findByPk(2);

// Contao 5.2
$archive = $model->getRelated('pid');

if ($archive instanceof NewsArchiveModel) {
    $page = $archive->getRelated('jumpTo');

    if ($page instanceof PageModel) {
        echo $page->generateFrontendUrl();

// Contao 5.3
echo $container->get('contao.routing.content_url_generator')->generate($model);

Enum support for DCAs and models

PHP enums can now be used as options in the DCA.

Much more

You can read about all the changes in detail in the Changelog. Christian Feneberg has also summarized the most important innovations in a video (in German only).


Contao 5.3 is compatible with Symfony 6.4, PHP 8.1+ and Doctrine 3.

See also: Tickets | Compare changes | Changelog | Compare change to LTS 4.13

Show all news


Add a comment

Please add 3 and 6.