---
title: "Deprecation: #109230 - FormResultCompiler"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:deprecation-109230-1773404000"
source: "Changelog/14.2/Deprecation-109230-FormResultCompiler.rst"
typo3-version: "14.2"
typo3-major: 14
type: "deprecation"
issue: 109230
forge: "https://forge.typo3.org/issues/109230"
tags: ["Backend", "FullyScanned", "ext:backend"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Deprecation: #109230 - FormResultCompiler {#deprecation-109230-1773404000}

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

## Description {#description}

The class `\TYPO3\CMS\Backend\Form\FormResultCompiler` has been
deprecated. The internal implementation of FormEngine has been adjusted to
better separate concerns, especially regarding rendering and asset handling.
This change also removed all internal usages of
`\TYPO3\CMS\Backend\Form\FormResultCompiler`,
as it handled more tasks than its name suggested.

## Impact {#impact}

Extensions and installations that render FormEngine forms manually rather
than through standard controllers, such as
`EditDocumentController`, and that use
`FormResultCompiler`, will be affected when the
class is removed in TYPO3 v15.

## Affected installations {#affected-installations}

Installations and extensions using
`FormResultCompiler` to build FormEngine forms.

## Migration {#migration}

Replace `FormResultCompiler` with
`FormResultFactory` and
`FormResultHandler`.

Before:

```php
use TYPO3\CMS\Backend\Form\NodeFactory;
use TYPO3\CMS\Backend\Form\FormResultCompiler;
use TYPO3\CMS\Core\Utility\GeneralUtility;

$nodeFactory = GeneralUtility::makeInstance(NodeFactory::class);
$formResultCompiler = GeneralUtility::makeInstance(
    FormResultCompiler::class
);

$formResult = $nodeFactory->create($formData)->render();
$formResultCompiler->mergeResult($formResult);

// Form HTML markup is accessible in the data array
$body = $formResult['html'];
```

After:

```php
use TYPO3\CMS\Backend\Form\NodeFactory;
use TYPO3\CMS\Backend\Form\FormResultFactory;
use TYPO3\CMS\Backend\Form\FormResultHandler;
use TYPO3\CMS\Core\Utility\GeneralUtility;

$nodeFactory = GeneralUtility::makeInstance(NodeFactory::class);
$formResultFactory = GeneralUtility::makeInstance(
    FormResultFactory::class
);
$formResultHandler = GeneralUtility::makeInstance(
    FormResultHandler::class
);

$formResult = $nodeFactory->create($formData)->render();
// Convert the raw result array into a FormResult object
$formResult = $formResultFactory->create($formResult);

// Use FormResultHandler to pass collected assets (JS, CSS, labels) to PageRenderer
$formResultHandler->addAssets($formResult);

// Form HTML markup is accessible in the FormResult DTO
$body = $formResult->html;
```
