TYPO3 v14: Asset handling gets leaner - What's changing for integrators
Have the article read aloud.
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:
- HTTP Response Compression - TYPO3 no longer compresses HTTP responses (neither frontend nor backend)
- 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:
- Look in your settings.php or additional.php for compressionLevel entries
- Search for config.concatenate or config.compress in your TypoScript
- 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:
- Check your web server configuration: make sure HTTP compression is enabled. With Apache and nginx, this is usually standard.
- Use modern HTTP protocols: Enable HTTP/2 or HTTP/3 in your SSL configuration.
- 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
Breaking #108055 - Removed Frontend Asset Concatenation and Compression
Breaking #108055 - Removed PageRenderer related hooks and methods
Vite AssetCollector Extension
https://extensions.typo3.org/extension/vite_asset_collector
BackComments 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.