From Volto 17 to 19: Upgrading Plone at the European Environment Agency
The European Environment Agency has run on Plone for 20 years and on Volto since 2019. Today the EEA website depends on 64 Volto add-ons, more than one thousand GitHub repositories, and a CI/CD pipeline spanning Jenkins, Docker Hub, and Rancher. Last year the site was still on Volto 17. Now we're targeting Volto 19 and the jump is not small.
Details
Volto 19 drops yarn entirely, forks razzle and babel into @plone-scoped packages, replaces Jest with Vitest, upgrades superagent from 3 to 10, swaps react-dnd for dnd-kit, removes language settings from config, and introduces pnpm 10 with workspace support. For a project with one addon, that's a weekend. For 64 addons that must work on both Volto 18 and 19 simultaneously during the transition, it's an engineering project.
This talk walks through the full migration: why we chose to regenerate the project from cookieplone rather than incrementally patch it, how we approached dual-version compatibility so 64 addons run on both Volto 18 and 19 during the transition, and how we created reusable EEA cookieplone templates so other projects can follow the same path. We cover the addon breaking changes and their fixes, the build and CI/CD pipeline migration, and the coordinated backend upgrade from Plone 6.1 to 6.2.
You'll leave with reusable patterns for dual-version addon compatibility, a Cookieplone template approach you can adapt for your own organization, and concrete lessons from upgrading one of the largest Plone deployments in Europe.
