€0.00 — free as in speechtonight's forecast: clear skies over production Cache: warm · Deploys: fair, 0% rollbacks expectedset by moonlight, shipped before dawn · deploy freely Page A2

The Daily Commit The Nightly Build

Dev news, typeset daily — PHP · AI · The Wider Stack

The developer's evening paper — PHP · AI · The Wider Stack

Thursday, August 20, 2026 Vol. I — No. 373 · Morning editionLate edition EN DE FR ES

PHP · Releases

Symfony 8 Drops XML Configuration, YAML Stays the Default

Symfony 8.0, released November 27, 2025, removes the XML configuration loader for services and routes entirely.

curated by Sönke

YAML remains supported and gains JSON schema tooling, while a new array-based PHP format replaces the deprecated fluent config builders.

Symfony 8.0 shipped on November 27, 2025, alongside the 7.4 LTS release. Both share the same codebase, but 8.0 removes every feature deprecated in 7.4. The most visible removal is the XML configuration format.

The XmlFileLoader, which read services.xml in the DependencyInjection component and routes.xml in the Routing component, was deprecated on October 17, 2025 via pull request #60568 by Mathieu Lechat. Symfony 8.0, which requires PHP 8.4, deletes the loader from both components. Applications and bundles still shipping XML config stop loading immediately.

YAML is unaffected. The Symfony team confirmed no YAML deprecation is planned, and it stays the default for new projects and Flex recipes. Symfony 7.4 also added JSON schema support for services, routes, validation, and serialization files, so editors like PhpStorm now offer autocompletion and validation in YAML through a schema comment.

The fluent PHP config builders introduced in Symfony 5.3 were deprecated in 7.4 as well. Nicolas Grekas explained that the fluent classes enforce a single canonical shape per config tree, which blocks automatic recipe updates. The replacement is a plain array format wrapped in App::config(), with Routes::config() for routing, including environment blocks like when@dev. These arrays carry array shape metadata readable by PHPStan, Psalm, and PhpStorm.

Symfony generates the shapes into config/reference.php, which teams commit and can autoload via a composer.json classmap entry. Blog comments noted two issues: noisy diffs in pull requests whenever dependencies change, and at least one case where a glob pattern like **/*.graphql broke the generated syntax.

Symfony itself says the array format is not yet the recommended one. Static analyzer support for complex array shapes is incomplete, and Symfony Flex only writes YAML recipes today. The advice is to adopt the format file by file.

The suggested migration path: inventory XML files in your codebase, upgrade to 7.4 first and enable deprecation logging via symfony/phpunit-bridge, convert services.xml and routes.xml to YAML, write new config in the array format without rewriting stable files, then move to 8.0 once the deprecation log stays clean.

Third-party bundles are the bigger risk, since XML was the officially recommended format for bundle authors for years. A bundle shipping Resources/config/services.xml fails to boot on 8.0. Options: wait for a compatible release, use the community tool at github.com/GromNaN/symfony-config-xml-to-php and submit a pull request, fork the bundle, or stay on 7.4 LTS with its four years of security support. Testing on a separate branch with composer.json bumped to ^8.0 reveals exactly which dependencies block the upgrade.

Read the original source ↗

Rate this article: 0

Readers’ Forum

No contributions yet — open the debate.

The Daily CommitThe Nightly Build — Page A1