{"componentChunkName":"component---src-templates-post-jsx","path":"/en/getting-ready-for-drupal9","result":{"data":{"markdownRemark":{"html":"<p>As planned, June 3, 2020 is the official release date of the first stable version of Drupal 9, with support through November 2021.</p>\n<p>While the migration from Drupal 7 to Drupal 8 was very challenging for developers — since the CMS was essentially rebuilt to adopt the object-oriented paradigm using Symfony components — that will no longer be the case with Drupal 9, which follows the same logic as its predecessor.</p>\n<h3>What's new in Drupal 8.8</h3>\n<p>The minor updates to Drupal 8 Core have brought several improvements in content formatting and various backend APIs. Here are some highlights from version 8.8:</p>\n<ul>\n<li>The introduction of the Layout Builder module and improvements to media management (integration of media in WYSIWYG editors), giving users easier access to media within Drupal.</li>\n<li>A new experimental admin theme (Claro), which is responsive and part of the UX improvement initiative for the admin interface.</li>\n<li>Significant improvements to the JSON:API module in Core, particularly the addition of new cache layers that reduce API response time by reusing computed and cached results.</li>\n<li>jQuery is being progressively dropped from Drupal, with the CMS moving toward other JavaScript technologies to become more extensible and interactive.</li>\n</ul>\n<h3>What's new in Drupal 9?</h3>\n<p>As discussed above, Drupal has been introducing new features and improvements to Core via minor releases within the same major version. Drupal 9 will follow the same strategy.</p>\n<p>Even though the upgrade from Drupal 8.9 to Drupal 9 will be faster and more automated with Composer, you will still need to manually remove deprecated functions and APIs to ensure clean, compliant, and functional code in Drupal 9.</p>\n<p><strong>Note</strong>: It is recommended to use command-line tools that automatically detect the use of deprecated functions in your modules and themes, such as:</p>\n<ul>\n<li>The contrib module <a href=\"https://www.drupal.org/project/upgrade_status\">Upgrade Status</a></li>\n<li>The tool <a href=\"https://github.com/drupal8-rector/drupal8-rector\">Drupal 8 Rector</a> </li>\n<li>The tool <a href=\"https://github.com/mglaman/drupal-check\">Drupal-check</a> </li>\n</ul>\n<p>Also notable is the important shift to Symfony 4 and Twig 2.0 in version 9, which will make the CMS more powerful and performant.</p>\n<h3>Steps to upgrade from Drupal 8 to Drupal 9</h3>\n<ol>\n<li>\n<p>Ensure your project environment meets Drupal 9 prerequisites:</p>\n<ul>\n<li>Apache: at least version 2.4.7</li>\n<li>PHP: at least version 7.3</li>\n<li>MySQL: at least version 5.7.8</li>\n<li>Drupal 9 requires Drush version 10</li>\n</ul>\n</li>\n<li>It is recommended to upgrade to Drupal 8.9 before moving to Drupal 9.</li>\n<li>Update all contrib modules and themes used in the project before updating Core.</li>\n<li>Update custom modules to be compatible with Drupal 9: (moduleName.info.yml <code class=\"language-text\">core_version_requirement: ^8 || ^9</code>).</li>\n<li>Update custom module and theme code to comply with Drupal 9 (see <strong>Note</strong> above).</li>\n<li>Run the upgrade with Composer: <code class=\"language-text\">composer update drupal/core --with-dependencies</code> (<a href=\"https://www.drupal.org/docs/8/update/update-core-via-composer#s-stepwise-update-instructions\">see detailed guide on drupal.org</a>).</li>\n<li>Run update.php.</li>\n</ol>\n<h3>Conclusion</h3>\n<p>As we have seen, there are not many steps required to prepare your site for Drupal 9, and the good news is that you can start now and be ready on the day Drupal 9 is released 😉.</p>","excerpt":"As planned, June 3, 2020 is the official release date of the first stable version of Drupal 9, with support through November 2021. While the migration from…","frontmatter":{"date":"2020-04-04","metaDate":"2020-04-04","title":"Getting Ready for Drupal 9","tags":["Drupal 8","Drupal 9","Performance","Update"],"path":"/getting-ready-for-drupal9","cover":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAF/zF2uAAAACXBIWXMAAAPoAAAD6AG1e1JrAAABMUlEQVQoz2NQzLr9XyHz1n9FIGZQyb79HyTAABP1qHvwv2TWu//yIFmQEsUsiFIloAJFmGBAy2OwQN70t1BBqKxM+q3/6ZNf/Q9sfPgfZLZ7w5P/jrWP/yvCdUMZIKwMVKAEtVc2A4jTIWJwa5DthWGQw5SyEWIMMEXmZff+R3Y++29b+QBsXRbQGSBTURSCJPQL7/z3bnj437j47n+D4vv/I5oe/FfLu4OmEKpYGRpAIL5k6k24+zA8owh1lwISWxnKh2E5oHPUcu/AaWS9GAaC/CSVdvO/a92j/xNWf/2fPfHF//DG+/+9m56A5WyrH/3Pn/bqv0Ph9f95U1//1y64918+A4+BMCybeu2/ROKV/5IgnHT1v0zKNaCBkJA1Lrn/P6Dt2X+j0gdgPrJ3QRgA4I9XqRfIyH4AAAAASUVORK5CYII=","aspectRatio":2.742289239204935,"src":"/static/9bed7a56b0a46093651316c80acd9400/076bb/drupal8-9.png","srcSet":"/static/9bed7a56b0a46093651316c80acd9400/4f634/drupal8-9.png 480w,\n/static/9bed7a56b0a46093651316c80acd9400/3dcd6/drupal8-9.png 960w,\n/static/9bed7a56b0a46093651316c80acd9400/076bb/drupal8-9.png 1920w,\n/static/9bed7a56b0a46093651316c80acd9400/d9d02/drupal8-9.png 2880w,\n/static/9bed7a56b0a46093651316c80acd9400/a4d5f/drupal8-9.png 3840w,\n/static/9bed7a56b0a46093651316c80acd9400/66217/drupal8-9.png 4001w","srcWebp":"/static/9bed7a56b0a46093651316c80acd9400/d1a9d/drupal8-9.webp","srcSetWebp":"/static/9bed7a56b0a46093651316c80acd9400/bc3bf/drupal8-9.webp 480w,\n/static/9bed7a56b0a46093651316c80acd9400/39337/drupal8-9.webp 960w,\n/static/9bed7a56b0a46093651316c80acd9400/d1a9d/drupal8-9.webp 1920w,\n/static/9bed7a56b0a46093651316c80acd9400/fcbe1/drupal8-9.webp 2880w,\n/static/9bed7a56b0a46093651316c80acd9400/c136d/drupal8-9.webp 3840w,\n/static/9bed7a56b0a46093651316c80acd9400/10200/drupal8-9.webp 4001w","sizes":"(max-width: 1920px) 100vw, 1920px"},"resize":{"src":"/static/9bed7a56b0a46093651316c80acd9400/d8210/drupal8-9.png"}}}}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"pathSlug":"/getting-ready-for-drupal9","locale":"en","prev":{"fields":{"locale":"en"},"frontmatter":{"path":"/drupal-behaviors","title":"Drupal Behaviors","tags":["jQuery","JavaScript","Module development","Performance","Ajax"]}},"next":{"fields":{"locale":"en"},"frontmatter":{"path":"/config-api-vs-state-api","title":"Configuration API vs State API","tags":["Drupal 8","Drupal 9","Backend","Configuration","State"]}}}}}