Drupal uses a lot of Symfony code; Symfony is a crucial Drupal dependency. Symfony Drupal 9 support ended November 1st, 2023, when Symfony 4 reached its end of life.
Drupal 10 was released December 15th, 2022.
Since then, many (but not all) contributed modules have released Drupal 10 compatible versions. This past year we have updated a fair number of Drupal 9 sites to 10, including some sites that started their lives on Drupal 7 (which we migrated to Drupal 8 and later updated to Drupal 9). That being said, there are still some contributed modules that don’t have Drupal 10 versions, or that have ‘release candidate’ / “rc”, beta, alpha, or dev versions (often requiring manual patching). We can help you update your sites to Drupal 10; reach out if you’d like our help on that.
Below are some more technical details of things you might run into trying to update from Drupal 9 to 10:
If you’re needing to update to Drupal 10 ASAP but are being held back by modules that aren’t yet Drupal 10 compatible, consider whether you can uninstall and remove any of those modules. Maybe you don’t absolutely need those, or maybe you can do without them for a while. For the ones you absolutely need, you will need to update them (ideally) to module versions that support both Drupal 9 and 10. That isn’t always possible; some modules’ Drupal 10 versions do not support Drupal 9. In such cases there is a handy Composer trick (for developers) to require one of several versions. let’s imagine a Drupal module named some_module with a D9 version 1.x and a D10 version 2.x. In this case it would require editing composer.json manually and adjusting the module line in the “require” code section as follows:
“drupal/some_module”: “^1 || ^2”
After that, depending on your setup, you may need to delete the module folder and run “composer install” from whichever folder contains your composer.json file.
Why use the above trick? If you don’t, updating to Drupal 10 will be harder, and will require manually changing the module version number *at the same time you update your site to Drupal 10*, making your update that much harder. It’s easier to update the modules to compatible versions first, and update Drupal core last. Speaking of which, you can use the handy Upgrade Status module to monitor your site’s readiness for the next major Drupal version.
Our policy for production sites has been to only update to proper numbered release versions and avoid pushing “rc” / beta / alpha / dev versions live. There have been exceptions, for example when a module release many iterations of beta versions and those get very good test coverage / developer eyeballs, and it’s obviously going to take a long time for a full release. In such cases I feel better about using it in production, but it’s still not something I prefer to do.
Feel free to reach out if you get stuck or need help. We have managed Drupal sites since the Drupal 6 days and can help get you updated to the next version.