---
title: "Introduction"
manual: "Frontend Theme for Extension Development"
version: "main"
source: "Introduction/Index.rst"
modified: "2026-09-17T04:52:50+00:00"
---

# Introduction

## What does it do?

The **Frontend Theme for Extension Development** extension provides a
TYPO3 frontend theme for development purposes. Its job is to give a TYPO3
installation a reasonable frontend to look at and to render against, without
building a site package for it first.

> [!IMPORTANT]
> The theme is not finished. What this chapter describes is what the extension
> is for; see the note at the end of this section for what it already does.

The situations it is built for, where an extension has to be seen or exercised
in a frontend rather than only in a test assertion:

-   **Extension development**, to click through what an extension actually
    outputs instead of reading the rendered HTML in a test failure.
-   **DDEV based test instances** of an extension repository, where a throwaway
    TYPO3 installation needs a frontend rendering pages, navigation and
    content elements.
-   **Acceptance tests**, which need a stable and predictable frontend to
    drive a browser against.
-   **Reproducing an issue** in a minimal installation before debugging it.

> [!WARNING]
> This is a development tool, not a production theme. It is meant to be
> required as a development dependency of an extension repository or
> installed into a disposable test instance, and it makes no promise about
> design, markup stability or upgrade paths for a live site.

> [!NOTE]
> The theme renders a page once a site depends on its site set — see
> [Configuration](../Configuration/Index.html#configuration). It covers **every classic content element**
> `EXT:frontend` registers, the eleven menu elements, the elements of
> its own, and third-party Extbase plugins, none of which requires
> `fluid_styled_content` — that extension is not a dependency here. An
> installation that has it anyway enables a bridge set, which keeps the
> rendering the theme's own — see
> [Feature: A bridge to fluid_styled_content](../Changelog/2.0/Feature-FluidStyledContentBridge.html#feature-fluid-styled-content-bridge). It ships six backend layouts, a
> main menu, a section menu and a breadcrumb, and a light/dark appearance
> switch. A seeded `/styleguide` page renders the whole component library
> on one page, so the theme can be looked at without building content for it
> first — see [Feature: A styleguide page](../Changelog/2.0/Feature-Styleguide.html#feature-styleguide). This chapter is extended along with
> the implemented features.
>
> Underneath that sits the foundation: TYPO3 v13 and v14 support from one code
> base with [core version aware](#introduction-core-version-aware)
> classes, wired by the dependency injection container of the running TYPO3
> version.

## Core version aware implementations

Code that has to differ between the supported TYPO3 versions lives below
`Core13/` and `Core14/` in the repository root. Shared code —
interfaces, abstract base classes and everything working on both core
versions — lives in `Classes/`.

Only the directory matching the running TYPO3 version is registered in the
dependency injection container, so a service asking for an interface always
receives the implementation matching the current core version.

## Compatibility

| Branch | Extension | TYPO3 | PHP |
| --- | --- | --- | --- |
| main | 2.x | v13.4 / v14.3 | 8.2 - 8.5 |
| 1 | 1.x | v12.4 / v13.4 | 8.1 - 8.4 |

This manual documents the `main` branch. Branch `1` is the maintained line
for the previous core version tuple and has a manual of its own; PHP 8.1 is
supported there for TYPO3 v12 only, because TYPO3 v13.4 requires PHP 8.2.

## Contributing

Contributions are welcome. The development setup, the quality gates and the
commit message rules are described in the `CONTRIBUTING.md` file of the
[source repository](https://github.com/sbuerk/theme-extension-development).
