Still on Drupal 7? Security support for Drupal 7 ended on 5 January 2025. Please visit our Drupal 7 End of Life resources page to review all of your options.Install
To start a new Drupal project with version 11.0.0:To update your site and all dependencies to the latest version of Drupal:
To update your site to this specific release:
Using Composer to manage Drupal site dependencies
Downloads
Release notes
This is the first supported release of the new Drupal 11 major version, and it is ready for use on production sites! Learn more about Drupal 11 and the Drupal core release cycles.
Learn more about Drupal 11.0.0
Drupal 11.0.0 follows shortly after the Drupal 10.3.0 release. Drupal 10.3 has most of the new functionality that Drupal 11 does, but retains backwards compatibility layers added through Drupal 10.3.0's release. Sites must update to Drupal 10.3 before updating to Drupal 11.
If you are starting a new Drupal project, you have a choice between Drupal 10.3 and 11, and generally should choose Drupal 11 where possible for forward compatibility with future releases.
Regardless of which version you choose now, new features will only be added to Drupal 11 minor releases. Plan to adopt Drupal 11 so that you can easily update to Drupal 11.1 and later.
Refer to the guide Upgrading Drupal for how to perform a major version upgrade. Preparing your site for an upgrade describes tools you can use to check the Drupal 11 compatibility of modules, themes, and sites.
Both 11.0.0 and 10.3.2 (the latest Drupal 10 release) include all the latest improvements, and they have the same public APIs and features aside from a few edge-cases. This also means modules and themes can be compatible with Drupal 10 and 11 at the same time! The key changes in 11.0.0 are:
- Deprecated code, including entire modules and themes, has been removed.
- Dependencies have been updated to new major versions as appropriate.
- Platform requirements (including supported PHP and database versions, Composer requirements, and supported browsers) have been updated.
For all other changes, refer to the 10.3.x branch.
Important update information
Sites must update to the latest release of 10.3 before upgrading to Drupal 11
Drupal sites running 10.2 or earlier versions must first update to 10.3.0 or later before updating to Drupal 11. All core updates added before 10.3.0 have been removed. In general, sites should update core and contributed modules to the most recent releases available for their current major core version, before updating to the next major release.
A new API has been added to support backports of database updates across major and minor versions. This primarily affects core development, but might also be needed for contributed projects (since core will support two major versions simultaneously going forward).
Changes to site-owner-managed files
-
The default
.htaccessfile has changed to remove support for the Statistics module, which has been moved to a contributed module. The contributed project now provides its own htaccess protection. Sites should ensure that the redundant .htaccess rule is removed from their own copy of the file.
Platform requirements changes
PHP requirements
-
Drupal 11 requires PHP 8.3 with the zlib extension enabled. Most systems will already have this extension enabled by default.
Database requirements
The requirements for the database drivers supported by Drupal 11 are:
- The MySQL database driver requires MySQL 8.0.
- The MariaDB database driver requires MariaDB 10.6.
- The PostgreSQL database driver requires PostgreSQL 16.
- The SQLite database driver requires SQLite 3.45 with the json1 extension.
Web server
Support for IIS is removed. Sites using IIS are encouraged to change to a supported web server. Drupal 11 does not provide a web.config file. We encourage bug reports for issues that may affect web servers other than IIS.
Browser support changes
See the browser support policy for more information.
Removed functionality
The following pages have been removed without replacement:
- The "Add new module" page at
/admin/modules/install - The "Add new theme" page at
/admin/theme/install - The "Add new module or theme" page at
/admin/reports/updates/install
Using Composer is the only way to safely and correctly add new code to a Drupal installation. See the Additional information, deprecations, and API changes for installing an extension through the user interface.
Multiple core modules have been removed from core and moved to contributed projects
Numerous modules and themes have been removed from Drupal core and moved to contributed projects. In many cases, the removed extensions have little to no impact on site development.
Sites should check their installed modules against the following list, and either uninstall the module or require the contributed version prior to upgrading to Drupal 11. If a removed module is required for a site's functionality, the contributed version should be downloaded to the codebase or added to the Composer requirements prior to upgrading. Do not uninstall the module, since this would destroy the module configuration.
Drush may bypass warning and error messages on update.php related to missing modules or themes. The status report will display errors about missing modules after upgrading.
Backend (PHP) dependency changes
Added PHP dependencies
-
A dependency on doctrine/lexer 2.0 is added. Previously, the dependency was implied as a dependency of
doctrine/annotations. -
A Composer dependency on
ext-zlibhas been added. (This PHP extension was already a required part of Drupal's PHP configuration, but previously, the dependency was not correctly declared.)
Updated PHP dependencies
-
Symfony has been upgraded to 7.1.1.
-
Doctrine Annotations has been updated from 1.14.3 to 2.0.1.
-
PHPUnit has been upgraded from 9.5 to 10.5. Test developers should refer to the changes required for PHPUnit 10 compatibility for a summary of the breaking changes and details of how to update their tests for PHPUnit 10.
-
Drupal core's Composer development dependency has been updated to Composer 2.7.7, which addresses security vulnerabilities. It is recommended that Drupal site owners also update their local Composer versions with
composer self-update. -
Numerous other dependencies have received minor- and patch-level updates to the latest versions.
-
Twig has been upgraded from 3.5.0 to 3.9.3. If you have custom code that extends Twig, you should read the Twig v3.9.0 changelog as there are new deprecations.
Frontend (CSS and JavaScript) dependency changes
Removed frontend dependencies
-
Shepherd.js has been removed as a dependency. The Shepherd library was only used by the Tour module, which has been removed from core.
-
jQuery Form is removed as an external dependency. jQuery Form is now forked into core because it is abandoned upstream. It is tagged
@internaland should not be used directly by contributed or custom modules.
Updated frontend dependencies
-
CKEditor has been updated to CKEditor 5 v42.0.2. If you are updating from 10.2.x or earlier and have the CKEditor font module installed, or another CKEditor extension that has been disrupted by this update, consider switching to CKEditor5 Plugin pack. The CKEditor5 Plugin pack provides a more up-to-date version of the plugin for compatibility with the CKEditor version shipped with Drupal core.
-
jQuery 4 is updated to 4.0.0-beta2. If you have custom code that extends jQuery, you should read the change logs as there are deprecations.
Drupal 11 will be updated to a stable version of jQuery 4.0.0 once it is available.
-
jQuery UI is updated to 1.14-beta.2. Sites or modules with custom JavaScript code should review the jQuery UI 1.14 upgrade guide and the change logs:
Drupal 11 will be updated to a stable version of jQuery UI 1.14.0 once it is available.
-
Yarn 4 and Corepack are now required for Drupal core development. Core developers will need to update their environment to use Yarn 4 and corepack.
Known issues
PHP 8.4 compatibility for Drupal 10 and 11 remains under development. 11.1 (or possibly a patch release of 11.0) will provide full compatibility with PHP 8.4.
Search the issue queue for known issues.
All changes since 11.0.0-rc1
- Issue #3465360 by catch, benjifisher, tobybellwood: drush updb errors on System and Layout Builder modules when going 10.3.1 to 11.0.0.-rc1
- Issue #3465122 by catch, xjm, Spokje: Update composer dependencies prior to 11.0.0
- Revert "Issue #3465122 by catch, Spokje: Update composer dependencies prior to 11.0.0"
- Issue #3458177 by mondrake, catch, godotislate, longwave, xjm: Changing plugins from annotations to attributes in contrib leads to error if plugin extends from a missing dependency
- Issue #3465166 by Spokje, nod_: Update JavaScript dependencies for Drupal 11.0.0
- Issue #3465122 by catch, Spokje: Update composer dependencies prior to 11.0.0
- Back to dev.
- Drupal 11.0.0-rc1
- Issue #3462763 by catch, bbrala, andypost, alexpott: Use artifacts to share the phpstan result and cspell caches from core to MRs (follow-up, job token is unnecessary.
- Issue #3464978 by mondrake: Make PHPStan rule testing use PHPUnit 10
- Issue #3462763 by catch, bbrala, andypost, alexpott: Use artifacts to share the phpstan result and cspell caches from core to MRs (follow-up: also run on daily scheduled tests)
- Issue #3363127 by nod_, Gábor Hojtsy, mherchel: Drupal Displace outputs invalid value for --drupal-displace-offset-right when opening top dialog
- Issue #3462763 follow-up by alexpott: Use artifacts to share the phpstan result and cspell caches from core to MRs
- Issue #3462763 by catch, bbrala, andypost: Use artifacts to share the phpstan result and cspell caches from core to MRs
- Issue #3463456 by catch, smustgrave: Consolidate ckeditor5's FunctionalJavascript tests
- Issue #3464581 by quietone, smustgrave: Update deprecation notices in ajax.js
- Issue #637538 by pooja_sharma, mr.baileys, AaronBauman, Bhanu951, alexpott, rteijeiro, greggles, pwolanin, meba, Nikhil_110, smustgrave, quietone, casey, naveenvalecha, sime, humansky, dawehner: Module and theme names are not filtered on output
- Issue #3462561 by catch, smustgrave: Stop using a data provider in UserPasswordResetTest
- Issue #3439836 by pooja_sharma, thebumik, FeyP, vensires, smustgrave, kim.pepper, quietone: Fix File tests that rely on UID1's super user behavior
- Issue #2360647 by quietone, alexpott, Manuel Garcia, jhodgdon: Documentation in ConfigDependencyManager conflates plugin dependencies and config dependencies
- Issue #3457009 by ankitv18, quietone, joachim: Add input string to exception message thrown in createConnectionOptionsFromUrl()
- Issue #3460654 by pooja_sharma, FeyP, catch: Merge test methods in FieldUIRouteTest for better performance
- Issue #3236269 by mandclu, quietone, heni_deepak, eojthebrave: Render API overview should include a link to the list of elements
- Issue #3314260 by quietone, avpaderno, rakesh.drupal, ravi.shankar, chaitanyadessai, smustgrave, catch, Spokje: Replace t() calls inside of Controllers that do not use StringTranslationTrait
- Issue #3460598 by catch, m4olivei, penyaskito, finnsky: Single directory component CSS asset library not picked up in admin theme immediately after module install without cache clear
- Issue #3439835 by pooja_sharma, thebumik, FeyP, smustgrave, vensires: Fix Field UI tests that rely on UID1's super user behavior
- Issue #3458975 by longwave, quietone: GenerateThemeTest::testContribStarterkitDevSnapshotWithGitNotInstalled fails on sqlite
- Issue #3463594 by alexpott: ImageAdminStylesTest::testAjaxEnabledEffectForm() fails because statusMessageExists() does not wait
- Issue #3142928 by ivnish, neclimdul, Wiktor7, mitrpaka, Chi, keha3912, smustgrave, andypost, catch: Status report wrongly warns of APCu memory limit when admin language is not English
- Issue #3463479 by catch, Spokje, larowlan: Merge the build and lint stages in core MR pipelines
- Issue #3463548 by catch, smustgrave: Consolidate methods on FormElementsLabelsTest
- Issue #3464020 by Spokje, catch, longwave: Update to ckeditor 42.0.2
- Issue #3462098 by Prem Suthar, joachim, quietone: hook_local_tasks_alter() and hook_menu_local_tasks_alter() need mutual @see links
- Issue #3462549 by catch, ankitv18: Optimize TelephoneFieldTest
- Issue #3119513 by Prem Suthar, imclean, smustgrave: Parameters doc for views "row" should be at the top level of the array
- Issue #3463569 by alexpott, catch: ToolbarStoredStateTest needs wait after resizing window
- Issue #3460257 by Grimreaper, smustgrave, quietone: Have a dedicated category for blocks provided by the Navigation module
- Issue #3463544 by catch: Three more slow functional tests
- Issue #3463288 by catch: Consolidate test methods in StandardPerformanceTest
- Issue #3463329 by alexpott: \Drupal\Core\Extension\ExtensionDiscovery::PHP_FUNCTION_PATTERN is out-of-date
- Issue #3191559 by longwave, Spokje, smustgrave, jhodgdon: [random test failure] Random test fail in EntityReferenceWidgetTest
- Issue #3305609 by pooja_sharma, joachim: convert TermTest::testParentHandlerSettings() into a kernel test
- Issue #3451611 by mfb, xjm, smustgrave, quietone: Fix the format=flowed; delsp=yes encoding of email messages
- Issue #3462759 by catch: Try to rebalance kernel tests between gitlab runners (@group #slow again)
- Issue #3417136 by dww, quietone, longwave, catch, xjm, lostcarpark, andypost, phenaproxima: Remove adding an extension via a URL
- Issue #3462383 by phenaproxima, catch, alexpott, longwave: CoreRecipesTest is slow
- Issue #3454196 by james.williams, longwave: Filter placeholders without arguments are not replaced when HTML corrector filter applied afterwards
- Issue #3392572 by benjifisher, Liam Morland, ricovandevin, Anybody, smustgrave, quietone, sabrina.liman, carolpettirossi, longwave, alexpott: Add missing category to Drupal\layout_builder\Plugin\Layout\BlankLayout and let modules and themes alter the list of layouts
- Issue #3306434 by benjifisher, quietone, Berdir, kopeboy, DYdave, larowlan: Fix access checks for bundle permissions to avoid triggering a config validation error
- Issue #3440848 by mondrake, quietone, daffie: Ensure post transaction callbacks are only at the end of the root Drupal transaction
- Issue #3163127 by scott_euser, Gauravvvv, sd9121, djsagar, ranjith_kumar_k_u, AkshayAdhav, _utsavsharma, sarvjeetsingh, komalk, Nitin shrivastava, ameymudras, pradhumanjain2311, boulaffasae, kostyashupenko, bnjmnm, meena.bisht, ambuj_gupta, sonam.chaturvedi, Sakthivel M, Utkarsh_33, KondratievaS, ressa: Autocomplete input text can visibly overflow under magnifier icon
- Issue #3462338 by Jaydeep_patel, bhaveshdas, quietone: Spacing issue in Home > Search page on Advanced search section
- Issue #3458714 by simohell, shivam_tiwari, amanire, smustgrave: Long string breaks the layout of Claro (reapply fix)
- Issue #3462556 by catch: Consolidate two test methods in NumberFieldTest
- Issue #3462529 by catch: Mark more tests with @group #slow and remove it from some others
- Issue #3393441 by markconroy, Gauravvvv, smustgrave, gordon: Stable 9 is trying to override non-existing css files
- Issue #3461421 by VinmayiSwamy, ankitv18, joachim, smustgrave: getProcessPlugins() normalises the process array twice
- Issue #3460921 by quietone: Fix hook_update_N docs for display of code block, remove unnecessary @see
- Issue #2719657 by quietone, andypost, Mile23, Spokje, ilya.no, xjm, alexpott, smustgrave: Fix 'Drupal.Commenting.InlineComment.NotCapital' coding standard
- Issue #3460513 by nishtha.pradhan, Berdir: Avoid TypeError if config entity dependencies are NULL
- Issue #3376516 by andypost, quietone: Remove check for 10200 update from help module
- Issue #3462339 by longwave: Update to jQuery 4.0.0-beta2
- Issue #3462264 by alexpott: Skip unsupported methods in rest/jsonapi tests in an efficient way
- Issue #3461284 by mherchel, finnsky, quietone, nod_: Prevent simultaneous open/close on simultaneous click/hover
- Issue #3454603 by phenaproxima, thejimbirch, Prashant.c, alexpott: Many core recipes are not idempotent
- Issue #3461945 by mstrelan, bbrala: Fix instances of floats passed to functions expecting ints
- Issue #3458782 by catch, ankitv18, longwave, smustgrave: Remove documentation for readmore, logged_in and is_admin from node.html.twig
- Issue #3459754 by mondrake: Method getMockForAbstractClass() of class PHPUnit\Framework\TestCase is deprecated in PHPUnit 10 - replace in class NormalizerBaseTest
- Issue #3368071 by tstoeckler, longwave: Installing Content Translation module breaks Rest resources
- Issue #3459240 by jurgenhaas, b_sharpe, longwave, quietone: Deprecation message for user_validate_name points to an invalid replacement
- Issue #1650198 by apaderno, quietone, jhodgdon, smustgrave: Remove references to node_edit in FormBuilderInterface
- Issue #3458966 by apaderno, smustgrave: Correct the punctuation on the description for \Drupal\Tests\UnitTestCase
- Issue #3460246 by Prem Suthar, joachim, afeijo: incorrect docs in DateFormatter::format()
- Issue #3376942 by fromme, Kingdutch, smustgrave: Replace usage of generateString with generate in Media module
- Issue #3313449 by JeffMattson, joachim: QueueWorkerInterface is missing docs for DelayedRequeueException
- Issue #3459747 by quietone, smustgrave: Fix 12 words in tests