Building CiviCRM Drupal 12 Support Before Day One

Publicat
2026-05-13 09:47
Written by
jackrabbithanna - member of the CiviCRM community - view blog guidelines

Tis the season to think about Drupal upgrades, and this year we prepare for Drupal 12 and upgrades to Drupal 11. Drupal 12 is scheduled to be released in the fall of 2026 and when it is released, Drupal 10 will be deprecated and will no longer receive security updates. Beyond receiving continued security updates, upgrading to Drupal 11 is advantageous as the performance increases are dramatic. Drupal 12 continues this trend.

In advance of Drupal 12’s release, we are planning for CiviCRM and most ecosystem modules to support Drupal 12 on the day it is released. Work has already begun on this initiative and in this article I will describe that work and how developers and organizations can get involved and test the integration.

To assist in this collaboration, I’ve created a public Drupal 12 and CiviCRM composer template. This template uses composer to pull down the tip of the “main” branch in the Drupal Core repository that will be named “12.x” in the future. Additionally, it pulls in the CiviCRM Core master branch so we can develop and test against the latest CiviCRM code. We've contributed a MR to the composer-compile-lib, which has been merged and supports Drupal 12. The CiviCRM Extension Plugin we maintain has updates to support Drupal 12 as well.  Many modules that we maintain including CiviCRM Entity, CiviCRM Drush, CiviCRM Form Builder Blocks, and CiviCRM Reroute Mail have Drupal 12 versions or forks provided. As we merge further updates to these modules we will pull from the official versions. So the good news is we are well on our way as a community to support and use Drupal 12 on day one!

In the context of CiviCRM Core, the biggest needs are to support Symfony 8.0+ and PHP 8.5, and much work is already committed to the main repository to do so. We’ve contributed 35569, 35570, and 35571 to address some Symfony related issues we encountered initially. Numerous contributors have been working on PHP 8.5 compatibility over the last months.

The majority of the work for any Drupal module to be upgraded from Drupal 10/11 to Drupal 12 support is removal of any objects, methods, or functions in the Drupal 12 API that have been deprecated in Drupal 10/11 and removed in Drupal 12. Typically, we scan the module codebases with a tool like drupal-check with the deprecations flag and fix those issues which it outputs.

Beyond what must be done, we consider what can and should be done. Drupal’s architecture continues to improve and new methodologies have been integrated in recent versions. For example, procedural hooks are deprecated and developers are encouraged to use object-oriented implementations. Benefits of this organizational structure include performance enhancements, as Drupal will not be required to scan the file system nearly as much. Additionally, plugins should use PHP Attributes instead of annotations. These are only two of many changes documented in Drupal change records.

The official Drupal integration module will require some updates, and we have contributed a work in progress MR 126 to use in the composer template, and to initiate discussion. I look forward to that discussion and collaboration at CiviCamp 2026 Toronto. It is possible that a new repository may be required for Drupal 12+ and I look forward to engaging with the community to work out the final form.

If you have feedback and ideas, or questions about your CiviCRM / Drupal system, drop us a line at info@skvare.com or here.

Usage of the Drupal 12 CiviCRM Composer template

Clone or fork and clone this repository: https://github.com/jackrabbithanna/drupal12-civicrm-proto

Using PHP 8.5, run composer install

I’m updating the packages pulled in by composer roughly weekly, but to make sure you have the latest, run “composer update --with-all-dependences”

Setup within your hosting environment as you normally do a Drupal site.

Install Drupal per normal, and enable the “CiviCRM” module to get started.

If you are an open-source developer looking for assistance ping @jackrabbithanna in the Drupal channel of https://chat.civicrm.org

CiviCRM Entity

CiviCRM Entity is a popular Drupal integration module which provides Views integration among other features by integrating CiviCRM APIs as Drupal entity types. In the template above we’re currently using a temporary fork, but the changes needed for Drupal 12 will be tested and merged soon as an official release of the 4.0.x branch, or provided as a new 5.0.0 release. CiviCRM Entity will be ready on day one of Drupal 12’s release.

CiviCRM Drush

CiviCRM Drush provides Drush integration for upgrading, executing scheduled jobs, or executing API calls on the command line. It is commonly used to trigger scheduled jobs via a server’s crontab. We’ve prepared a 5.0.0-alpha2 release which supports Drupal 12 and Drush 14. We will continue to update this module as necessary as Drupal and Drush approach an official release. 

CiviCRM Form Builder Blocks

CiviCRM Form Builder Blocks allows Drupal administrators to place CiviCRM Form Builder forms on any page or set of pages via Drupal’s block layout structure. We’ve updated the “dev” version of the 1.0.x branch to support Drupal 12, and we anticipate an official release as we get closer to Drupal 12’s official release.

CiviCRM Reroute Mail

CiviCRM Reroute Mail is a simple module that will reroute any email sent from CiviCRM to a configurable email address. This is typically used when testing websites or in development environments. The 1.0.x dev branch is updated for Drupal 12 and a Drupal 12 supported release is imminent. 

Webform CiviCRM

I can provide installation potential with patches through the Drupal lenient composer plugin for Webform and Webform CiviCRM in this composer template or CiviCRM mattermost if official Drupal 12 versions are not available through coordination with those modules’ maintainers by day one.