---
title: "Breaking: #102835 - Strict typing in final TypoLinkCodecService"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:breaking-102835-1705314374"
source: "Changelog/13.0/Breaking-102835-StrictTypingInFinalTypoLinkCodecService.rst"
typo3-version: "13.0"
typo3-major: 13
type: "breaking"
issue: 102835
forge: "https://forge.typo3.org/issues/102835"
tags: ["PHP-API", "NotScanned", "ext:core"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Breaking: #102835 - Strict typing in final TypoLinkCodecService {#breaking-102835-1705314374}

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

## Description {#description}

The `\TYPO3\CMS\Core\LinkHandling\TypoLinkCodecService`, used to encode
and decode TypoLinks, has been declared `readonly` and set `final`.
Additionally, the class does now use strict typing and the `decode()`
method's first parameter `$typoLink` is now a type hinted `string`.

This has been done in combination with the introduction of the two new PSR-14
events `BeforeTypoLinkEncodedEvent` and `AfterTypoLinkDecodedEvent`,
which allow to fully influence the encode and decode functionality, making
any cross classing superfluous.

## Impact {#impact}

Extending / cross classing `TypoLinkCodecService` does no longer work
and will lead to PHP errors.

Calling `decode()` with the first parameter `$typolink` being not
a `string` will lead to a PHP TypeError.

## Affected installations {#affected-installations}

All installations extending / cross classing `TypoLinkCodecService` or
calling `decode()` with the first parameter `$typolink` not being
a `string`.

## Migration {#migration}

Instead of extending / cross classing `TypoLinkCodecService` use the
[new PSR-14 events](https://docs.typo3.org/permalink/changelog:feature-102835-1705314133)
to modify the functionality.

Ensure to always provide a `string` as first parameter `$typolink`,
when calling `decode()` in your extension code.
