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 lts → elts 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.yamlanddocker-compose.web.yamlwere missingv14.{sitename}hostname andv14-data:/var/www/html/v14volume. Theinstall-v14command would have succeeded but produced an unreachable + ephemeral installation.- Cross-PR: dual v13+v14 PHP-attribute compatibility
— the initial guidance (guard
usestatements withclass_exists()) was technically wrong; attributes are declarative. Canonical polyfill-stub pattern now documented intypo3-conformance-skill/references/v13-v14-dual-compatibility.mdand cross-referenced fromtypo3-extension-upgrade-skillandsecurity-audit-skill. typo3-project-upgrade-skill:addUserSetting()belongs inext_localconf.php(Setup-module API), not inConfiguration/TCA/Overrides/be_users.php; fixed.typo3-conformance-skill:HashServicereplacement class canonicalized toTYPO3\CMS\Core\Crypto\HashServiceeverywhere;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
TypoScriptFrontendControllerclass removed (#107831).$GLOBALS['TSFE'],$request->getAttribute('frontend.controller'),$contentObjectRenderer->getTypoScriptFrontendController()all gone. → Replace with$request->getAttribute('frontend.page.information')andPageRenderer::addHeaderData()/addFooterData().AfterCachedPageIsPersistedEventno longer receives TSFE (#107831)._GET/_POSTnot 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 fromAbstractViewHelper.- Classes removed:
Fluid\View\StandaloneView,TemplateView,AbstractTemplateView. → UseCore\Viewfactories. - Standalone
overrideArgument+ViewHelperResolverhelpers removed (#104223, #104463).
Extbase
- Docblock annotations namespace removed (#107229). PHP attributes only.
- Magic repository methods
findByX/findOneByX/countByXremoved (#105377). UsecreateQuery(). - Shorthand
TYPO3.CMS.Extbasenamespace removed. ValidatorInterfacenow requiressetRequest()/getRequest()(#106056).PropertyMappingConfigurationInterfacestrong-typed (#101292).Argumentuses strict types (#107777).config.tx_extbase.persistence.updateReferenceIndextoggle 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 fromAbstractFiletoFile.FolderInterfacerequiresgetSubFolder/getReadablePath/getFiles/searchFiles.FileNameValidatorno longer accepts custom regex in__construct()(#105733).Folder->getSubFolder()throwsFolderDoesNotExistException(#105920).- Metadata extractor registration via
registerExtractionService()removed (#107783). ImplementMetadataExtractorInterface. - Backend avatar provider registration via
$GLOBALSremoved (#107871). Use autoconfigure tag. LocalPreviewHelper+LocalCropScaleMaskHelperclasses removed (#107403).sys_file_metadatafield removal (#106503).
Cache (#107315)
BackendInterface,PhpCapableBackendInterface,TransientBackendInterface,FrontendInterfacestrongly typed.AbstractBackend::__construct(array $options = [])(context parameter removed).FreezableBackendInterfaceremoved (#107310).
TCA
- Plugin subtypes gone:
subtype_value_field,subtypes_addlist,subtypes_excludelist(#105377). control.searchFieldsremoved (#106972) — use configurable search TCA.control.is_staticremoved (#106863).eval=yearremoved (#98070).- Value picker
prepend/appendmodes removed (#107677). interfacesettings for list view removed (#106412).pages.urlfield removed (#17406) — use typolink page type.tt_content.list_type+tt_content.listgone — CType-only plugins (#105538).tt_content.imagewidth/imageheightnow nullable (#68303).type=uuiduses Doctrine GUID type (#103141).- Duplicate doktype restriction config removed (#106949).
showitemstrings use short-form references;core.form.tabsconsolidated (#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
$GLOBALSregistration removed (#107784). LoginProviderInterface::render()removed → implementmodifyView().- JS modules removed:
@typo3/backend/document-save-actions.js,@typo3/backend/wizard.js,@typo3/t3editor/*. - Workspace "Freeze Editing" removed (#107323).
DataHandler
useridandadminproperties removed (#107848).copyWhichTables,neverHideAtCopy,copyTreeremoved (#107856) — read from$BE_USER->uc.storeLogMessagesremoved (#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
logoutActionremoved (#103913). exposeNonexistentUserInForgotPasswordDialogsetting removed (#105863).
TypoLink / URLs
TypolinkBuildersignature changed (#106405); newTypolinkBuilderInterface.AbstractTypolinkBuilder->build()deprecated.- Sitemap GET parameters moved to namespace (#104422).
- doktype=shortcut random subpage option removed (#107654).
Install Tool / bootstrap
typo3/install.phpremoved — integrated into backend routing (#107536, BC preserved).typo3/index.phplegacy entry + composer.json setting removed.Environment::getComposerRootPathremoved (#107482).composer.jsonrequired 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\HashServiceremoved (part of #105377). New symmetric cipher service (#108002).AuthenticationServicestatic function parameter removed (#106869).AfterMailerInitializationEventremoved (#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/StdWraphooks. - Static utilities gone:
BackendUtility::getTcaFieldConfiguration/thumbCode,GeneralUtility::hmac,ExtensionManagementUtility::addPItoST43/addPageTSConfig/addUserTSConfig/getExtensionIcon,MathUtility::convertToPositiveInteger. - TypoScript:
<INCLUDE_TYPOSCRIPT:>removed → use@import. - TSconfig:
options.pageTree.backgroundColorremoved. - Class constants:
Icon::SIZE_*,AbstractFile::FILETYPE_*,ExtensionUtility::PLUGIN_TYPE_PLUGIN. $GLOBALS['TYPO3_CONF_VARS']['BE']['defaultPageTSconfig'],defaultUserTSconfigremoved.
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.phpremoval (#109438). Move toConfiguration/Backend/Modules.php,Configuration/Backend/Routes.php,Configuration/TCA/Overrides/be_users.php(addUserSetting()),Configuration/TCA/Overrides/pages.php(allowedRecordTypes).ext_emconf.phpdeprecated (#108345) — all metadata incomposer.json.GeneralUtility::getIndpEnv(),locationHeaderUrl(),sanitizeLocalUrl(),isOnCurrentHost()require PSR-7 request going forward.- Various
ContentObjectRendererproperties/methods (#109575). - Bootstrap tab events (#109171).
- Form
DatePickerelement (#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-typo3and 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 +HashServiceremoval, 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, CKE47.0.0, testing-framework^9.references/pre-upgrade.md— add Extension Scanner + Rector (new rules +--onlyflag) + 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 toreferences/v13-to-v14-removals.mdor 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,useNoncedeprecation.- 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— addinstall-v14target mirroringinstall-v13.assets/templates/.envrc— addinstall-v14help text.assets/templates/ddev/config.v14.yaml— if this mirrors v13, confirm PHP 8.2/8.3/8.4/8.5 variants andtypo3/cms-base-distribution:^14constraint.README.md— version badge11 | 12 | 13→11 | 12 | 13 | 14and 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.md—reportUnmatchedguidance referenced v12.4; add v14.3 Testing Framework 9 pinning.- New file:
references/v14-testing-framework-notes.md— strict-typing migration tips forGeneralUtilityFixture,FunctionalTestCasechanges, 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 oftypo3/install.phpentry point, composer.json requirement for classic mode, re-point CI matrix. - New file:
references/docker-images-v14.md— bump from the t3re image (confirmsupport-typo3-14-t3reoutputs 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 from12.4.0–13.5.99to12.4.0–14.3.99.- Add: XLF 2-space indentation rule (#107971) as a doc hygiene rule.
- Add: note that
ext_emconf.php→composer.jsonmetadata 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.localeexpression (#107105)limitToPagesexpression language in routing (#109263)config.tx_extbase.persistence.updateReferenceIndexremoved (#106041)- TSconfig
options.pageTree.backgroundColorremoved - TSconfig
auth.BE.redirectToURLdeprecated (#106969) doktypesToShowInNewPageDragAreadeprecated (#109196)- Typolink:
TypolinkBuildersig change (#106405) - TypoScript condition
getTSFE()removed (#107473)
- New: Fluid 5 quick-reference (strict types,
underscore-variable ban, CDATA preservation,
.fluid.html/.fluid.txtextensions, 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:setis 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— baselinetypo3/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\HashServicecallers 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.dbcurrently 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_ltswith the correct end dates - v12.x →
eol_imminent(2026-04-30)
- v14.0 / v14.1 / v14.2 →
- 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.
Part C — Recommended execution order
Week 1 (P1 — unblock everything else)
- typo3-conformance-skill — bake v14 into the scorecard (this repo, highest leverage; it grades the others).
- typo3-extension-upgrade-skill — ship an authoritative v13→v14 playbook (needed by every extension repo on the Netresearch radar).
- typo3-ddev-skill — wire v14 into Makefile/envrc so developers can actually spin up v14 environments.
Week 2 (P2 — operational) 4. typo3-project-upgrade-skill — add project-level v13→v14 migration guide. 5. typo3-testing-skill — update CI matrix + v14 test-double guidance. 6. typo3-typoscript-ref-skill — complete v13→v14 migration doc. 7. typo3-docs-skill — extend extraction patterns, add XLF 2-space rule. 8. typo3-version-tracker — reconcile version states. 9. support-typo3-14-{app,t3re} — verify container images meet v14.3 floors.
Week 3 (P3 — polish) 10. typo3-ckeditor5-skill — CKE 47 + dark-mode-default note. 11. typo3-core-contributions-skill — ddev/PHP alignment. 12. security-audit-skill — #109585, HMAC, HashService audits. 13. enterprise-readiness-skill — version matrix. 14. php-modernization-skill — PHP 8.5 examples. 15. agent-rules / skill-repo / automated-assessment — example spot-check.
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 main — engines
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.3 PHPUnit — ^11.2.5 || ^12.1.2 || ^13.0.2 via
testing-framework 9.5.0
Source: packagist.org/packages/typo3/testing-framework.json
— 9.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):
AddNewMethodHasSubmoduleOverviewInModuleInterfaceRectorChangeLocalizationSystemArchitectureRectorDropFifthParameterForExtensionUtilityConfigurePluginRectorExtendExtbaseValidatorsFromAbstractValidatorRectorIntroduceStrictTypingForCacheBeAndFeRectorMigrateAdminPanelDataProviderInterfaceRectorMigrateBooleanSortDirectionInFileListRectorMigrateButtonBarMenuAndMenuRegistryMakeMethodsToComponentFactoryRectorMigrateCopyRelatedDataHandlerPropertiesRectorMigrateCoreTcaAndUserSettingsShowitemStringsToShortFormReferencesRectorMigrateDataHandlerPropertiesUserIdAndAdminRectorMigrateEnvironmentGetComposerRootPathRectorMigrateFileCollectionRegistryAddTypeToTCARectorMigrateGeneralUtilityCreateVersionNumberedFilenameRectorMigrateIpAnonymizationTaskRectorMigrateLabelReferenceToDomainSyntaxRectorMigrateManualShortcutButtonCreationRectorMigrateObsoleteCharsetInSanitizeFileNameRectorMigratePassingAnArrayOfConfigurationValuesToExtbaseAttributesRectorMigratePathUtilityGetPublicResourceWebPathRectorMigrateRemovedMailMessageSendRectorMigrateSingleDataStructureConfigurationRectorMigrateSysRedirectDefaultTypeRectorMigrateTableGarbageCollectionTaskConfigurationViaGlobalsRectorMigrateUsageOfArrayInPasswordForAuthenticationInRedisCacheBackendRectorMoveSchedulerFrequencyOptionsToTCARectorMoveUpgradeWizardRelatedInterfacesAndAttributesToCoreRectorRemoveConcatenateAndCompressHandlerRectorRemoveEvalYearFlagRectorRemoveExternalOptionFromAssetRendererRectorRemoveFieldSearchConfigOptionsRectorRemoveHttpResponseCompressionRectorRemoveIsStaticControlOptionRectorRemoveMaxDBListItemsRectorRemovePageRendererMethodsRectorRemoveParameterInAuthenticationServiceRectorRemoveRandomSubpageOptionRectorRemoveRegistrationOfMetadataExtractorsRectorRemoveTcaControlOptionSearchFieldsRectorReplaceLocalizationParsersWithLoadersRequireComposerJsonInClassicModeRectorUsageOfValidationAttributesAtMethodLevelRectorUseRecordApiInListModuleRectorUseStrictTypesInExtbaseArgumentRectorUseStrictTypesInFluidViewHelpersRectorUseStrongerCryptographicAlgorithmForHMACRector
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:
- TYPO3 v14 LTS — The Next Generation (announcement)
- Changelog 14 index
- 14.0 · 14.1 · 14.2 · 14.3
- get.typo3.org/version/14 · 14.0.0 release notes
- Installation tutorial
- Maintenance release schedule
Key tickets:
- #105377 — Deprecated functionality removed (umbrella)
- #108148 — Fluid 5
- #107831 — TypoScriptFrontendController removed
- #107315 — Cache interfaces
- #106427 — FAL changes
- #107537 — System Resource API
- #107436 — Symfony Translation
- #107710 — XLIFF 2.x
- #109438 — ext_tables.php deprecated
- #109585 — Serialized credential data security fix
Third-party / ecosystem:
- TYPO3 Rector · Community Budget Report v14
- FriendsOfTYPO3 Content Blocks
- Testing Framework
- Site Sets (f7)
- Fluid 5 breaking changes (wwagner)
- PPW v14.3 overview
Local references available:
- TYPO3 Core source:
/home/sme/p/TYPO3CMS-Reference-CoreApi/.Build/vendor/typo3/cms-core/(contains fullDocumentation/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/