TYPO3 v12.0—Release Your Power

Categories: Development, TYPO3 CMS Created by Michael Schams
TYPO3 version 12.0 is out! This is the first of five releases we plan to make over the next six months on the way to the long-term support release in April 2023. I am excited to share the highlights of the sprint release today, which includes new features for backend users, integrators, and developers.

320 days ago, on 18 November 2021, Oliver Hader updated the TYPO3 version number in our official Git repository to 12.0.0-dev. This commit marked the start of a new major TYPO3 release series. A lot has happened since then.

The code base received more than 1,600 code changes, and the changelog of TYPO3 version 12.0 documents roughly 100 changes marked as “features”—some small, some large. Many have been made under the hood and laid the foundation for future changes and updates. The new major version of TYPO3 also has new minimum system requirements. This move paves the way for top-modern enhancements planned for the upcoming sprint releases.

Let’s look at the main changes and new features of TYPO3 version 12.0. You can review the detailed technical changelog for more in-depth information as required.

Ambitious Plans for the TYPO3 v12 Release Series

The article “Get Ready for TYPO3 v12” provides a general overview of our goals for the TYPO3 v12 release series. First and foremost, we aim to boost productivity significantly. Please note that the following objectives are tentative and subject to change, depending on what we can achieve as a community.

We will make visual and usability improvements to the TYPO3 backend to let users manage website content with fewer clicks. Developers will work more efficiently as we plan, for example, to simplify methods for registering backend modules. Increasing system performance by leveraging more underlying system layers is also on our agenda. More specialized PHP and database features are just two aspects that you will find in the TYPO3 Core.

We also plan to build new ways to let TYPO3 communicate with third-party systems. Webhooks (we still consider a different name for this feature) will send out requests if something has changed in the TYPO3 website or application. Reactions will work the other way around. Other systems will be able to notify TYPO3 through a REST API (REpresentational State Transfer).

Although this all sounds exciting, we are not there yet. Today, we released TYPO3 version 12.0, the first sprint release of the v12 series. You should pay special attention to the minimum system requirements since they have changed compared to previous TYPO3 versions.

Key Changes in TYPO3 Version 12.0

The Speciality of a Dot-zero Release

So-called “dot-zero” releases always let us introduce new libraries, new modern concepts and state-of-the-art technologies. For example, TYPO3 version 12.0 allowed us to upgrade third-party packages following our deprecation policy. Our aim, in general, is to use up-to-date dependent packages that have long-term support.

Components of Symfony version 6 now work under the hood of TYPO3 v12. The backward compatibility promise of Symfony ensures that we don’t need to deal with too many breaking changes but now have the opportunity to leverage the latest new features and components. This version is the latest Symfony version currently available.

 Another vital tool we upgraded in TYPO3 version 12.0 is the CKEditor, the powerful and highly customizable rich text editor (RTE) that lets backend users edit text content for the website. TYPO3 now features CKEditor version 5, which is a complete rework and does not require iframes anymore.

We also removed old functionality considered outdated or kept for legacy reasons. This clean-up task mainly applies to developers (see further details below).

Backend UX Improvements

The backend has been and will remain the predominately used administration interface of TYPO3. Integrators use the backend to set up, configure and maintain the system. In addition, editors use the backend for their daily work with the content in a TYPO3 site. Therefore, it is not surprising that an outstanding user experience in these two roles remains the focus of our work.

Once you log in to the backend of TYPO3 version 12.0, browse around and look at the context menu (e.g. in the page tree), pop-down menus and flash messages (notifications). You will notice a more modern visual look and feel in many places.

Now open the backend module Web ➜ Page. Thanks to the fantastic work of the Structured Content Initiative, the new page module now shows a cleaner user interface. The underlying styles have been refactored, and some layout elements optimized. As a result, it is now easier to move content elements around, and the changes are also in preparation for further adjustments planned for upcoming sprint releases of the v12 series.

As the foundation for more visual and usability improvements in the TYPO3 backend has been laid in version 12.0, we are excited to introduce further changes in the upcoming sprint releases.

Changes for Integrators

The settings screen of the Admin Panel now shows a checkbox to disable the start and end time restrictions of records. This feature lets editors view a page with all content records, even if the records have a start or stop timestamp set. It is often helpful to open a page directly in the backend. This action is now possible by simply clicking the “Open page in backend” button from the Admin Panel.

From time to time, integrators need to review the TYPO3 system logs. Of course, it depends on the individual configuration of the system, but, in general, every backend user login/logout, failed logins, content changes, etc., produce an entry in this log.

We added a new option to the backend module System ➜ Log that lets users filter the log entries by a specific page and, optionally, subpages of this page. This option is handy if you are interested in what happened to a page, for example, content changes such as “User X created record Y”.

The new “page” and “depth” options extend the existing filters such as “Users” and the “From” and “To” filters.

TYPO3 integrators and developers alike sometimes need to check the system configuration. The backend module that provides comprehensive information about the current status gets extended over time. Since TYPO3 version 12.0, you can now find an overview of the Symfony Expression Language Providers in the module System ➜ Configuration. As a result, integrators and developers can look up which variables and functions are available in which system area, for example, “default”, “typoscript”, “site” and “form”.

In previous TYPO3 versions, backend users could access short help texts about specific fields by clicking on a label. This function is called context-sensitive help (CSH), and we decided to remove CSH in TYPO3 version 12.0 for several reasons. The TYPO3 documentation has significantly improved and provides better and more up-to-date information than the CSH. Besides the redundant information, CSH also suffers from conceptual and accessibility issues.

We don’t lose short help texts in the backend by dropping the CSH functionality. Developers can store a description for every field in the TCA (TYPO3 Configuration Array), which offers similar functionality as CSH.

Many TYPO3 sites and applications generate emails, for example, system emails that backend users can trigger when they forgot their password. Contact forms and custom-developed extensions also use TYPO3’s Mail API, which now features four new configuration options:

  • The maximum number of messages to send before restarting the transport.
  • The number of seconds to sleep between stopping and restarting the transport.
  • The minimum number of seconds between two messages and before the server is pinged.
  • The stream context options for the SMTP stream.

While the first three options mainly allow integrators and system administrators to fine-tune the mail transport process, the last setting lets you easily customize the parameters required to communicate with an SMTP server. If you want to, for example, disable the strict check if the peer uses a valid SSL/TLS certificate in an encrypted SMTP communication, you can adjust this now. A typical use case for such a configuration is a self-signed certificate that, strictly speaking, is not a valid certificate by default.

Looking back at the development phase of the TYPO3 v11 release series, the “Filelist” backend module already received a visual overhaul. We also streamlined batch editing of files and introduced new actions and functions. The option to download multiple files as a ZIP archive is one example. The function to select the columns that TYPO3 should show is another.

In TYPO3 version 12.0, we added a new option to the User TSconfig to customize which primary actions are shown in the list view of files (column "Control"):

The default settings show the “edit metadata” icon, the “show” icon and the “delete” icon (see screenshot above). The TSconfig option “options.file_list.primaryActions” can be applied to reduce the actions shown per user. You can even remove all icons from the list view, as shown in the screenshot below, or configure the additional icons “copy to clipboard” and “cut” icons:

We constantly improve and extend TYPO3’s multi-language capabilities and now also support Luxembourgish (ISO 639-1 code “lb”) in the TYPO3 backend by default. It is now possible to download translated backend labels from the TYPO3 translation server and CrowdIn for these languages, switch the backend interface to Luxembourgish, respectively, and use this language in site configurations.

Speaking of internationalization: To further improve TYPO3 character set and internationalization handling, two commonly used PHP extensions are now required for TYPO3: Multi-byte string (“mbstring”) and Internationalization (“intl”). Make sure that these PHP extensions are installed and enabled in your environment. They are typically shipped with your system distribution.

Changes for Developers

Let’s turn to the highlights of TYPO3 version 12.0 for developers. You won’t be disappointed, given that a “dot-zero” release always gives us the opportunity for a fresh start with new ideas, solutions and technical concepts.

The first version of a new release cycle also means clean-up. Therefore, we removed deprecated PHP classes, functions, CLI calls, etc. Please refer to the changelog (in particular to Breaking-96107) for a complete list of clean-ups.

It is also crucial for a “dot-zero” release to increase versions of third-party libraries used in the TYPO3 Core. As I pointed out above, our general aim is to use up-to-date dependent packages with long-term support.

A major update concerns the Database Abstraction Layer (DBAL). TYPO3 v12 now uses Doctrine DBAL version 3. This version of the DBAL went through major internal refactorings by separating Doctrine’s internal driver logic from PHP’s native PDO functionality.

What does this mean for TYPO3 extension developers? First, if you use the QueryBuilder in your extension and you still submit queries by the execute() call, you need to change this to executeQuery() or executeStatement(). We left the old execute() statement intact for backward compatibility in TYPO3 v 11 LTS. However, the documentation has advised developers not to use this function call anymore. You’ll find information about further necessary migration actions in the changelog.

The update of the Doctrine DBAL from version 2 to version 3 also sets the course for more optimization options regarding system performance in upcoming TYPO3 v12 releases.

The “glue” between the database layer and the FormEngine, which renders table rows in the TYPO3 backend, is the Table Configuration Array (TCA). We added seven new TCA types, all available in TYPO3 version 12.0 and already documented in the TCA Reference: email, password, link, number, datetime, color and file.

Another significant change on our agenda for the TYPO3 v12 series is to discontinue and remove RequireJS. The purpose of this third-party library is to load JavaScript files and modules in an organized way, taking dependencies into account. Following the W3C specification Import Maps (currently in draft), developers can now use JavaScript ES6 instead of AMD modules (Asynchronous Module Definition). With this move, we will gain a performance boost since modules will be loaded much faster.

It is important to understand that the API is still considered experimental and may change in subsequent releases of the TYPO3 v12 series.

If you, as a TYPO3 extension developer, need to extend the core functionality of TYPO3, you will most likely come across the PSR-14 specification and Symfony’s Events and Event Listeners concept. This technology has been part of the TYPO3 Core for some time now. The list of events that the core dispatches is constantly growing. We have continued this trend in TYPO3 v12 and replaced the previously used Signals/Slots solution from all related classes with events in version 12.0.

Two new events, for example, let developers manipulate messages generated by TYPO3’s Mailer component. Read the TYPO3 documentation to learn more about PSR-14 Events and which events are available in TYPO3 version 12.0.

We introduced the Pagination API in TYPO3 version 10.2 back in December 2019. This API offers a solution that lets users comfortably browse through any list of items—from database records to arrays and QueryResults. The Pagination API was extended in TYPO3 version 12.0 and now also features “sliding window pagination”. The TYPO3 documentation already reflects this change and provides a code example of how to use the new feature.

System Requirements, Support, and Maintenance

First and foremost, PHP version 8.1 is a new minimum requirement to run TYPO3 version 12.0. This version promises better performance and improved type safety, among other enhancements. In addition, PHP version 8.1 will receive security updates until November 2024.

The upgrade to Doctrine v3 also has an impact on the supported database engines:

  • MySQL 8.0 or higher
  • MariaDB 10.3 or higher
  • PostgreSQL 10.0 or higher
  • SQLite 3.8.3 or higher

The Microsoft SQL Server is no longer supported in TYPO3 v12.

Read more about the system requirements and dependencies of TYPO3 v12 in the article “Get Ready for TYPO3 v12” and on get.typo3.org.

Download and Installation

You find all details about the release and options to download TYPO3 at get.typo3.org. Detailed installation instructions are documented in the Installation Guide. We recommend using Composer to set up your TYPO3 environment.

What’s Next

TYPO3 version 12.0 is the first sprint release of the v12 series and marks the beginning of an exciting journey! The next release on our roadmap is TYPO3 version 12.1, scheduled in nine weeks, on 6 December 2022.

Additional contributors for this article
  • Art work : Markus Schwarz
  • Proofreader : Jeffrey A. McGuire
  • Proofreader : Claudia Nölker