Symfony UX 3.7 adds a Node-free CSS function to Twig
UX CSS compiles design tokens straight to class names, validated at compile time. LiveComponent updates also cut dashboard render times by up to 46% in the project's own benchmarks.
Symfony shipped UX 3.7 on 5 November, merging more than 100 pull requests since 3.6. The headline feature is UX CSS, an experimental package that adds a css() function to Twig: pass it style properties or design tokens and it returns class names, checked at compile time so a bad value fails lint:twig in CI or cache:clear in production rather than surfacing as a runtime bug. It runs entirely in PHP, no Node.js involved, and works alongside AssetMapper, Symfony Reprise or Webpack Encore.
UX Image adds two self-hosted bridges, Imagor and IPX (the latter built on sharp), next to the existing Cloudflare, Cloudinary, imgix and KeyCDN options. LiveComponent itself only got bug fixes this release, 13 of them, but Symfony’s own benchmarks on PHP 8.4 and Twig 3.30 show the gains adding up: a 100-row dashboard render dropped by 18%, and ticking three rows in that table fell by 46%.
Why it matters: the LiveComponent speedups apply on upgrade alone, no code changes needed, which matters if you’re running component-heavy admin screens. UX CSS is a real option if you want design-token-driven styling without adding a Node build step to a PHP-only project.
The caveat: UX CSS and UX Image are both still marked experimental, so their APIs can still change before they stabilise.