---
title: "Versioning, deprecation and support policy"
manual: "Environment State Manager"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/environment-state-manager:developer-versioning-policy@main"
source: "Developer/VersioningPolicy/Index.rst"
rendered: "2026-10-17T14:50:33+00:00"
---

# Versioning, deprecation and support policy {#developer-versioning-policy}

This extension follows a predictable release and deprecation process so that
depending extensions know what to expect across releases.

## Semantic versioning {#semantic-versioning}

Releases follow [semantic versioning](https://semver.org/) (`MAJOR.MINOR.PATCH`)
applied to the [public API](https://docs.typo3.org/permalink/fgtclb/environment-state-manager:developer-public-api@main):

-   **PATCH** releases contain backward-compatible bug fixes only.
-   **MINOR** releases add backward-compatible functionality and may add new
    deprecations, but never remove or change existing public API.
-   **MAJOR** releases may contain breaking changes to the public API, including
    the removal of previously deprecated functionality.

Only the public API is covered by this promise. Internal implementation details
(see [Public API and stability](https://docs.typo3.org/permalink/fgtclb/environment-state-manager:developer-public-api@main)) may change in any release.

## Deprecations and breaking changes {#deprecations-and-breaking-changes}

Functionality that is going to be removed is deprecated first whenever a
backward-compatible path can be provided:

-   Deprecations are announced in a dedicated changelog entry under
    `Documentation/Changelog/<version>/Deprecation-*.rst`, describing what
    is deprecated and how to migrate.
-   Where a runtime path exists, deprecated code triggers an
    `E_USER_DEPRECATED` notice.
-   Deprecated functionality is removed no earlier than the next **MAJOR**
    release. Breaking changes are documented in a `Breaking-*.rst` changelog
    entry and the commit is prefixed with `[!!!]`.

Not every change can go through a deprecation phase. TYPO3 core-version specific
state, such as the `TypoScriptFrontendController` accessors, lives on a
TYPO3 core-version specific `ExtendedStateInterface` and not on the
version-agnostic `StateInterface`. The `TypoScriptFrontendController`
is deprecated in TYPO3 v13 and removed in TYPO3 v14, so `Core13` provides an
`ExtendedStateInterface` carrying its accessors while `Core14` omits it
entirely; the version-agnostic public contract stays untouched across both.

## TYPO3 core version support {#typo3-core-version-support}

Each release states the supported TYPO3 core versions in its
`composer.json` and `ext_emconf.php`. Support for a TYPO3 core
version is dropped only in a **MAJOR** release of this extension, accompanied by
a breaking changelog entry. New TYPO3 core versions are added in **MINOR**
releases through dedicated, version-specific `Core<major>/` implementations.
