Comments

longwave created an issue. See original summary.

longwave’s picture

Title: Remove support for IE11 » [meta] Remove support for IE11
Category: Task » Plan

This is likely too big to attempt in one patch, repurposing as a meta.

We need child issues at least for

  • Removing all IE specific CSS, perhaps scoped by theme?
  • Removing conditional comments support from the HtmlTag element
  • Removing the compatibility warnings from CKEditor 5
  • Removing JS polyfills that are only needed in IE
mherchel’s picture

Yay! I was coming here to create this issue!

Here's a quick braindump:

If I have time later this week, i'll come back and edit the issue summary if anyone hasn't gotten to it yet.

mherchel’s picture

Issue summary: View changes

Added a list of polyfills

mherchel’s picture

Issue summary: View changes

Adding CSS tasks

mherchel’s picture

Issue summary: View changes
Issue tags: +CSS, +JavaScript, +IE11

Listing out some subsystems.

mherchel’s picture

Issue summary: View changes
mherchel’s picture

Issue summary: View changes
mherchel’s picture

Issue summary: View changes
mherchel’s picture

Issue summary: View changes
mherchel’s picture

Issue summary: View changes
droplet’s picture

IMO, all JS polyfill can be removed together in a single thread. This way you can perform batch SEARCH to find out what LEFT.

AFAIK, it should be a good pattern to SEARCH & REPLACE(REMOVE). If not, we really need to revisit how bad we've done before and improve/avoid it for the next level :)

mherchel’s picture

Issue summary: View changes
ckrina’s picture

Issue summary: View changes
xjm’s picture

Priority: Normal » Critical
Issue tags: +Drupal 10, +beta blocker, +pre-alpha target
Parent issue: » #3118149: [meta] Requirements for tagging Drupal 10.0.0-beta1

Just getting this into the right place in the D10 issue tree.

xjm’s picture

Issue tags: -pre-alpha target

Oops, some of the children can go in before alpha1, but not necessarily all of them.

mherchel’s picture

mherchel’s picture

Issue summary: View changes
gapple’s picture

cilefen’s picture

longwave’s picture

Issue summary: View changes
xjm’s picture

catch’s picture

#3254202: Remove IE11 Support from Claro is close although it could use some help to get it over the line. A couple of Olivero issues still to go too.

The IS mentions settings tray and media, but there are no issues for those, should there be?

wim leers’s picture

Issue summary: View changes
catch’s picture

Changing this to a beta 'should have' since most of these issues aren't actually beta blocking. Anything that is/was beta blocking should already have been surfaced separately.

longwave’s picture

longwave’s picture

longwave’s picture

catch’s picture

Priority: Critical » Major
Issue tags: -JavaScript +JavaScript

Moving this down to major since it's not really time sensitive, we just need to finish off the child issues, some of which are 11.x only like dependency removals.

Version: 10.0.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

quietone’s picture

$ grep -ri IE11 --exclude-dir="node_modules" --exclude-dir="assets" core
core/themes/claro/js/tableselect.js:        // is preferable, but not supported by IE11.
core/themes/claro/js/tableselect.js:          // Determine add/remove with ternary since IE11 does not support the

Made an issue for this, #3540893: Remove IE11 Support from Claro

quietone’s picture

Issue summary: View changes
quietone’s picture

Issue summary: View changes
quietone’s picture

Issue summary: View changes
Status: Active » Needs review

The last child issue is fixed. And there are no more instances of the text 'IE11' in core. However, there are still outstanding tasks in the issue summary.

Are there any more instances of IE11 support that need to be removed? Or can this be closed now?

dcam’s picture

Regarding this task:

Determine which (if any) PostCSS plugins can be removed

The postcss-preset-env plugin says this in its docs:

PostCSS Preset Env lets you convert modern CSS into something most browsers can understand, determining the polyfills you need based on your targeted browsers or runtime environments.

This sounds like the relevant plugin configuration to look at in core/scripts/css/compile.js. I don't know anything about PostCSS. I may be able to figure out which features were enabled for IE11 support, but due to my inexperience I wouldn't know without study.

Here's the configuration from compile.js:

      postcssPresetEnv({
        stage: 1,
        preserve: false,
        autoprefixer: {
          cascade: false,
          grid: 'no-autoplace',
        },
        features: {
          'blank-pseudo-class': false,
          'focus-visible-pseudo-class': false,
          'focus-within-pseudo-class': false,
          'has-pseudo-class': false,
          'image-set-function': false,
          'prefers-color-scheme-query': false,
          'content-alt-text': false,
        }
      }),
dcam’s picture

The only mention of IE11 in the original issue that added postcss-preset-env was in regard to the autoprefixer setting.

From that issue:

We also need to turn on CSS Grid support for IE11 (Olivero uses CSS Grid extensively). CSS Grid is disabled by default in Autoprefixer (see https://github.com/postcss/autoprefixer/blob/master/README.md#options), and can be turned on by setting either grid: 'autoplace' or grid: 'no-autoplace'. The autoplacement feature didn't work for us, so have the latter option set.

catch’s picture

I think we might want a separate issue to revisit whether we need postcss at all these days.

longwave’s picture

PostCSS currently makes a small number of changes, but nowhere near as much now nesting is supported natively:

  • px measurements are converted to rem
  • SVGs are inlined
  • CSS variables in media queries are replaced with their real value (the spec does not allow for this afaik)
  • a handful of browser compatibility rules are added (e.g. -webkit-text-decoration: none for some reason)

If we wanted to skip the build step we could enforce some of this with stylelint rules but e.g. inlining SVG manually seems a bit of a waste of time.

catch’s picture

OK some of that sounds worth having so not worth trying to get rid of it entirely. Although shifting what we can to linting and checking if we're using the right supported browser configuration is probably worth it?

longwave’s picture

Status: Needs review » Needs work

Opened #3568444: Simplify PostCSS config.

There are still several mentions of IE:

core/tests/Drupal/Tests/Component/Utility/UserAgentTest.php
119:      // some versions of Internet Explorer.

core/tests/Drupal/Tests/Component/Utility/XssTest.php
196:      // Null between < and tag name works at least with IE6.
297:      // Works at least with IE6.
430:      // with Internet Explorer 6.

core/lib/Drupal/Component/Utility/Xss.php
143:    // site scripting issues on Internet Explorer 6.

core/lib/Drupal/Component/Utility/Unicode.php
384:   * as UTF-8 to Internet Explorer 6, the program may misinterpret subsequent

core/lib/Drupal/Component/Utility/UserAgent.php
77:    // Explorer from version 7 sends only specific language tags (eg. fr-CA)
83:    // http://blogs.msdn.com/b/ie/archive/2006/10/17/accept-language-header-for-internet-explorer-7.aspx

core/lib/Drupal/Core/Form/FormBuilder.php
1170:      // within it, Internet Explorer submits the form with no POST data
1201:        // JavaScript or fallback behavior implemented for IE), and because
1428:   * submissions from Internet Explorer in response to an ENTER key pressed in a

core/modules/system/tests/src/FunctionalJavascript/Form/TriggeringElementTest.php
33:   * the ENTER key is pressed in a textfield in Internet Explorer.

core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php
131:      // Make sure the Content-Type comes first because the IE browser may be

core/lib/Drupal/Core/Render/Element/ImageButton.php
41:        // Unfortunately, in IE we never get back a proper value for THIS

core/misc/tabledrag.js
715:    // scrolling. IE and Safari will suppress scrolling on keydown, but all

core/misc/drupal.js
411:    // Decode the URL first; this is required by IE <= 6. Decoding non-UTF-8

core/themes/starterkit_theme/css/components/breadcrumb.css
23:/* IE8 does not support :not() and :last-child. */

core/profiles/demo_umami/themes/umami/css/classy/components/breadcrumb.css
23:/* IE8 does not support :not() and :last-child. */

core/lib/Drupal/Core/EventSubscriber/AjaxResponseSubscriber.php
58:      // IE 9 does not support XHR 2 (http://caniuse.com/#feat=xhr2), so

core/tests/Drupal/Tests/Core/Ajax/AjaxResponseTest.php
84:   * Tests the support for IE specific headers in file uploads.

core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
79:          'browsers' => ['IE' => TRUE, '!IE' => TRUE],

core/modules/big_pipe/src/Render/BigPipe.php
484:    // around for a bug in IE9 will cause not JSON, but <textarea>-wrapped JSON

core/modules/system/tests/modules/form_test/src/Form/FormTestClickedButtonForm.php
28:    // A single text field. In IE, when a form has only one non-button input

I think some of these should be cleaned up too if we can.

catch’s picture

When we originally dropped IE6 support we made a decision not to actively remove XSS protection in PHP etc., but that was over a decade ago, so trying to clear a lot of that out now feels overdue.

longwave’s picture

Status: Needs work » Active

Opened five child issues for various parts of #40. I think we should probably leave the XSS protection/tests alone to err on the side of caution.

longwave’s picture

Title: [meta] Remove support for IE11 » [meta] Remove support for Internet Explorer

Let's widen the scope of the meta slightly :)

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.