Get expert Drupal 8 advice. Thanks to the hard work of the Drupal community, D8 features improved frontend and backend experiences and more. Checkout this guide to see what's new in D8
This is a beta release for the next feature release of Drupal 8. Betas are good testing targets for developers and site builders who are comfortable reporting (and where possible, fixing) their own bugs. Beta releases are not recommended for non-technical users, nor for production websites. More information on beta releases.
This minor release provides new improvements and functionality without breaking backward compatibility (BC) for public APIs. There may be changes in internal APIs and experimental modules that require updates to contributed and custom modules and themes per Drupal core's backwards compatibility and experimental module policies.
For a full list of other API and feature additions included in the 8.3.0 beta compared to 8.2.x, see the 8.3.0-alpha1 release notes.
The following important issues have been resolved since 8.3.0-alpha1 (in addition to the numerous fixes listed at the end of this post).
Important bug fixes
The following critical and major bug fixes resolve several problems that affected data integrity as well as specific server environments.
- #2846782: Bulk operation actions might not act on the selected items resolves a recently discovered issue where the wrong data might be deleted by Views bulk forms on high-traffic sites.
- #2606772: Long Twig cache directories can cause failures on some filesystems shortens directories to a predictable length, prevents installs to directories that are too deep, and warns on existing and moved sites where the files directory is too deep. This will mitigate errors on Windows/IIS and some other environments.
- #2665152: Simplify module form structure and fix bugs when Suhosin is used resolves an issue where some modules (including experimental modules) could not be enabled enabled on sites using Suhosin.
- #2822190: PathValidator validates based on a RequestContext leaked from the current request, resulting in false negatives during CLI requests and POST submissions
- #2294731: Simpletest fails to run PHPUnit on Windows
- #2849222: settings.testing.php / testing.services.yml not picked up by BrowserTestBase
User and developer experience improvements
The following improvements have been added to this beta (in addition to those that were already included in 8.3.0-alpha1).
- #2758737: Add a packages.drupal.org to root composer.json
- #2808233: REST 403 responses don't tell the user *why* access is not granted: requires deep Drupal understanding to figure out
- #2815845: Importing (deploying) REST resource config entities should automatically do the necessary route rebuilding
- #665790: Redesign the status report page
- #2313095: Move node constants to NodeInterface
- #2767025: Add entity type label for a collection of entities
- #2831442: Switch to CKEditor 4.6's new "Moono-Lisa" skin
- #2826728: Block layout action removes instance, but contextual link deletes all instances
- #2605664: Align TestDiscovery and bootstrap.php's non-permissive loading of PSR-4 namespaces for traits
- #2656278: Convert "Limit allowed HTML tags" input field to a textarea
- #2287073: Allow views contextual filters to expose the context using argument validation plugins
In addition to the above improvements, a fix is under consideration for the Serialization module to change the API to explicitly return the correct data type for serialized data. This proposed change may impact sites, third-party REST/HAL/JSON applications, and contributed modules that expect data in the current string format. Note that this change is not included in the beta, but may be included in the upcoming release candidate, including an optional BC layer.
Experimental module improvements
This beta release includes several improvements for the experimental modules in 8.3.0-alpha1.
- Following the release of the experimental Layout Discovery module in 8.3.0-alpha1 and several related API improvements for the plugin system in this beta release, the contributed Display Suite module now has an 8.x-3.x development branch compatible with this new core API!
- #2669964: Migrate Drupal 7 core node translations to Drupal 8
- #2225717: Add config translation support to migrations and implement for Drupal 6 user profile fields
- #2844594: Default workflow states and transitions
- #2830581: Fix ContentModeration workflow type to calculate correct dependencies
- #2850601: ContentModeration workflow type plugin incorrectly preserves bundle keys on sorting and does not sort entity types
Updated third-party libraries
- #2848215: Update CKEditor library to 4.6.2
- #2803779: Update Coder to 8.2.10 and fix errors from improved sniffs
was a bug fix committed prior to 8.3.0-beta1 but introduced a regression with comment threading, and a potential regression for contrib modules doing similar things to comment module. The issue has been reverted so will not be in the dev tarballs or the 8.3.0 release candidate.
Drupal 8 currently has a number of known issues related to incorrect tracking of file usage, which can result in files being unexpectedly deleted from a site. Site owners experiencing unexplained file loss should consider setting "Delete orphaned files" to "Never" on
/admin/config/media/file-system until these issues are resolved, and note the following issues:
- #2801777: Give users the option to prevent Drupal from automatically marking unused files as temporary
- #2708411: File usage not incremented when adding new translation
- #1239558: Deleting a node with revisions does not release file usage
- #2666700: User profile images unexpectedly deleted
- #2810355: Images lost when changing node language
The following issues may affect people running this release on specific hosting environments:
- Particular Apache configurations may have issues with serving public file assets. Issue: #2619250: Disabling -MultiViews in .htaccess can cause 500 errors
All changes since 8.3.0-alpha1
- #2851648 by tim.plunkett, jibran: Layout regions should be in the order defined by the definition
- #2120395 by dpi, swentel: Useless test in UserRegistrationTest.php
- #2821112 by vaplas, jibran, esolitos, nicholas.alipaz, gambry, Lendude, SylvainM: Views NumericFilter 'regular_expression' operator is broken
- #2692091 by amateescu, heykarthikwithu, xjm, Berdir: Use the new 'view label' entity access check in the entity reference label formatter
- #2852182 by xjm: Fix list indentation in recently committed committed Migrate documentation
- #2845543 by vaplas, gambry, alexpott: PostgreSQL regular expression match operators works only for text
- #2843934 by mpdonadio, Gábor Hojtsy: datetime.schema.yml does not use the "built-in" date_format type
- #2822190 by webflo, Wim Leers, dawehner, alexpott, effulgentsia, SchnWalter: PathValidator validates based on a RequestContext leaked from the current request, resulting in false negatives during CLI requests and POST submissions
- #2845478 by gerzenstl, quietone, Jo Fitzgerald, phenaproxima, John Cook, xjm, ultimike: Add documentation to Explode process plugin
- #2843565 by Berdir, swentel, yched: getViewBuilder('node')->viewMultiple() bypasses render cache
- #2841311 by hchonov, tstoeckler: Initialized fields of an entity clone have a reference to the original entity object instead to the cloned entity object
- #2845477 by gerzenstl, Jo Fitzgerald, quietone, phenaproxima, xjm: Add documentation to DefaultValue process plugin
- #2287073 by Berdir, slashrsm, Denchev, jibran, Thew, dasjo, andypost, Arla, zaporylie, marvin_B8, piyuesh23, EclipseGc: Allow views contextual filters to expose the context using argument validation plugins
- #2845492 by quietone, FJ7, phenaproxima: Add documentation to SkipRowifNotSet process plugin
- #2845473 by Jo Fitzgerald, quietone, phenaproxima: Add documentation to Callback process plugin
- #2845481 by Jo Fitzgerald, leslieg, quietone, phenaproxima: Add documentation to Flatten process plugin
- #1863020 by dawehner, catch, paulmckibben, sunset_bill, damiankloip, Lendude, alansaviolobo, amarnus, CurtisTAG, jlbellido, deveshpal9, rpayanm: View's build fails when an unrelated form on the same page has validation errors
- #2849529 by nicrodgers: Unable to translate boolean custom true and false strings in views
- #2843892 by slashrsm, Berdir, dawehner: Query arguments are not persisted when using batch
- #2851902 by mpdonadio: Replace $date->format('U') with $date->getTimestamp()
- #2848933 by Wim Leers, tstoeckler: SerializationLinkManagerTest should not enable the rest_test module (because it implicitly enables the rest module)
- #2850642 by tstoeckler, Wim Leers: Reformat CKEditor build-config.js to match upstream
- #2845479 by Jo Fitzgerald, gerzenstl, quietone, Kifah Meeran, xjm, phenaproxima: Add documentation to Extract process plugin
- #2807785 followup by xjm: Fix coding standards for new constants.
- #2807785 by claudiu.cristea, OwilliwO, mpdonadio, cllamas, klausi, xjm, Berdir, Wim Leers, Mile23, daffie, Prashant.c, dawehner, sneha_surve: Move global constants from *.module files into interfaces
- #2834848 by tedbow, Wim Leers, alexpott: REST test fails depending on local testing URL
- #2793207 by SKAUGHT, Yogesh Pawar, Mukeysh, Cottser, webchick, tkoleary, alexpott: Fix off-set and goofy white jagged background of AJAX throbber when clicking Place Block
- #2848364 by Jo Fitzgerald, quietone: Convert Languages's Migrate source test to new base class
- #2781907 by timmillwood, Sam152: Remove unnecessary constraint from moderation state transition validation
- #2691971 by imrancluster, lluvigne, andrewmacpherson, royal121, John Cook, emallove, tstoeckler, alexpott, Cottser, ok_lyndsey, webchick: "Update Notifications" #title repeated for drupal 8 installation in configure site page
- #2849628 by droplet, Lendude: Strange bar in View UI filters Modal when there are no filter options
- #2850010 by anish.a, joachim, vmachado, tameeshb: Remove documentation references to deprecated function menu_local_tasks()
- #2049921 by jibran, tim.plunkett: Update the markup in UserMultipleCancelConfirm::buildForm()
- #2845644 by vaplas, gaurav.kapoor, xjm, pgacv2, cilefen, alexpott, xmacinfo: Missing a space between two sentences
- Revert "Issue #2845644 by vaplas, gaurav.kapoor: Missing a space between two sentences"
- #2845644 by vaplas, gaurav.kapoor: Missing a space between two sentences
- #2847334 by dawehner, Wim Leers, Jaesin, EclipseGc: ContextAwarePluginBase should implement CacheableDependencyInterface
- #2850670 by scott_euser, timmillwood: Add unit test coverage to ensure already existing transitions aren't allowed
- #2846140 by quietone, gaurav.kapoor: Remove d6/MigrateContactCategoryTest
- Revert "Issue #1863020 by dawehner, catch, paulmckibben, sunset_bill, damiankloip, alansaviolobo, amarnus, CurtisTAG, deveshpal9, rpayanm, jlbellido: View's build fails when an unrelated form on the same page has validation errors"
- Revert "Issue #2587063 by quietone, Jo Fitzgerald, jhodgdon, phenaproxima, alexpott, mikeryan: Variable to config: search_active_modules [d7]"
- Revert "Issue #2832859 by webflo, harings_rob, Wim Leers: Write EntityResourceTestBase subclasses for: MenuLinkContent"
- #1863020 by dawehner, catch, paulmckibben, sunset_bill, damiankloip, alansaviolobo, amarnus, CurtisTAG, deveshpal9, rpayanm, jlbellido: View's build fails when an unrelated form on the same page has validation errors
- #2832859 by webflo, harings_rob, Wim Leers: Write EntityResourceTestBase subclasses for: MenuLinkContent
- #2587063 by quietone, Jo Fitzgerald, jhodgdon, phenaproxima, alexpott, mikeryan: Variable to config: search_active_modules [d7]
- #2849623 by droplet, Lendude: When adding a filter group to a View, click on link, not UL
- #2225717 by quietone, Jo Fitzgerald, Gábor Hojtsy, mikeryan, phenaproxima, Kristen Pol: Add config translation support to migrations and implement for Drupal 6 user profile fields
- #2848354 by Jo Fitzgerald, quietone: MigrateExternalTranslatedTest is no longer dependent on migrate_drupal
- #2851678 by efrainh, jhodgdon: rest.install and other .install files have malformed @defgroup doc blocks
- #2847380 by Jo Fitzgerald, heddn, tstoeckler: Misleading message when migration test fails
- #2851728 by Sam152, timmillwood: s/transactions/transitions in WorkflowInterface
- #2803779 by pfrenssen, klausi, Mile23, alexpott, dawehner: Update Coder to 8.2.10 and fix errors from improved sniffs
- #2851600 by tim.plunkett, jibran: Remove workaround from \Drupal\Core\Config\TypedConfigManager::processDefinition()
- #2846782 followup by xjm: Add inline documentation for the fix.
- #2846782 by tacituseu, swentel, tim.plunkett, Gábor Hojtsy, borisson_: Bulk operation actions might not act on the selected items
- #2850189 by vmachado, thhafner: Typo in FormBuilder documentation code example
- #2851510 by klausi: Fix phpcs regressions by running phpcbf
- #2665152 by alexpott, Andrej Galuf, tfranz, longwave, andypost, jsimonis, bojanz: Simplify module form structure and fix bugs when Suhosin is used
- #2830581 by alexpott, Sam152, timmillwood, xjm: Fix ContentModeration workflow type to calculate correct dependencies
- #2851574 by tim.plunkett, mpdonadio: DependentPluginDefinitionInterface and DependentPluginDefinitionTrait should be in Drupal\Core not Drupal\Component
- #2831442 by Wim Leers, tkoleary, tstoeckler, mattlt: Switch to CKEditor 4.6's new "Moono-Lisa" skin
- #2844594 by alexpott, scott_euser, timmillwood, Sam152: Default workflow states and transitions
- #2758737 by Mixologic, amateescu, webflo, ndf, cilefen, Mile23, bojanz: Add a packages.drupal.org to root composer.json
- #2815845 by dawehner, Wim Leers, alexpott, tedbow, Berdir, swentel, webflo: Importing (deploying) REST resource config entities should automatically do the necessary route rebuilding
- #2821189 by tim.plunkett, tstoeckler: Allow object-based plugin definitions to be processed in DerivativeDiscoveryDecorator
- #2822752 by tim.plunkett, jibran: Allow object-based plugin definitions to be created by non-annotated discovery
- Revert "Issue #2665152 by alexpott, Andrej Galuf, tfranz, longwave, jsimonis, andypost, bojanz: Certain modules can't be enabled when Suhosin is used"
- #2850022 by Sam152, Berdir: Duplicating a non-default revision should produce a default revision for a newly created entity
- #2389335 by Berdir, naveenvalecha, claudiu.cristea, almaudoh, joachim, jibran: Deprecate entity.query service and replace with using the entity storage's getQuery() method
- #2808233 by gnuget, dawehner, Wim Leers, tedbow, Chi, dysrama: REST 403 responses don't tell the user *why* access is not granted: requires deep Drupal understanding to figure out
- #2408321 by mfb, sanduhrs, D34dMan, C_Logemann, xumepadismal, John Morahan, serg2, walterebert, David Grudl: Support RFC 5785 by whitelisting the .well-known directory
- #2848215 by boaloysius, Wim Leers: Update CKEditor library to 4.6.2
- #2346773 by dmsmidt, lokapujya, klakegg, marcvangend, andrewmacpherson, ptsimard, Getekid, Rade, yoroy, tstoeckler, mgifford, tim.plunkett, estoyausente, xjm, PierreMarcel, hass, SKAUGHT, sukanya.ramakrishnan, flyke, alvar0hurtad0, bojanz, pwolanin, arunkumark, Bojhan, bleen: Details form element should open when there are errors on child elements
- #2826728 by tim.clifford, tim.plunkett, Adita, lomasr, tkoleary, boosmith, utkarsh_malviya, laxman.ghavte, dmezquia, Thew, shubhang, rosschive, larowlan: Block layout action removes instance, but contextual link deletes all instances
- #2851214 by amateescu: ViewsEntitySchemaSubscriber does a lot of unnecessary work every time an entity type definition is updated
- #2665152 by alexpott, Andrej Galuf, tfranz, longwave, jsimonis, andypost, bojanz: Certain modules can't be enabled when Suhosin is used
- #2851048 by Sam152: EntityTypeInterface::isSubclassOf deprecation docs incorrect
- #2313095 by claudiu.cristea, l0ke, umarzaffer, mrjmd, dawehner, alexpott, catch: Move node constants to NodeInterface
- #2575967 by rashidkhan, mpdonadio: Documentation for on403 function in Http4xxController file is wrong
- #2850170 by aaronbauman, dawehner: Capitalization error for assertTRUE()
- #2656278 by alexpott, miteshmap, droplet, walangitan, empesan, ejb503, manmohandream, vaidehi bapat, gadaniels72, swentel, jamesdesq, luca_cracco, malaimo29001, Wim Leers, nileema.jadhav: Convert "Limit allowed HTML tags" input field to a textarea
- #2850546 by scott_euser: Empty value for no transitions when editing state
- #2850601 by alexpott, xjm, timmillwood: ContentModeration workflow type plugin preserves numeric keys on sorting and not sorting entity types
- #2848553 by Sam152, Jaesin, dawehner: Make sure all 'configure' links are valid routes
- #2821191 by tim.plunkett, tstoeckler, jibran: Allow object-based plugin definitions to be processed in PluginDependencyTrait
- #2849222 by tstoeckler: settings.testing.php / testing.services.yml not picked up by BrowserTestBase
- #2845113 by timmillwood, tstoeckler: Add test coverage that setting an invalid moderation state on a moderated entity fails
- #2849474 by Wim Leers: \Drupal\Tests\rest\Functional\CookieResourceTestTrait::initAuthentication() should use the current test format, and should not send an Accept header
- #2847687 by jp.stacey, dawehner: EntityAccessCheck mandates instanceof EntityInterface when it only needs AccessibleInterface
- #2838144 by arshadcn, Wim Leers, drpal: Update "bundle missing" error message in entity denormalization to indicate which field is actually missing
- #1569894 by sun, alexpott: Update unicode.inc to PHP5
- #2847655 by diaspar, andrewmacpherson: Document Drupal\views\EventSubscriber\RouteSubscriber::routeRebuildFinished()
- #2824655 by tim.plunkett: Plugin definitions should store their class in a consistent manner (without leading slashes)
- #2850592 by alexpott, xjm: Typos in ContentModertaionWorkflowTypeApiTest
- #2850341 by alexpott, xjm, timmillwood: Improve \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration::appliesToEntityTypeAndBundle() and ::getBundlesForEntityType()
- #665790 by chrisrockwell, Sumit kumar, lauriii, joelpittet, sun, vulcanr, vaplas, yoroy, leahtard, tompagabor, aspilicious, Gábor Hojtsy, David_Rothstein, Manuel Garcia, rootwork, nod_, kostyashupenko, pguillard, Bojhan, droplet, typhonius, wturrell, mgifford, webkenny, cosmicdreams, tkoleary, YesCT, marcvangend, markabur, LewisNyman, mrfelton, oriol_e9g, prabhu9484, catch, hedrickbt, tsvenson, longwave, dww, kika, borisson_, rdellis87, realityloop, klonos: Redesign the status report page
- #2811407 by timmillwood, Sam152, tstoeckler, cilefen, Gábor Hojtsy, webchick: "Workflow entities" admin page title should be "Workflows"
- #2849104 by eiriksm: Wrong type doc for parameter in locale_translation_status_save
- #2843595 by hussainweb, heddn, jonhattan: Add indexes to migrate_map_* tables
- #2844293 by swentel: Manually calling $account->delete() will throw an exception if the user has nodes in an anonymous environment with node access enabled
- #2845666 by dpi, ritzz, dawehner: *TempStore's missing @throws documentation
- #2822975 by tedbow: Clean up unused portions of offcanvas_test module
- #2845650 by mradcliffe: Make entity route providers public instead of internal
- #2842399 by dawehner, webflo: Unable to render link with attributes twice
- #2409129 by webflo, k4v, kgoel, claudiu.cristea, dawehner, tstoeckler: Enforce order of permissions in config export
- #2847611 by dawehner, webflo: \Drupal\Core\Template\TwigExtension::getLink overrides existing classes
- #2839267 by chiranjeeb2410, er.pushpinderrana, joyceg, oldpopsong: Argument of \Drupal::formBuilder()->getForm() should implement FormInterface
- #2832080 by cebasqueira, Berdir: BrowserTestBase::drupalLogin() does an unnecessary redirect from /user to /user/login for each login
- #2669964 by quietone,Gábor Hojtsy, Jo Fitzgerald, phenaproxima: Migrate Drupal 7 core node translations to Drupal 8
- Revert "Issue #2015149 by dagmar, Pol, Lendude, damiankloip, alansaviolobo, Psikik, yoroy, dawehner, jibran, catch: Replace dblog recent log entries with a view"
- Revert "Issue #2795489 by mpdonadio, cilefen, ednawig: 2038 bug with PHP timestamps on 32-bit systems - warn users?"
- #2795489 by mpdonadio, cilefen, ednawig: 2038 bug with PHP timestamps on 32-bit systems - warn users?
- #2802923 by Wim Leers, casey: Use instead of
for BigPipe placeholders
- #2802427 by Stefdewa, hardik.p, Arndt, Jo Fitzgerald: Browser tests fail under HTTPS
- #2841614 by hchonov, amateescu: comment_update_8300 is not updating correctly the field storage definition of the status field
- #2606772 by mikeker, pwolanin, YesCT, david_garcia, alexpott, cilefen, xjm, Cottser, catch, joelpittet, effulgentsia, kevla, dawehner: Long Twig cache directories can cause failures on some filesystems
- #2845475 by quietone, semiuniversal, phenaproxima, cilefen: Add documentation to Concat process plugin
- #2845324 by vaplas: error in docs in SqlBase::initializeIterator()
- #2843997 by Sam152: Add missing test coverage for content edit tab labels
- #2294731 by alexpott, othermachines, sun, droplet, mikeker, david_garcia, Mile23, Ketan Harit, anavarre, Berdir: Simpletest fails to run PHPUnit on Windows
- #2843693 by michielnugter, droplet, xjm, Mixologic, klausi: Random test failure in CKEditor AjaxCss
- #2015149 by dagmar, Pol, Lendude, damiankloip, alansaviolobo, Psikik, yoroy, dawehner, jibran, catch: Replace dblog recent log entries with a view
- #2605664 by Torenware, Mile23, alexpott, Taran2L, neclimdul, Yogesh Pawar, mark.creamer, donquixote, dawehner, klausi: Align TestDiscovery and bootstrap.php's non-permissive loading of PSR-4 namespaces for traits