Fixed
Project:
Drupal core
Version:
12.0.x-dev
Component:
javascript
Priority:
Critical
Category:
Task
Assigned:
Unassigned
Issue tags:
Reporter:
Created:
7 Sep 2026 at 02:06 UTC
Updated:
24 Sep 2026 at 14:31 UTC
Jump to comment: Most recent
Comments
Comment #2
quietone commentedComment #3
longwaveComment #5
longwaveUpdating most things here except the ones mentioned in the IS plus cspell, eslint, postcss and stylelint as those tend to require more changes.
Steps to reproduce:
Comment #6
longwaveComment #7
longwavetransliterateappears to have a breaking change, so I downgraded it back to the original version for now.Comment #8
longwaveI tried to regenerate the performance statistics but only succeeded in crashing my laptop, will try again later.
Comment #9
quietone commentedComment #10
quietone commentedRebased and fixed the performance test.
Not sure why Nightwatch is reporting a failure.
Comment #11
xjmWe should probably postpone this on all the other updates (specifically Node 24 followed by CSpell, but also Prettier and Nightwatch) since the update gets smaller after those and will conflict with them.
Comment #12
quietone commentedAnd update to avoid this
Comment #13
quietone commentedComment #15
quietone commentedMR !17198 does not update
as they cause some type of error.
Comment #16
quietone commentedComment #18
gábor hojtsyReasons for changes in the commit above to the full JS dependency update, reformulated based on reasons figured out by my LLM. Decisions explained are by me, but some we may want to go a different way. See the
eslint 10,eslint-plugin-ymlandstylelint-config-standarditems specifically.transliterationobject instead of atransliterateglobal, socore/misc/machine-name.jsnow usestransliteration.transliterate, and the eslint globals list now declarestransliterationinstead oftransliterate. The MR had this bundle without the code change, which caused the JavaScript errors causing the Functional JavaScript and Nightwatch failures.@eslint/jsas a dependency of its own, so@eslint/jswas added as an explicit dev dependency becauseeslint.config.mjsimports it.no-useless-assignmentandno-unassigned-varsto the recommended rule set, which would finds issues on eleven existing lines in core, Claro and Default Admin. Instead of fixing those lines, both rules are set to off ineslint.config.mjs. We can decide to do the fixes instead and make core cleaner, it is only 11 lines, but did not want to make the decision myself :)fixupPluginRuleswrapper, so the wrapper was removed fromeslint.config.mjs. That left@eslint/compatunused, so it was removed frompackage.json. We need to decide if we still want to include@eslint/compatfor other reasons.import/defaultrule fail when parsing it, so the import rules now ignore everything undernode_modules. I don't think we should lint node_modules, so I think this is fine.property-no-deprecated, which finds 74 existing uses of the deprecatedpage-break-*,word-wrapandclipin the themes. Instead of fixing those directly here that rule is set to null in.stylelintrc.jsonuntil the CSS is fixed separetely I would say.core/assets/vendorand their version entries incore.libraries.ymlwere regenerated withyarn vendor-update.yarn.lockwithyarn up -R caniuse-lite browserslist. Neither is a direct dependency: browserslist resolves the "last 2 versions" targets inpackage.jsonfrom the caniuse-lite data, and postcss-preset-env and autoprefixer use that result to decide which fallbacks and prefixes to emit. The old data was what produced the two warnings quoted in comment #12 on every CSS build. The refresh also removed the duplicate browserslist 4.27.0 and baseline-browser-mapping 2.8.23 entries from the lockfile.Comment #19
quietone commentedComment #21
gábor hojtsyCleaned up IS, made the more limited MR hidden.
Comment #22
godotislateNice work, @gábor hojtsy!
I have a couple comments on the MR.
Related to a couple MR comments:
Let's create that follow up.
And this follow up too.
Do we need a CR for this? It looks like the repo address changed, and there are no git tags for versions before v2.4.0, nor any indications in the changelog so it's non-obvious (at least to me) how to make this change.
Also, I repeated the upgrade steps locally and got nearly the same changes as the MR, aside from some new patch versions. After the changes, though, pne thing I'm noticing is this on
yarn install:eslint-plugin-importis eslint 10 compatible on HEAD, but they have yet to put out a compatible release, with no timeline.There is a fork project eslint-plugin-import-x that might be more actively maintained, but maybe eslint 10 should be done in a follow up?
Comment #24
gábor hojtsyRe transliteration, https://github.com/dzcpy/transliteration which we have in main does indeed redirect to https://github.com/yf-hk/transliteration which has the new API. As for a change record for this specifically, I added a draft at https://www.drupal.org/node/3625169 now
Re eslint-plugin-import I moved back to eslint 9 for now in the MR but that is already EOL as of a month ago: https://eslint.org/version-support/, so I don't think Drupal 12 would want to relase on it?
Re the
property-no-deprecatedrule, I wanted to fold that in but it does look like lots of changes, even though the same pattern repeated over and over. Also there are CSS build concerns that turned out :/ Opened #3625187: Replace deprecated CSS properties flagged by stylelint's property-no-deprecated rule as followup for that and added a patch file for now since it needs this MR first.Re eslint update, I opened #3625189: Update to ESLint 10, as ESLint 9 has been end of life since 6 August 2026 as a followup. Need to discuss if releasing the beta on an EOL ESLint is a good idea or should also make that a beta blocker.
I think this covers all concerns?
Comment #25
longwaveAdded some more questions for parts I don't understand. I was hoping to only land the trivial changes here that don't have side effects, and do the others in followups, as it's hard to read the diff with all the CSS whitespace changes mixed in.
Comment #26
longwaveComment #27
gábor hojtsy@longwave: re the whitespace changes: main uses
postcss 8.5.3; the MR usespostcss 8.5.28. Sincepostcss 8.5.19whitespace handling changed with this changelog entry: "Fixed cleaning before for new nodes inserted to Root". Now when nested rules are flattened, each becomes a new node inserted into the root; older postcss discarded the blank line but 8.5.19 onwards keeps it. That is why every file with nesting got blank lines between its flattened rules, and files without nesting did not change.I can back out the whitespace changes but that also means not updating postcss 8.5.6, postcss-preset-env 10.4.0, postcss-import 16.1.1 and postcss-url 10.1.3 in this MR. Should that too move to its own issue? Does this make it easier to proceed? :)
I responded to the other two MR comments, pushed one fix and explained the other.
Comment #28
longwave@Gabor did you read the docs for each of the major version upgrades to see what the breaking changes were? Just because the LLM has made it work doesn't mean we are necessarily doing the right thing going forwards. For example see my comment about
eslint-plugin-ymlwhere the default config reference has apparently changed. As I mentioned there I think it's better to handle breaking changes in separate issues, that also helps us decide whether to backport them to 11.x or not.Comment #29
gábor hojtsyI don't think it makes a difference if I don't read all the dependency major version upgrade docs after running yarn upgrade manually or using an LLM :) I don't have a recollection of prior package pain for example, its great to have humans that have that background to provide reviews.
I moved the postcss and postcss-import changes as you pointed out it was a entirely autogenerated LOT of whitespace changes indeed as a result of running those tools' updated versions. They should be done together due to reasons I researched and explained in #3625308: Update postcss, and postcss-import for Drupal 12. While postcss-import is a major version update for example, I did the evaluation there explicitly. This should make it easier to piece this further apart.
Comment #30
longwaveThis is more manageable to review now and I think all these bumps are okay here - but there's a merge conflict.
Comment #31
gábor hojtsyThanks for the review again @longwave. I think your MR comments on the eslint-plugin-yml are contradicting your latest note on all bumps are okay, so we should decide one way and I can either open the separate issue for that one or keep it here and update the doc comment to be cleaner :) I don't personally know the impact of not running the
import/defaultrule in linting is, ie that does skipping that loose us.Comment #32
longwaveOK let's revert
eslint-plugin-ymlhere and do that either separately or if/when we update to ESLint 10.The changes for stylelint, transliteration and eslint-plugin-jquery are contained to one line each and make sense to me.
Comment #33
gábor hojtsyComment #34
longwaveLet's do it.
Comment #35
gábor hojtsyComment #36
gábor hojtsyOpened #3625576: Update eslint-plugin-yml to 3.x with plenty options listed for the yaml plugin :) Updated issue summary with issues deferred and added the postcss one as done earlier. Do we need a release note snippet with ALL the updated major version packages at least?
Comment #37
longwaveNo for the release note we usually just have a standard phrase about JavaScript dependencies being updated to their latest versions, as it doesn't really affect site owners directly (and a lot of them only affect core developers).
Comment #38
fathershawnComment #40
catchThis looks straightforward enough now.
Committed/pushed to main, thanks!
I think we could backport some/all of these updates to 11.5 so moving there for backport. If a new issue is preferred that's fine too.
Comment #42
longwaveI'm going to open a new issue for 11.5 because there are some differences (we are still on ESLint 8 there for example), and complications with the CKEditor build.