NetresearchTYPO3 Skill Update Plan
TYPO3 v14.3 LTS
released & analysed 2026-04-21
Gold standard · today

TYPO3 v14.3 LTS is live — here's how we update every Netresearch skill

A comprehensive v13 → v14 change reference, an inventory of 15 Netresearch skills with concrete per-file gaps, and a 3-week execution plan to make v14.3 the new default.

Released2026-04-21 · TYPO3 v14.3 LTS
Free supportbugfix 2027-12-31 · security 2029-06-30
Scope15 skills across github.com/netresearch
Breaking changes98 in v14.0 · 0 since

TYPO3 v14.3 LTS — Netresearch Skill Update Plan

Release day: 2026-04-21 · Compiled & shipped: 2026-04-21 · Scope: all Netresearch skills touching TYPO3

Goal: make TYPO3 v14.3 LTS the new default and gold standard across every skill, without dropping multi-version support (v11 ELTS / v12 ELTS-soon / v13 LTS / v14 LTS-current).


🚢 Rollout status — 2026-04-21

21/21 PRs/MRs MERGED. Main CI green across every repo.

GitHub (15 repos — all merged into main)

# Skill PR Main CI
1 typo3-conformance-skill #48 ✅ merged
2 typo3-extension-upgrade-skill #20 ✅ merged
3 typo3-ddev-skill #26 ✅ merged
4 typo3-testing-skill #56 ✅ merged
5 typo3-project-upgrade-skill #6 ✅ merged
6 typo3-docs-skill #41 ✅ merged
7 typo3-typoscript-ref-skill #6 ✅ merged
8 typo3-ckeditor5-skill #18 ✅ merged
9 security-audit-skill #57 ✅ merged
10 typo3-core-contributions-skill #17 ✅ merged
11 enterprise-readiness-skill #52 ✅ merged
12 php-modernization-skill #32 ✅ merged
13 typo3-vite-skill #2 ✅ merged n/a (no CI wired yet)
14 typo3-a11y-skill #2 ✅ merged n/a
15 typo3-frontend-patterns-skill #2 ✅ merged n/a

GitLab (6 repos — all merged into main)

# Skill / tool MR
1 coding-ai/dxp-frontend-skill !1 ✅ merged
2 coding-ai/typo3-extension-upgrade-skill (internal) !1 ✅ merged
3 coding-ai/typo3-project-evaluator-skill !3 ✅ merged
4 coding-ai/typo3-update-issues-skill !1 ✅ merged
5 coding-ai/typo3-upgrade-estimator-skill !3 ✅ merged
6 typo3/typo3-version-tracker !4 ✅ merged — new recompute CLI command

Production DB refreshed (version-tracker recompute, 2026-04-22):

Change Before After
support/typo3-14/app on v14.0.1 sprint / x.0 / support_end 2027-12-31 eol (14.0 is a discontinued sprint release)
26 other projects unchanged unchanged

Upcoming automatic flip on 2026-04-30: 8 v12.4 projects will transition ltselts when free maintenance ends. Re-run recompute to pick it up (no rescan needed).

Review findings applied

All bot-review findings (Gemini + Copilot) triaged and either fixed or skipped with rationale. Highlights:

  • typo3-ddev-skill: fixed real integration bug — config.yaml and docker-compose.web.yaml were missing v14.{sitename} hostname and v14-data:/var/www/html/v14 volume. The install-v14 command would have succeeded but produced an unreachable + ephemeral installation.
  • Cross-PR: dual v13+v14 PHP-attribute compatibility — the initial guidance (guard use statements with class_exists()) was technically wrong; attributes are declarative. Canonical polyfill-stub pattern now documented in typo3-conformance-skill/references/v13-v14-dual-compatibility.md and cross-referenced from typo3-extension-upgrade-skill and security-audit-skill.
  • typo3-project-upgrade-skill: addUserSetting() belongs in ext_localconf.php (Setup-module API), not in Configuration/TCA/Overrides/be_users.php; fixed.
  • typo3-conformance-skill: HashService replacement class canonicalized to TYPO3\CMS\Core\Crypto\HashService everywhere; addPlugin() + list_type → CType guidance corrected; grep regex escaping fixed.
  • ~23 reviewer comments skipped as factually wrong — bots repeatedly claimed v14.3 cannot be the LTS (must be v14.4) and that PHP 8.5 / PHPUnit 12/13 don't exist. TYPO3 v14.3 LTS released 2026-04-21 per the official announcement; PHP 8.5 is shipped; PHPUnit 11.5.x / 12.3.x / 13.0.x all exist.

Part A — v13 → v14 reference (what actually changed)

1. Platform requirements (v14.3)

Source: get.typo3.org/version/14.

v14.3
PHP >= 8.2.0 and <= 8.5.99 (8.2 / 8.3 / 8.4 / 8.5) — same floor as v12/v13, ceiling raised
Composer >= 2.1
MariaDB >= 10.4.3, <= 10.99.99
MySQL >= 8.0.17, <= 8.99.99
PostgreSQL >= 10.0
SQLite >= 3.8.3
Web server Apache httpd · Nginx · IIS · Caddy
RAM >= 256 MB
Browsers (backend) Chrome / Edge / Firefox / Safari (latest each)
Node.js (build) >=24.14.0 <25.0.0, npm >=11.9.0 (core Build/package.json)

DDEV is the canonical dev setup. Official quickstart:

ddev config --project-type=typo3 --docroot=public --webserver-type 'apache-fpm'
ddev composer create --no-install "typo3/cms-base-distribution:^14"
ddev composer install
ddev typo3 setup --server-type=apache --driver=mysqli --host=db --port=3306 --dbname=db --username=db --password=db

2. Dependency bumps (v13 → v14)

Component v13 v14 Note
Symfony ^7.1/^7.2 ^7.3
Doctrine DBAL ~3.x ~4.3.3
Fluid Standalone (typo3fluid/fluid) ^4.x ^5.0.2 Fluid 5 is a breaking major (strict VH args); 5.0 → 5.3 during v14 cycle
CKEditor 5 ~41/42.x 47.0.0
Icon set 4.4.1 (RTL/LTR)
alwan color picker 2.2.0
PHPStan (dev) 2.1.32
php-cs-fixer (dev) 3.88.2
Testing Framework 9.5.0 (supports both v13 and v14 — same branch); pulls PHPUnit `^11.2.5 ^12.1.2
Bootstrap (backend) 5.3.2 runtime JS, jQuery tab events deprecated (#109171), Modal migrated to native <dialog> (Breaking #107443)

3. Breaking change map (v14.0 only — LTS freeze after that)

v14.0 has 98 breaking, 31 deprecation, 105 feature, 16 important changelog entries. v14.1, v14.2, v14.3 introduce zero breaking changes — only features + v15-preparation deprecations. That's the LTS promise in action.

The top categories to watch when upgrading an extension v13 → v14:

Frontend / TSFE collapse

  • TypoScriptFrontendController class removed (#107831). $GLOBALS['TSFE'], $request->getAttribute('frontend.controller'), $contentObjectRenderer->getTypoScriptFrontendController() all gone. → Replace with $request->getAttribute('frontend.page.information') and PageRenderer::addHeaderData()/addFooterData().
  • AfterCachedPageIsPersistedEvent no longer receives TSFE (#107831).
  • _GET/_POST not reset to current request anymore (#108113).
  • Global FE content link prefixing removed (#108114).
  • CSS/JS concatenation + compression + comment stripping removed (#108055, #107944).
  • HTTP response compression removed (#107943).
  • AssetRenderer "external" property removed (#107927).

Fluid 5 (Breaking #108148)

  • CDATA sections no longer stripped automatically.
  • Variable names with leading _ forbidden.
  • ViewHelpers must be strict-typed (typed args + return type).
  • renderStatic() removed from AbstractViewHelper.
  • Classes removed: Fluid\View\StandaloneView, TemplateView, AbstractTemplateView. → Use Core\View factories.
  • Standalone overrideArgument + ViewHelperResolver helpers removed (#104223, #104463).

Extbase

  • Docblock annotations namespace removed (#107229). PHP attributes only.
  • Magic repository methods findByX/findOneByX/countByX removed (#105377). Use createQuery().
  • Shorthand TYPO3.CMS.Extbase namespace removed.
  • ValidatorInterface now requires setRequest()/getRequest() (#106056).
  • PropertyMappingConfigurationInterface strong-typed (#101292).
  • Argument uses strict types (#107777).
  • config.tx_extbase.persistence.updateReferenceIndex toggle removed (#106041).
  • Backend modules not in page context use only global TypoScript (#105728).

FAL / File handling (#106427, #107403, #107735)

  • AbstractFile::getIdentifier()/setIdentifier() removed.
  • rename()/copyTo()/moveTo() moved from AbstractFile to File.
  • FolderInterface requires getSubFolder/getReadablePath/getFiles/searchFiles.
  • FileNameValidator no longer accepts custom regex in __construct() (#105733).
  • Folder->getSubFolder() throws FolderDoesNotExistException (#105920).
  • Metadata extractor registration via registerExtractionService() removed (#107783). Implement MetadataExtractorInterface.
  • Backend avatar provider registration via $GLOBALS removed (#107871). Use autoconfigure tag.
  • LocalPreviewHelper + LocalCropScaleMaskHelper classes removed (#107403).
  • sys_file_metadata field removal (#106503).

Cache (#107315)

  • BackendInterface, PhpCapableBackendInterface, TransientBackendInterface, FrontendInterface strongly typed.
  • AbstractBackend::__construct(array $options = []) (context parameter removed).
  • FreezableBackendInterface removed (#107310).

TCA

  • Plugin subtypes gone: subtype_value_field, subtypes_addlist, subtypes_excludelist (#105377).
  • control.searchFields removed (#106972) — use configurable search TCA.
  • control.is_static removed (#106863).
  • eval=year removed (#98070).
  • Value picker prepend/append modes removed (#107677).
  • interface settings for list view removed (#106412).
  • pages.url field removed (#17406) — use typolink page type.
  • tt_content.list_type + tt_content.list gone — CType-only plugins (#105538).
  • tt_content.imagewidth/imageheight now nullable (#68303).
  • type=uuid uses Doctrine GUID type (#103141).
  • Duplicate doktype restriction config removed (#106949).
  • showitem strings use short-form references; core.form.tabs consolidated (#107789).
  • Scheduler frequency moved to TCA (#107488) + DB storage format changed (#106532) + scheduler tasks become native TCA (#106739).

Backend / UI

  • Modal migrated from Bootstrap to native <dialog> (#107443).
  • "Database Relations" module removed (#97151).
  • Reports interfaces removed; new native submodule overview (#107791).
  • Button API reworked (#107884, #107823).
  • DocHeader MetaInformation API deprecated (#107813).
  • Backend layout data provider $GLOBALS registration removed (#107784).
  • LoginProviderInterface::render() removed → implement modifyView().
  • JS modules removed: @typo3/backend/document-save-actions.js, @typo3/backend/wizard.js, @typo3/t3editor/*.
  • Workspace "Freeze Editing" removed (#107323).

DataHandler

  • userid and admin properties removed (#107848).
  • copyWhichTables, neverHideAtCopy, copyTree removed (#107856) — read from $BE_USER->uc.
  • storeLogMessages removed (#106118).
  • ISO 8601 date handling reworked (#105549).

EXT:form — 10 hooks removed (use PSR-14 events): afterBuildingFinished, beforeFormCreate, beforeFormDuplicate, beforeFormDelete, beforeFormSave, initializeFormElement, beforeRemoveFromParentRenderable, afterInitializeCurrentPage, afterSubmit, beforeRendering. Legacy form templates removed (#106596).

EXT:felogin

  • Logout handling changed (#103910); redirect in logoutAction removed (#103913).
  • exposeNonexistentUserInForgotPasswordDialog setting removed (#105863).

TypoLink / URLs

  • TypolinkBuilder signature changed (#106405); new TypolinkBuilderInterface.
  • AbstractTypolinkBuilder->build() deprecated.
  • Sitemap GET parameters moved to namespace (#104422).
  • doktype=shortcut random subpage option removed (#107654).

Install Tool / bootstrap

  • typo3/install.php removed — integrated into backend routing (#107536, BC preserved).
  • typo3/index.php legacy entry + composer.json setting removed.
  • Environment::getComposerRootPath removed (#107482).
  • composer.json required in classic mode (#108310) — installs without one stop detecting extensions.
  • Extension title auto-populated from composer.json (#108304).
  • Reference index check moved to Install Tool (#107629).

Security / crypto

  • HMAC algorithm: SHA1 → SHA256 family (#106307).
  • Extbase\Security\Cryptography\HashService removed (part of #105377). New symmetric cipher service (#108002).
  • AuthenticationService static function parameter removed (#106869).
  • AfterMailerInitializationEvent removed (#105809).
  • MailMessage->send() removed (#108097).

The #105377 umbrella (the "deprecated functionality removed" sweep):

  • Classes removed: HashService, StandaloneView, TemplateView, AbstractTemplateView, GenericViewResolver, SlugEnricher, DuplicationBehavior (now enum), InformationStatus, Enumeration, IconState, EnumType, FluidViewAdapter/Factory.
  • Interfaces removed: PageRepositoryInitHook/GetPageHook, ViewResolverInterface, ContentObjectGetData/GetImageResource/OneSourceCollection/PostInit/StdWrap hooks.
  • Static utilities gone: BackendUtility::getTcaFieldConfiguration/thumbCode, GeneralUtility::hmac, ExtensionManagementUtility::addPItoST43/addPageTSConfig/addUserTSConfig/getExtensionIcon, MathUtility::convertToPositiveInteger.
  • TypoScript: <INCLUDE_TYPOSCRIPT:> removed → use @import.
  • TSconfig: options.pageTree.backgroundColor removed.
  • Class constants: Icon::SIZE_*, AbstractFile::FILETYPE_*, ExtensionUtility::PLUGIN_TYPE_PLUGIN.
  • $GLOBALS['TYPO3_CONF_VARS']['BE']['defaultPageTSconfig'], defaultUserTSconfig removed.

4. v14.0 → v14.3 per-release headlines

Release Date Headlines
14.0 2025-11-25 All 98 breaking changes land here. Fluid 5, System Resource API, Symfony Translation + XLIFF 2.x, redesigned DocHeader, Scheduler-as-TCA, Fresh theme, CKEditor 5 47, Extbase attribute support, install.php removal, symmetric encryption
14.1 2026-01-20 Camino default theme (#108539), QR Code module (#107756), route enhancers in Site Sets (#107837), content-element colPos restrictions (#108623), Fluid Components (#108508), configurable global Fluid namespaces (#108524), XLF 2-space indentation (#107971). Zero breaking
14.2 2026-03-31 Page Creation Wizard (#108915), Short URL module (#108826), Content Type Usage Report (#107940), bookmark manager (#108796), DB storage for EXT:form (#108653), RTE in EXT:form (#108966), ICU plural forms (#104546), f:render.contentArea/record/text, fluid:analyze CLI (#108763), #[Authorize] + #[RateLimit] Extbase attrs (#107826, #108982, #109080), site cfg in import/export (#109340), module access gates (#109365). Zero breaking
14.3 LTS 2026-04-21 Stabilization release. ext_tables.php deprecated for v15 removal (#109438). EXT:setup merged into backend. Security wizard for be_users serialized passwords (Important #109585) — must run on any site that ever served v14.2. Cache action JSON endpoints (#109107). Bugfixes only

5. v15 preparation — what's deprecated in v14.3

Direction is clear: v15 drives out superglobals in favor of injected PSR-7 request.

  • ext_tables.php removal (#109438). Move to Configuration/Backend/Modules.php, Configuration/Backend/Routes.php, Configuration/TCA/Overrides/be_users.php (addUserSetting()), Configuration/TCA/Overrides/pages.php (allowedRecordTypes).
  • ext_emconf.php deprecated (#108345) — all metadata in composer.json.
  • GeneralUtility::getIndpEnv(), locationHeaderUrl(), sanitizeLocalUrl(), isOnCurrentHost() require PSR-7 request going forward.
  • Various ContentObjectRenderer properties/methods (#109575).
  • Bootstrap tab events (#109171).
  • Form DatePicker element (#109152).
  • Form file-based (YAML) storage (#108653) — DB is default.

6. LTS support windows (from release announcement)

Version Status Free maintenance ends ELTS ends (officially published)
v14.3 LTS Current — gold standard from today bugfix 2027-12-31 / security 2029-06-30 not yet published on typo3.com; endoflife.date lists 2032-06-30
v13 LTS Active LTS ~2027-10-31 not yet published on typo3.com
v12 LTS EOL imminent 2026-04-30 2030-04-30 (typo3.com ELTS)
v11.5 Free maintenance ended 2024-10 2028-10-31
v10.4 Free maintenance ended 2027-04-30
v14.0 / v14.1 / v14.2 Sprint — unsupported since 14.3 release today

7. Migration tooling (v13 → v14)

  • Extension Scanner (core): matchers updated for Fluid 5 strictness, FAL strong-typing, cache interface strict-typing, and the full #105377 umbrella.
  • TYPO3 Rector: 11 new v14 rules + 42 v13 carry-forwards. New CLI: --no-progress-bar, --only <rule>.
  • TYPO3 Fractor (a9f/typo3-fractor): handles TypoScript, FlexForm XML, composer.json, .htaccess, ext_emconf → composer migration, ext_tables.php split-off helpers.
  • PHPStan: saschaegerer/phpstan-typo3 and Rector bundle cover strict-types expectations across Cache/FAL.

Critical operational note: on any site that ran v14.2, the Important #109585 upgrade wizard must be executed after upgrade to v14.3 — password fields may be persisted serialized in be_users.uc/user_settings.

8. Content Blocks status

Content Blocks 2.x targets v14 as an external FriendsOfTYPO3 package — not yet in core. Planned core inclusion: v15 LTS. v14 ships supporting features: allowedRecordTypes per colPos (#108623), TCA type=country (#99911), record-type specific configuration.


Part B — Skill inventory & v14.3 gap assessment

Repos under /home/sme/p/ with main/ worktree. All are published under github.com/netresearch.

B.1 Priority matrix

# Skill Priority Rationale
1 typo3-extension-upgrade-skill P1 This is the v13→v14 upgrade skill — it must ship authoritative v14 guidance before any team can rely on it. Current content sparse on v14
2 typo3-conformance-skill P1 Currently-invoked skill. v14 is now "gold standard" — the scorecard must grade against v14 defaults (Fluid 5, attribute Extbase, ext_tables split)
3 typo3-ddev-skill P1 Install matrix must include v14. v14 template exists but isn't wired into Makefile/envrc
4 typo3-testing-skill P2 Testing Framework 9 supports v13+v14 same branch, but CI matrix examples and final-classes doc need v14 entries
5 typo3-project-upgrade-skill P2 Minimal content today; needs v13→v14 project-level migration guide (docker image bumps, site sets, Camino option)
6 typo3-docs-skill P2 Extraction patterns stop at 13.5.99; XLF 2-space indentation norm new in v14
7 typo3-typoscript-ref-skill P2 Has v13→v14 migration stub; needs completeness + <INCLUDE_TYPOSCRIPT> / userFunc opt-in / site.locale expression
8 typo3-ckeditor5-skill P3 CKE5 bumped 41/42 → 47. Verify RTE schema + dark/light mode default-on (#106964)
9 typo3-core-contributions-skill P3 Core main branch is v15-in-progress; ddev setup references current PHP — light updates
10 support-typo3-14-app / support-typo3-14-t3re P2 Infrastructure for v14 deployments — verify base images line up with v14.3 composer/php floors
11 php-modernization-skill P3 Language-agnostic. Optional: add PHP 8.5 examples since v14 accepts 8.5
12 security-audit-skill P3 Add #109585 (serialized credential) as an auditable finding and the SHA256 HMAC shift
13 enterprise-readiness-skill P3 Test-matrix examples could add v14 row
14 typo3-version-tracker P2 Must start tracking 14.1/14.2/14.3 per-release, LTS schedule update
15 agent-rules-skill / skill-repo-skill / automated-assessment-skill P3 Incidentally touch TYPO3 in examples/templates — keep in sync but not blocking

B.2 Per-skill gaps (what needs editing)

Each entry below is scoped to concrete files to edit. Absolute paths assume /home/sme/p/<repo>/main/.


1. typo3-extension-upgrade-skill (P1)

Purpose: v11→v12, v12→v13, v13→v14 extension upgrade playbooks.

Gaps:

  • references/upgrade-v13-to-v14.md — needs full rewrite reflecting the 98 breaking changes. Must cover: TSFE removal, Fluid 5 strict typing, FAL strong-typing, Cache interfaces, Extbase attributes + HashService removal, TCA subtype/searchFields/is_static/eval=year, ext_tables.php deprecation, composer.json classic-mode requirement, Symfony 7.3, Doctrine DBAL 4, CKE 5 47.
  • references/api-changes.md — enumerate the top 20 most-hit removals with before/after code snippets.
  • references/third-party-dependency-upgrades.md — Symfony ^7.3, Doctrine ~4.3, Fluid ^5.0.1, CKE 47.0.0, testing-framework ^9.
  • references/pre-upgrade.md — add Extension Scanner + Rector (new rules + --only flag) + Fractor (TypoScript + FlexForm + ext_emconf → composer) steps.
  • SKILL.md — update description trigger to list v14 explicitly, not "planning".
  • New file: references/v14-migration-tooling.md — Rector/Fractor/PHPStan cookbook for v14.
  • New file: references/v14-postupgrade-security.md — the #109585 wizard + HMAC rotation + Extbase HashService replacement recipe.

Test: a real extension (e.g. t3x-nr-textdb or t3x-rte_ckeditor_image) should be upgradable v13 → v14 using only this skill's guidance.


2. typo3-conformance-skill (P1 — this repo)

Purpose: Extension quality / conformance scorecard, modernization to v12/v13/v14.

Gaps:

  • SKILL.md — make v14 the default assumption, not "also v14". v13 becomes "also supported LTS".
  • references/v13-deprecations.md — confirm every listed item is actually removed in v14.0 (per #105377 umbrella + discrete tickets). Rename to references/v13-to-v14-removals.md or similar.
  • New file: references/v14-deprecations.md — v14.0/14.1/14.2/14.3 deprecations list for v15 prep. Use the ticket numbers in Part A §5.
  • references/backend-module-v13.md — add v14 companion (Context Panel, DocHeader rewrite, Buttons API v2, <dialog> modal).
  • references/dual-version-compatibility.md — new matrix row for v14, and mark supported combos. Note Testing Framework 9 supports both v13 and v14.
  • references/coding-guidelines.md — align examples with Fluid 5 strict ViewHelpers, Extbase PHP attributes, #[Authorize]/#[RateLimit].
  • references/viewhelper-security.md (if present) — add strict-types reminder, variables-starting-with-underscore ban, useNonce deprecation.
  • Existing CSP / Bootstrap-5 / XLIFF-hygiene refs — add XLF 2-space indentation rule (#107971) and CSP-hash-over-nonce preference (#100887).
  • New file: references/checkpoints-v14.md — checkpoint YAML snippets scoring an extension against v14 gold-standard (composer.json metadata, no ext_tables.php, no HashService, no magic repo finders, strict-typed VHs, XLF 2-space, #[Authorize] on sensitive actions).
  • README + scorecard — update version matrix.

Anchor: v14.3 = default. v12/v13 still pass, but surface a "v14-ready?" score.


3. typo3-ddev-skill (P1)

Purpose: DDEV setup for TYPO3 extension dev across multiple versions.

Gaps:

  • assets/templates/apache/v14.conf — template exists but not wired into the install flow.
  • assets/templates/Makefile.template — add install-v14 target mirroring install-v13.
  • assets/templates/.envrc — add install-v14 help text.
  • assets/templates/ddev/config.v14.yaml — if this mirrors v13, confirm PHP 8.2/8.3/8.4/8.5 variants and typo3/cms-base-distribution:^14 constraint.
  • README.md — version badge 11 | 12 | 1311 | 12 | 13 | 14 and replace default install-version references with v14.
  • docs/ARCHITECTURE.md — add v14 directory in the layout diagram.
  • Verify: ddev config --webserver-type 'apache-fpm' is what the official TYPO3 installation tutorial recommends — and that our template matches.
  • Add: mention Caddy Server is now a supported web server (v14 adds it) in case we ever ship a Caddy profile.

4. typo3-testing-skill (P2)

Purpose: Test infrastructure (unit / functional / E2E), PHPUnit, CI matrix.

Gaps:

  • references/typo3-v14-final-classes.md — verify against current v14.3 source. Extend with Cache / FAL interface strict-typing impact on test doubles (many test mocks break without signature alignment).
  • checkpoints.yaml — CI matrix example should show PHP 8.2/8.3/8.4/8.5 × TYPO3 12.4/13.4/14.4 permutations; prune PHP 8.1 where extension dropped v11.
  • references/ci-debugging.mdreportUnmatched guidance referenced v12.4; add v14.3 Testing Framework 9 pinning.
  • New file: references/v14-testing-framework-notes.md — strict-typing migration tips for GeneralUtilityFixture, FunctionalTestCase changes, PHPUnit deprecations.
  • E2E (Playwright/Cypress): backend changed significantly (DocHeader, Context Panel, <dialog> modal, bookmark mgr) — selectors in reference E2E tests will break. Add a "v14 backend selector map".

5. typo3-project-upgrade-skill (P2)

Purpose: Deployed-instance upgrade (site config, TypoScript, templates, Docker).

Gaps:

  • SKILL.md — promote beyond one-file skill. Needs phases: pre-upgrade audit → composer update → DB migration → site config migration → post-upgrade security wizard (#109585) → smoke tests.
  • New file: references/v13-to-v14-project-upgrade.md — site config evolution, site sets as canonical config, Camino theme opt-in, Docker base-image bump, composer.json normalization, deletion of typo3/install.php entry point, composer.json requirement for classic mode, re-point CI matrix.
  • New file: references/docker-images-v14.md — bump from the t3re image (confirm support-typo3-14-t3re outputs matches v14.3 PHP requirements).
  • New file: references/post-upgrade-security-wizard.md — the #109585 wizard walkthrough (only needed if the site transited through v14.2 at any point).

6. typo3-docs-skill (P2)

Purpose: Extension documentation authoring (RST, guides.xml).

Gaps:

  • references/coding-guidelines.md — note v14.0 removal cutoff (some older "Since X.Y" lines now redundant).
  • references/content-directives.md — verify mentions of v14.0/v15.0 removal targets still accurate.
  • references/extraction-patterns.md — extend version range from 12.4.0–13.5.99 to 12.4.0–14.3.99.
  • Add: XLF 2-space indentation rule (#107971) as a doc hygiene rule.
  • Add: note that ext_emconf.phpcomposer.json metadata consolidation also affects docs' "extension metadata" section.

7. typo3-typoscript-ref-skill (P2)

Purpose: TypoScript / TSconfig / Fluid template authoring & review.

Gaps:

  • references/review/migration-v13-to-v14.md — completeness check. Must include:
    • <INCLUDE_TYPOSCRIPT:> removal (#105377) → @import
    • Explicit opt-in for TypoScript/TSconfig callables (#108054)
    • site.locale expression (#107105)
    • limitToPages expression language in routing (#109263)
    • config.tx_extbase.persistence.updateReferenceIndex removed (#106041)
    • TSconfig options.pageTree.backgroundColor removed
    • TSconfig auth.BE.redirectToURL deprecated (#106969)
    • doktypesToShowInNewPageDragArea deprecated (#109196)
    • Typolink: TypolinkBuilder sig change (#106405)
    • TypoScript condition getTSFE() removed (#107473)
  • New: Fluid 5 quick-reference (strict types, underscore-variable ban, CDATA preservation, .fluid.html/.fluid.txt extensions, union types).
  • Lookup cache needs v14 reference data refreshed.

8. typo3-ckeditor5-skill (P3)

Purpose: CKEditor 5 plugin & preset authoring.

Gaps:

  • Bump supported CKE version to 47 (was 41/42 under v13).
  • references/migration-guide.md — note backend context-awareness (dark/light) is on by default (#106964).
  • SKILL.md — replace "v12+" with "v12–v14" or "TYPO3 12.4+" explicit list.
  • Verify: the RTE YAML schema didn't add/remove keys in v14.

9. typo3-core-contributions-skill (P3)

Purpose: TYPO3 Core contributions via Forge/Gerrit.

Gaps:

  • references/ddev-setup-workflow.md — PHP version defaults. Current main branch of TYPO3 is v15-in-progress, so development on PHP 8.4/8.5.
  • Note new CLI helper: install:password:set is useful for Gerrit-patch testing.

10. support-typo3-14-app / support-typo3-14-t3re (P2)

Purpose: Docker infrastructure for Netresearch-hosted v14 sites.

Gaps (infra, not skill docs):

  • Confirm PHP version(s) shipped in the container match v14.3 floor (8.2) — ideally include 8.4 as the default runtime to match v14.3 recommendations.
  • Confirm Composer ≥ 2.1 in the image.
  • docker-compose.yml — baseline typo3/cms-base-distribution:^14.
  • Image ARGs / Dockerfile base tags may need a refresh since v14.3 shipped today.

11. php-modernization-skill (P3)

Gaps:

  • Optional: add a PHP 8.5 compat note since v14 now accepts it. Not urgent.

12. security-audit-skill (P3)

Gaps:

  • Add an audit rule for Important #109585 (serialized credential data in be_users — run the upgrade wizard if v14.2 was ever in use).
  • Add HMAC audit: flag any GeneralUtility::hmac() callers (removed) or lingering SHA1 use.
  • Add Extbase\Security\Cryptography\HashService callers as "broken on v14" findings with symmetric cipher service replacement.
  • Add #[RateLimit] and #[Authorize] as recommended controls on login / password-reset / import endpoints.

13. enterprise-readiness-skill (P3)

Gaps:

  • references/ test-matrix example: add v14.3 row.
  • No functional changes.

14. typo3-version-tracker (P2)

Purpose: Tracks TYPO3 version usage across Netresearch projects.

Gaps:

  • data/projects.db currently tracks v14.0 with state=sprint. Update:
    • v14.0 / v14.1 / v14.2 → sprint_ended (unsupported since 2026-04-21)
    • v14.3 → active_lts (bugfix-end 2027-12-31, security-end 2029-06-30)
    • v13.x → active_lts with the correct end dates
    • v12.x → eol_imminent (2026-04-30)
  • Seed reports (reports/typo3_versions.html) regenerate post-update.
  • If the scraper pulls from get.typo3.org, kick a fresh crawl.

15. agent-rules-skill / skill-repo-skill / automated-assessment-skill (P3)

Gaps: Example snippets referencing TYPO3 should be spot-checked for v14 compat. No blocking work.


B.3 Shared cross-cutting updates (apply to all TYPO3 skills)

  1. Version matrices — replace "12, 13" with "12, 13, 14" everywhere. Default/recommended = v14.3 LTS (today's release; bugfix releases will be 14.3.1, 14.3.2, …).
  2. PHP matrices — extend ceiling to 8.5 in examples; keep floor at 8.2 (unchanged).
  3. Composer — ensure all examples honor typo3/cms-base-distribution:^14 as default.
  4. Deprecation-of-deprecations — if a skill still references now-removed APIs as "deprecated", upgrade the phrasing to "removed in v14".
  5. CSP / SRI — surface integrity+auto-SRI (#109187) and CSP-hash-over-nonce (#100887) as the new default in security refs.
  6. Site Sets first — where skills discuss site config, lead with Site Sets (v13+, now canonical) and route enhancers in sets (#107837).
  7. CKEditor 5 — v14's CKE is 47.x.
  8. Testing Framework — branch 9.x supports both v13 and v14 — same branch, no matrix split needed.
  9. XLF hygiene — 2-space indentation is the new norm (#107971).
  10. ext_emconf/ext_tables — docs and checkpoints should flag both as "remove before v15" and provide the Configuration/Backend/*.php + composer.json-metadata replacements.

Part D — Verified specifications

All items below were pending verification in the first pass; resolved 2026-04-21 against authoritative sources.

D.1 Node.js — >=24.14.0 <25.0.0, npm >=11.9.0

Source: TYPO3/typo3 core Build/package.json on mainengines block declares:

"engines": {
  "node": ">=24.14.0 <25.0.0",
  "npm": ">=11.9.0"
}

Note: Composer-installed typo3/cms-core strips the Build/ directory, so this file is not in the vendor tree — only in the source repo on GitHub.

D.2 Bootstrap — 5.3.2 (runtime JS), CSS banner still 5.1.3 (stale artifact)

Sources:

  • Runtime JS banner at vendor/typo3/cms-core/Resources/Public/JavaScript/Contrib/bootstrap.js:6Bootstrap v5.3.2
  • Build/package.json on main"bootstrap": "^5.3.2", "@types/bootstrap": "^5.2.6"

Caveat: vendor/typo3/cms-backend/Resources/Public/Css/backend.css:16 still carries Bootstrap v5.1.3 — compiled CSS banner that wasn't refreshed. Authoritative runtime version is 5.3.2.

D.3 PHPUnit — ^11.2.5 || ^12.1.2 || ^13.0.2 via testing-framework 9.5.0

Source: packagist.org/packages/typo3/testing-framework.json9.5.0 (latest 9.x) requires:

"phpunit/phpunit": "^11.2.5 || ^12.1.2 || ^13.0.2"

Testing framework 9.x release chain: 9.0.0 → 9.0.1 → 9.0.2 → 9.0.3 → 9.1.0 → 9.1.1 → 9.1.2 → 9.2.0 → 9.2.1 → 9.3.0 → 9.4.0 → 9.5.0. Branch supports TYPO3 v13 and v14 from the same codebase.

D.4 v14 ELTS end date — not yet officially published

  • typo3.com/products-services/extended-support-elts lists ELTS end dates for v10.4 (2027-04-30), v11.5 (2028-10-31), v12.4 (2030-04-30). It does not list v13 or v14 ELTS end dates.
  • typo3.com/services/extended-support/elts-for-v14 → 404.
  • Community-maintained: endoflife.date/typo3 publishes v14 ELTS end as 2032-06-30 (not officially confirmed).

Action: treat v14 ELTS as "announced 3 years after free-security end (2029-06-30)"; watch typo3.com for the official listing.

D.5 TYPO3 Rector v14 rules — 47 rules (46 in TYPO314/v0/ + 1 in v2/)

Source: github.com/sabbelasichon/typo3-rector/tree/main/rules/TYPO314 (via GitHub Contents API, 2026-04-21).

Full rule list

rules/TYPO314/v0/ (46 rules):

  1. AddNewMethodHasSubmoduleOverviewInModuleInterfaceRector
  2. ChangeLocalizationSystemArchitectureRector
  3. DropFifthParameterForExtensionUtilityConfigurePluginRector
  4. ExtendExtbaseValidatorsFromAbstractValidatorRector
  5. IntroduceStrictTypingForCacheBeAndFeRector
  6. MigrateAdminPanelDataProviderInterfaceRector
  7. MigrateBooleanSortDirectionInFileListRector
  8. MigrateButtonBarMenuAndMenuRegistryMakeMethodsToComponentFactoryRector
  9. MigrateCopyRelatedDataHandlerPropertiesRector
  10. MigrateCoreTcaAndUserSettingsShowitemStringsToShortFormReferencesRector
  11. MigrateDataHandlerPropertiesUserIdAndAdminRector
  12. MigrateEnvironmentGetComposerRootPathRector
  13. MigrateFileCollectionRegistryAddTypeToTCARector
  14. MigrateGeneralUtilityCreateVersionNumberedFilenameRector
  15. MigrateIpAnonymizationTaskRector
  16. MigrateLabelReferenceToDomainSyntaxRector
  17. MigrateManualShortcutButtonCreationRector
  18. MigrateObsoleteCharsetInSanitizeFileNameRector
  19. MigratePassingAnArrayOfConfigurationValuesToExtbaseAttributesRector
  20. MigratePathUtilityGetPublicResourceWebPathRector
  21. MigrateRemovedMailMessageSendRector
  22. MigrateSingleDataStructureConfigurationRector
  23. MigrateSysRedirectDefaultTypeRector
  24. MigrateTableGarbageCollectionTaskConfigurationViaGlobalsRector
  25. MigrateUsageOfArrayInPasswordForAuthenticationInRedisCacheBackendRector
  26. MoveSchedulerFrequencyOptionsToTCARector
  27. MoveUpgradeWizardRelatedInterfacesAndAttributesToCoreRector
  28. RemoveConcatenateAndCompressHandlerRector
  29. RemoveEvalYearFlagRector
  30. RemoveExternalOptionFromAssetRendererRector
  31. RemoveFieldSearchConfigOptionsRector
  32. RemoveHttpResponseCompressionRector
  33. RemoveIsStaticControlOptionRector
  34. RemoveMaxDBListItemsRector
  35. RemovePageRendererMethodsRector
  36. RemoveParameterInAuthenticationServiceRector
  37. RemoveRandomSubpageOptionRector
  38. RemoveRegistrationOfMetadataExtractorsRector
  39. RemoveTcaControlOptionSearchFieldsRector
  40. ReplaceLocalizationParsersWithLoaders
  41. RequireComposerJsonInClassicModeRector
  42. UsageOfValidationAttributesAtMethodLevelRector
  43. UseRecordApiInListModuleRector
  44. UseStrictTypesInExtbaseArgumentRector
  45. UseStrictTypesInFluidViewHelpersRector
  46. UseStrongerCryptographicAlgorithmForHMACRector

rules/TYPO314/v2/ (1 rule): 47. MigrateTcaOptionAllowedRecordTypesForPageTypesRector

Invocation: vendor/bin/rector process --config rector.php after registering the TYPO314 set; individual rules can be targeted with --only ClassName (new in the v14 Rector release, see Community Budget Report).


Source index

Primary:

Key tickets:

Third-party / ecosystem:

Local references available:

  • TYPO3 Core source: /home/sme/p/TYPO3CMS-Reference-CoreApi/.Build/vendor/typo3/cms-core/ (contains full Documentation/Changelog/14.0/ with 250 entries)
  • Support infra: /home/sme/p/support-typo3-14-app/, /home/sme/p/support-typo3-14-t3re/
  • Version tracker: /home/sme/p/typo3-version-tracker/