---
title: "Breaking: #107831 - Removed TypoScriptFrontendController"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:breaking-107831-1761307521"
source: "Changelog/14.0/Breaking-107831-RemovedTypoScriptFrontendController.rst"
typo3-version: "14.0"
typo3-major: 14
type: "breaking"
issue: 107831
forge: "https://forge.typo3.org/issues/107831"
tags: ["Frontend", "NotScanned", "ext:frontend"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Breaking: #107831 - Removed `TypoScriptFrontendController` {#breaking-107831-1761307521}

See [forge#107831](https://forge.typo3.org/issues/107831)

## Description {#description}

All remaining properties have been removed from
`\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController`, making the
class a readonly internal service used by the TYPO3 Core only.

The class will be fully removed in a later TYPO3 v14 release.

The following instance access patterns have been removed:

-   `$GLOBALS['TSFE']`
-   `$request->getAttribute('frontend.controller')`
-   `$contentObjectRenderer->getTypoScriptFrontendController()`

All API methods that returned an instance of
`TypoScriptFrontendController` \-
usually named `getTypoScriptFrontendController()` or similar - have been
removed as well.

## Impact {#impact}

Any remaining direct or indirect usage of
`TypoScriptFrontendController` will
now result in a fatal PHP error.

## Affected installations {#affected-installations}

Extensions that still relied on properties or methods of
`TypoScriptFrontendController` are
affected.

The class was already marked *internal* and *breaking* in TYPO3 v13.

In particular, extensions that used
`AbstractContentObject->getTypoScriptFrontendController()` can now access
the relevant data from the PSR-7 request object, for example:

```php
$pageInformation = $request->getAttribute('frontend.page.information');
```

## Migration {#migration}

See [Breaking: #102621 - Most TSFE members marked internal or read-only](https://docs.typo3.org/permalink/changelog:breaking-102621-1701937690) for a detailed list of removed properties
and their replacements.

As a specific example, old code that added additional header data like this:

```php
$frontendController = $request->getAttribute('frontend.controller');
$frontendController->additionalHeaderData[] = $myAdditionalHeaderData;
```

should now use:

```php
use TYPO3\CMS\Core\Page\PageRenderer;
use TYPO3\CMS\Core\Utility\GeneralUtility;

$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
$pageRenderer->addHeaderData($myAdditionalHeaderData);
```

The same approach applies to `additionalFooterData`.
