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.
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.
Readers’ Forum
No contributions yet — open the debate.
Open the discussion
No account or password needed — just enter your e-mail and we’ll send you a one-time sign-in link. First time here? You’re set up automatically.
Your rating will be applied automatically after you sign in.
Check your inbox
We’ve sent a sign-in link to …. Open it on this device — this tab will sign you in automatically.
Nothing arrived? Check your spam folder — and mark the mail as "Not spam" so it lands in your inbox next time.