PLAY
VIDEO
READ TIME: 4
Article

Upgrading from Drupal 9 to Drupal 10: A Step-By-Step Guide

Author

/
Grant Claunch

TOPICS:

/Web / CMS / Replatforming
/Software & Product
/Agile & Delivery

Upgrading from Drupal 9 to Drupal 10: A Step-By-Step Guide

If you work with Drupal, you know it constantly evolves to meet the changing demands of modern web development and to remain one of the highest performing content management systems. These continual changes require upgrades to ensure security, performance, and compatibility with the latest technologies. 

After we recently upgraded from Drupal 9 to Drupal 10, we thought a step-by-step guide would help provide other devs and internal tech teams a better idea of what to expect and how to troubleshoot if something goes wrong.

Step 1: Evaluating Compatibility

Before initiating the upgrade, make sure you and your team have assessed your project's compatibility with Drupal 10. You can do this using the following commands:

composer why-not drupal/core 10.*composer update 'drupal/core-* --with-all-dependencies --dry-run'

These commands will provide insights into the reasons why the latest Drupal 10 version may not install and offer a preview of the changes without affecting your current setup.

Step 2: Upgrading Core, Modules, and Themes

Start by updating your project's Drupal Core to the latest version within the current major release and then update each module and theme to their respective Drupal 10 versions. If these versions are unavailable, seek alternatives, create patches, or explore contributed solutions to ensure compatibility. Then, address any requirements indicated in the why-not list during the update process. After updating the modules and installing the necessary requirements, be sure to verify the absence of available updates in /admin/reports/updates to confirm the successful completion of this step.

Step 3: Managing Deprecated Components

Drupal 10 deprecates several core modules and themes, and managing these are essential for a seamless transition. Some of these components include:

Deprecated Modules

• Aggregator
• CKEditor (consider migrating to CKEditor 5)
• Color
• HAL
• Quick Edit
• RDF

Deprecated Themes

• Bartik (consider utilizing the contributed project for Bartik)
• Classy (explore the provided alternative for Drupal 10)
• Seven (consider transitioning to Claro or Gin for administrative purposes)
• Stable (refer to the available project for Drupal 10)

Step 4: Updating Configuration Files

When you’re ready to update configuration files, you can streamline the process by making a few necessary adjustments. Delete the composer.lock file and the vendor folder from the project root. The system will automatically regenerate these files upon successful implementation.

Next, update all custom modules and themes in the  module_name.info.yml and theme_name.info.yml files to include the core_version_requirement: ^9 || ^10 directive. This step ensures compatibility with both Drupal 9 and 10.

Step 5: Composer Update and Dependency Resolution

You can use the below command to execute the following composer update command and install Drupal 10:

composer require drupal/core-recommended:10.1.5 drupal/core-composer-scaffold:10.1.5 drupal/core-project-message:10.1.5 --update-with-all-dependencies

The command might display dependency errors, as shown in the sample error list below:

Your requirements could not be resolved to an installable set of packages.
Problem 1

- symfony/process[v4.4.0-BETA1, ..., v4.4.10] require php ^7.1.3 -> your php version (8.1; overridden via config.platform, actual: 8.1.16) does not satisfy that requirement.- Root composer.json requires drupal/console-core ^1.9.8 -> satisfiable by drupal/console-core[1.9.8].- drupal/console-core 1.9.8 requires symfony/process ~3.0|^4.4 -> satisfiable by symfony/process[v3.0.0-BETA1, ..., 3.4.x-dev, v4.4.0-BETA1, ..., 4.4.x-dev].- You can only install one version of a package, so only one of these can be installed: symfony/process[v2.1.0, ..., 2.8.x-dev, v3.0.0-BETA1, ..., 3.4.x-dev, v4.0.0-BETA1, ..., 4.4.x-dev, v5.0.0-BETA1, ..., 5.4.x-dev, v6.0.0-BETA1, ..., 6.4.x-dev].- drupal/core-recommended 10.1.5 requires symfony/process ~v6.3.0 -> satisfiable by symfony/process[v6.3.0-BETA1, ..., 6.3.x-dev].- Root composer.json requires drupal/core-recommended 10.1.5 -> satisfiable by drupal/core- recommended[10.1.5].

It’s important to identify and resolve any dependency issues specific to your project—and you might consider removing conflicting packages or versions to meet the required dependencies for Drupal 10.

Step 6: Finalizing the Update

After resolving all dependency errors and completing the Composer update without any issues, you can confirm the successful transition by checking /admin/reports/updates in the Drupal Admin to confirm that your Drupal instance is up-to-date and fully compatible with Drupal 10.

And that’s it. Following these steps will help you seamlessly upgrade your Drupal 9 project to Drupal 10 so you can leverage better performance, security, and compatibility with the latest features and developments within the Drupal ecosystem. Looking for Drupal migration support? Contact us to learn more about what we offer and how our expert web developers can help.

How Brands Can Leverage AI to Enhance Customer Experience

Reframing the Web: Your Site Isn’t a Destination. It’s an Experience Platform.

Team Highlight: Cassie Tangney

Outlandish Optimism at PRPL | International Design Day 2025

Unlocking the Power of Content Organization: Insights for Museums and Beyond

Team Highlight: Jeff Katipunan

PRPL and Museums: A Partnership Built on Creativity and Impact

Team Highlight: Maria Szlosek

Team Highlight: Vic Cao

Team Highlight: Jenn Hunter

Driving Innovation in Design Management: Strategies for Fostering Creativity

Team Highlight: Anibal Cruz

Mastering Leadership with SLANT: A Principle for Effective Engagement By Bobby Jones

Breaking Boundaries With Augmented Reality

Navigating the Replatforming Process: A Comprehensive Guide for a Smooth Transition

Team Highlight: April Domingo

Team Highlight: Chris Sell

Agency Partnerships: What’s In It For You

Upgrading from Drupal 9 to Drupal 10: A Step-By-Step Guide

Team Highlight: Francesca Parker

Navigating the Replatforming Process: A Comprehensive Guide for a Smooth Transition

Purple, Rock, Scissors Wins Web3 Awards, Including Two Golds

Purple, Rock, Scissors Wins Six ADDY® Awards, including Best of Show

Transforming User Experience through Augmented Reality

Purple, Rock, Scissors Tops Orlando Business Journal's Book of Lists

Transforming the Patient Experience: Purple, Rock, Scissors' Collaborative Partnership With AdventHealth

State of the Art: How AI is Influencing Design

8 Ways to Increase Museum Visits with Digital Experiences

Functional vs. Class-Based React

10 Components Your Museum Website Needs to Succeed

Staff Augmentation: Utilizing Digital Creative Agencies for Your Business Needs

Technical Insights: Integrating Your Health App with Epic EHR/EMR Systems

Remote work? Hybrid ? We prefer flexible.

Optimization Primed: How AI is Making Businesses More Efficient

Fit to Print: How AI is Improving Business Writing

Best Museum Websites to Inspire Your Next Redesign

PRPL Summit Weekend

Cam's Tips for Working Remote

Google Update: Core Web Vitals

CX Essentials: What the Customer Experience Can Teach You About Being a Better Brand

PRPL Playlist: Creative as Folk

Google Update: Mobile-First-Indexing for the Whole Web, and What it Means for Your Website & Business

Student Design Society: Apply for Our Summer 2019 Internship

PRPL Playlist: Hits from the Crypt

PRPL Playlist: Back 2 School

PRPL Playlist: 1nn0vate

Scientific Storytelling at the Field Museum

What To Do When a Project Is on Hold

Hard Rock + PRPL

What Organization Means to a Creative Person

PRPL Playlist: Artificial Inchilligence

PRPL Playlist: BBQ Bangers

Vote PRPL in SXSW's PanelPicker!

A Comprehensive Beginner’s Guide to Automating with Ansible

Launched: Lux Capital

We've Moved to Medium!

Spotlight: Chris Reath

Content Before Design: The Fall of Lorem Ipsum

PRPL Playlist

3-Pointers: Project Manager Advice

Spotlight: Rad Kalaf

Launched: LMG

What the Internet's New TLS 1.2 Encryption Standards Mean for You. Yes, You.

Let’s Talk About SaaS, Baby.

NASA’s IDEAS Project Update: Phase 1

Thinking and Designing with Components

3-Pointers: Stellar Style Guides

Launched: Stetson University

Put on Those Beer Goggles!

Polymer Web Components Tutorial

Battle of the Jams

What’s My Title, Again? A Case for Generalists in the Web Industry

3-Pointers: Boost Tweet Engagement

Myers Briggs for Businesses

More iBeacons, Please!

Launched: 3Cinteractive

Spotlight: Katie Bartlett

Mo' Data, Less Problems: Finding Value in Big Data

What the Heck is an Agency Partner?

Briefs: Renee on Why Devs Are Cranky

How We Scrapped Time Sheets

5 Reasons Why the Office Phone is Dead

Launched: Adventist University of Health Sciences

Why Changing Careers is Like Changing Your Pants

How to Build an App Using Meteor JS

Spotlight: Adam Bullinger

Experimenting with Meteor Development

Webinar: A Field Guide to Interaction Design

Landed: NASA Partnership

Gifn: Rise of the GIF Photobooth

Briefs: Mike on Value-based Billing & Profit

iSummit Conference & Ticket Giveaway

Briefs: Adam & Renee on Magento

Chasing Perfect Weather with Mullen & CSX

Developing With Vagrant Flavors

Need Some Space? Book Ours.

Spotlight: Alex King

Designer Merch Collection

10 Reasons to Offer Flexible Work Hours

Google I/O Fanboy Duel

Close

TEAM MEMBER

ABOUT

Grant Claunch

ABOUT

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.