---
title: "Introduction"
manual: "Frontend Theme for Extension Development"
version: "2.0"
source: "Introduction/Index.rst"
rendered: "2026-09-30T15:33:48+00:00"
---

# Introduction {#introduction}

## What does it do? {#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 a set of backend
> layouts, from a bare single column through two and three column grids to
> an article, a cover page and a stack of full width bands. It renders a
> main menu, a section menu and a breadcrumb, and it offers 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 {#introduction-core-version-aware}

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 {#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 {#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).
