Skip to main navigation Skip to main content Skip to page footer
TYPO3 v14: Asset handling gets leaner - What's changing for integrators

TYPO3 v14: Asset handling gets leaner - What's changing for integrators

Have the article read aloud.

Loading the Elevenlabs Text to Speech AudioNative Player...
| TYPO3 | Estimated reading time : min.
This article was automatically translated using DeepL. Therefore, inaccuracies may occur.

Breaking changes in TYPO3 v14: Asset concatenation and HTTP compression will be dropped. The good news - many instances are not affected, and the alternatives are better.

After the strategic innovations and practical features in TYPO3 v14, it's time to talk about breaking changes. Specifically: TYPO3 is tidying up its asset handling and removing functions that have been considered problematic for years.

The good news is that many instances are not affected. And for those who are affected, there are better alternatives. Here is an overview.

What is being removed?

TYPO3 v14 says goodbye to two built-in functions:

  1. HTTP Response Compression - TYPO3 no longer compresses HTTP responses (neither frontend nor backend)
  2. Asset Concatenation & Pre-Compression - CSS and JavaScript are no longer combined or pre-compressed

Both features always had to be activated explicitly. Many instances never used them.

Why this change?

HTTP response compression is a web server task

Previously, TYPO3 could compress its HTTP responses with $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] and $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel']. This was always a workaround.

The problem: If both TYPO3 and the web server compress, there are collisions. Modern web servers support more efficient algorithms such as Brotli and Zstandard, which TYPO3 has never implemented.

The solution: web servers take over the compression. Apache and nginx do this by default - and better.

Asset Concatenation was prone to errors

The idea: Several CSS and JavaScript files are combined into a single file and optionally pre-compressed. This should reduce HTTP requests.

Why this is no longer needed:

  • HTTP/2 and HTTP/3 allow parallel requests (multiplexing). Loading several assets at the same time is no longer a problem.
  • Fragile implementation: CSS paths had to be adapted, @charset statements collided, external assets were reloaded with every uncached request - performance nightmare with INT elements.
  • Parallel systems: The Fluid ViewHelpers f:asset.css and f:asset.script never supported Concatenation. Two asset systems, two behaviors - confusing.
  • Minimal gain: Modern web servers compress small assets on-the-fly without significant overhead.

The core team has been closing issues in this area for years with "Won't fix". Now TYPO3 is following suit.

What does this mean for you?

If you are affected

You are affected if the following settings are active in your instance:

  • $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] or $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] set to values > 0
  • TypoScript-Config config.concatenateCss, config.concatenateJs, config.compressCss or config.compressJs activated

How to check if you are affected:

  1. Look in your settings.php or additional.php for compressionLevel entries
  2. Search for config.concatenate or config.compress in your TypoScript
  3. Use the TYPO3 backend: System → Configuration → $GLOBALS['TYPO3_CONF_VARS'] and search for compressionLevel

If you don't find anything, you are not affected.

What you need to do:

  1. Check your web server configuration: make sure HTTP compression is enabled. With Apache and nginx, this is usually standard.
  2. Use modern HTTP protocols: Enable HTTP/2 or HTTP/3 in your SSL configuration.
  3. Consider build tools: If you really need asset bundling, use modern tools like Vite or Webpack - not TYPO3.

Apache example: Enable HTTP/2

<IfModule http2_module>
    Protocols h2 http/1.1
</IfModule>
# Optional: deliver pre-compressed assets
AddEncoding gzip .gz
AddType "text/javascript" .js.gz
AddType "text/css" .css.gz
<FilesMatch "\\.(js|css)\\.gz$">
    ForceType text/plain
    Header set Content-Encoding gzip
</FilesMatch>

nginx example: Enable HTTP/2

server {
    listen 443 ssl http2;
    server_name [example.com](<http://example.com>);
    ssl_certificate /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/private/example.key;
    # Deliver pre-compressed assets, if available
    gzip_static on;
    # Optional: on-the-fly compression
    gzip on;
    gzip_types text/css application/javascript;
    [...]
}

Alternatives for asset bundling

If you really need asset concatenation:

  • Vite or Webpack: modern bundlers that work during the build process. There is a TYPO3 extension: Vite AssetCollector
  • sgalinski/scriptmerger or t3/min: Community extensions that handle script and stylesheet merging
  • CDN: For traffic-intensive projects - assets are delivered from edge servers

My recommendation:

  • For modern projects with a build pipeline: Use Vite or Webpack. This is the professional standard and gives you full control.
  • For existing projects without a build setup: sgalinski/scriptmerger or t3/min can be a quick solution if you really need asset concatenation.
  • For most cases: Rely on HTTP/2 and web server compression. This is usually completely sufficient and requires less maintenance.

What is changing in the PHP API?

If you are developing extensions that work with assets:

Removed methods (excerpt):

  • PageRenderer->disableConcatenateCss()
  • PageRenderer->enableConcatenateCss()
  • PageRenderer->disableCompressCss()
  • PageRenderer->enableCompressJavascript()
  • and others...

Removed configuration points:

  • $GLOBALS['TYPO3_CONF_VARS']['FE']['cssConcatenateHandler']
  • $GLOBALS['TYPO3_CONF_VARS']['FE']['jsConcatenateHandler']
  • and others...

Removed hooks:

  • $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_div.php']['minifyJavaScript']

The Extension Scanner automatically finds affected extensions.

The strategy behind it

These breaking changes fit into the overall picture of TYPO3 v14:

  • Clear responsibilities: Compress web servers, TYPO3 generates content
  • Use modern standards: HTTP/2, HTTP/3, Brotli, Zstandard
  • Less maintenance load: error-prone features are removed, not repaired

This is not a loss of features, but a tidying up. The alternatives are better.

How to stay prepared

TYPO3 v14 is still in development, but the direction is clear: less legacy, more modern standards.

I continue to filter the relevant changes from the ChangeLog and present them here in the blog. If you want to receive updates directly, subscribe to my TYPO3 newsletter.

And if you want to learn TYPO3 14 from scratch: I'm working on the TYPO3 Complete Course, which is updated with each new version. Modern asset strategies, Fluid 5, site sets and everything else that v14 brings. Join the waiting list to secure the discounted introductory price.


Sources & Links

Breaking #107943 - Frontend and backend HTTP response compression removed

https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.0/Breaking-107943-FrontendAndBackendHTTPResponseCompressionRemoved.html

Breaking #108055 - Removed Frontend Asset Concatenation and Compression

https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.0/Breaking-108055-RemovedFrontendAssetConcatenationAndCompression.html

Breaking #108055 - Removed PageRenderer related hooks and methods

https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.0/Breaking-108055-RemovedPageRendererRelatedHooksAndMethods.html

Vite AssetCollector Extension

https://extensions.typo3.org/extension/vite_asset_collector

Back

Comments under articles are disabled. If you have a question or addition, please send me an e-mail.

Hi, I'm Wolfgang.

I have been working with TYPO3 since 2006. Not in theory, but in real projects with real deadlines. I've probably had the problems you're having three times already.

At some point, I started putting my knowledge into video courses. Not because I like being in front of the camera, but because I kept hearing the same questions over and over again. There are now hundreds of videos. Every single one was the result of a specific question from a specific project.

What makes me different from a YouTube tutorial: I not only know the solution, but also the context. Why something works. When it doesn't work. And which mistakes you can avoid because I've already made them.

As a member of the TYPO3 Education Committee, I make sure that the certification exams are kept up to date. What is tested there flows directly into my courses.