<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>ESLint Blog</title>
  <subtitle>feed description</subtitle>
  <link href="https://eslint.org/feed.xml" rel="self"/>
  <link href="https://eslint.org/"/>
  <updated>2026-04-03T00:00:00Z</updated>
  <id>https://eslint.org/</id>
  <author>
    <name>ESLint</name>
    <email></email>
  </author>
  
  <entry>
    <title>ESLint v10.2.0 released</title>
    <link href="https://eslint.org/blog/2026/04/eslint-v10.2.0-released/"/>
    <updated>2026-04-03T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/04/eslint-v10.2.0-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;h3 id=&quot;language-aware-rules&quot; tabindex=&quot;-1&quot;&gt;Language-aware rules&lt;/h3&gt;
&lt;p&gt;ESLint v10.2.0 adds support for language-aware rules through the new &lt;code&gt;meta.languages&lt;/code&gt; property. Rule authors can now explicitly declare which languages a rule supports, and ESLint will throw a runtime error if that rule is enabled for an unsupported language, as specified by the &lt;code&gt;language&lt;/code&gt; configuration option.&lt;/p&gt;
&lt;p&gt;Here is an example of a rule that only supports the JavaScript language:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language-js line-numbers-mode&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; rule &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;meta&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;problem&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;docs&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token literal-property property&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Example JavaScript rule&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;languages&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;js/js&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;create&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;Currently, none of the ESLint built-in rules restrict the languages they are designed to work with, but this may change in the future.&lt;/p&gt;
&lt;p&gt;More information about the &lt;code&gt;meta.languages&lt;/code&gt; property can be found in the &lt;a href=&quot;https://eslint.org/docs/latest/extend/custom-rules#rule-structure&quot;&gt;custom rules documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;temporal-support&quot; tabindex=&quot;-1&quot;&gt;&lt;code&gt;Temporal&lt;/code&gt; support&lt;/h3&gt;
&lt;p&gt;With the &lt;a href=&quot;https://tc39.es/proposal-temporal/&quot;&gt;Temporal proposal&lt;/a&gt; now at TC39 stage 4, ESLint v10.2.0 recognizes &lt;code&gt;Temporal&lt;/code&gt; as a built-in global. As a result, the &lt;code&gt;no-undef&lt;/code&gt; rule no longer flags &lt;code&gt;Temporal&lt;/code&gt; under the default configuration:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language-js line-numbers-mode&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* eslint no-undef: &quot;error&quot; */&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; now &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Temporal&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Now&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;instant&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// OK&lt;/span&gt;
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;In addition, the &lt;code&gt;no-obj-calls&lt;/code&gt; rule now reports direct calls to the global &lt;code&gt;Temporal&lt;/code&gt; object:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language-js line-numbers-mode&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* eslint no-obj-calls: &quot;error&quot; */&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;Temporal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Error: &#39;Temporal&#39; is not a function.&lt;/span&gt;
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;h2 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/586ec2f43092779acc957866db4abe999112d1e1&quot;&gt;&lt;code&gt;586ec2f&lt;/code&gt;&lt;/a&gt; feat: Add &lt;code&gt;meta.languages&lt;/code&gt; support to rules (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20571&quot;&gt;#20571&lt;/a&gt;) (Copilot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/14207dee3939dc87cfa8b2fcfc271fff2cfd6471&quot;&gt;&lt;code&gt;14207de&lt;/code&gt;&lt;/a&gt; feat: add &lt;code&gt;Temporal&lt;/code&gt; to &lt;a href=&quot;https://eslint.org/docs/rules/no-obj-calls&quot;&gt;&lt;code&gt;no-obj-calls&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20675&quot;&gt;#20675&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/bbb2c93a2b31bd30924f32fe69a9acf41f9dfe35&quot;&gt;&lt;code&gt;bbb2c93&lt;/code&gt;&lt;/a&gt; feat: add Temporal to ES2026 globals (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20672&quot;&gt;#20672&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/542cb3e6442a4e6ee3457c799e2a0ee23bef0c6a&quot;&gt;&lt;code&gt;542cb3e&lt;/code&gt;&lt;/a&gt; fix: update first-party dependencies (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20714&quot;&gt;#20714&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a2af743ea60f683d0e0de9d98267c1e7e4f5e412&quot;&gt;&lt;code&gt;a2af743&lt;/code&gt;&lt;/a&gt; docs: add &lt;code&gt;language&lt;/code&gt; to configuration objects (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20712&quot;&gt;#20712&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/845f23f1370892bf07d819497ac518c9e65090d6&quot;&gt;&lt;code&gt;845f23f&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/5fbcf5958b897cc4df5d652924d18428db37f7ee&quot;&gt;&lt;code&gt;5fbcf59&lt;/code&gt;&lt;/a&gt; docs: remove &lt;code&gt;sourceType&lt;/code&gt; from ts playground link (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20477&quot;&gt;#20477&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8702a474659be786b6b1392e5e7c0c56355ae4a4&quot;&gt;&lt;code&gt;8702a47&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ddeaded2ab36951383ff67c60fb64ec68d29a46a&quot;&gt;&lt;code&gt;ddeaded&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2b4496691266547784a7f7ad1989ce53381bab91&quot;&gt;&lt;code&gt;2b44966&lt;/code&gt;&lt;/a&gt; docs: add Major Releases section to Manage Releases (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20269&quot;&gt;#20269&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/eab65c700ebb16a6e790910c720450c9908961fd&quot;&gt;&lt;code&gt;eab65c7&lt;/code&gt;&lt;/a&gt; docs: update &lt;code&gt;eslint&lt;/code&gt; versions in examples (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20664&quot;&gt;#20664&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3e4a29903bf31f0998e45ad9128a265bce1edc56&quot;&gt;&lt;code&gt;3e4a299&lt;/code&gt;&lt;/a&gt; docs: update ESM Dependencies policies with note for own-usage packages (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20660&quot;&gt;#20660&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8120e30f833474f47acc061d24d164e9f022264f&quot;&gt;&lt;code&gt;8120e30&lt;/code&gt;&lt;/a&gt; refactor: extract no unmodified loop condition (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20679&quot;&gt;#20679&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/46e8469786be1b2bbb522100e1d44624d98d3745&quot;&gt;&lt;code&gt;46e8469&lt;/code&gt;&lt;/a&gt; chore: update dependency markdownlint-cli2 to ^0.22.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20697&quot;&gt;#20697&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/01ed3aa68477f81a7188e1498cf4906e02015b7c&quot;&gt;&lt;code&gt;01ed3aa&lt;/code&gt;&lt;/a&gt; test: add unit tests for unicode utilities (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20622&quot;&gt;#20622&lt;/a&gt;) (Manish chaudhary)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/811f4930f82ee2b6ac8eae75cade9bed63de0781&quot;&gt;&lt;code&gt;811f493&lt;/code&gt;&lt;/a&gt; ci: remove &lt;code&gt;--legacy-peer-deps&lt;/code&gt; from types integration tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20667&quot;&gt;#20667&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6b86fcfc5c75d6a3b8a2cf7bcdb3ef60635a9a03&quot;&gt;&lt;code&gt;6b86fcf&lt;/code&gt;&lt;/a&gt; chore: update dependency npm-run-all2 to v8 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20663&quot;&gt;#20663&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/632c4f83bf32b77981c7d395cacddd1bb172ee25&quot;&gt;&lt;code&gt;632c4f8&lt;/code&gt;&lt;/a&gt; chore: add &lt;code&gt;prettier&lt;/code&gt; update commit to &lt;code&gt;.git-blame-ignore-revs&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20662&quot;&gt;#20662&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b0b0f21927e03ba092400e3c70d7058f537765c8&quot;&gt;&lt;code&gt;b0b0f21&lt;/code&gt;&lt;/a&gt; chore: update dependency eslint-plugin-regexp to ^3.1.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20659&quot;&gt;#20659&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/228a2dd4b272c17f516ee3541f1dd69eca0a8ab0&quot;&gt;&lt;code&gt;228a2dd&lt;/code&gt;&lt;/a&gt; chore: update dependency eslint-plugin-eslint-plugin to ^7.3.2 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20661&quot;&gt;#20661&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3ab4d7e244df244102de9d0d250b2ff12456a785&quot;&gt;&lt;code&gt;3ab4d7e&lt;/code&gt;&lt;/a&gt; test: Add tests for eslintrc-style keys (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20645&quot;&gt;#20645&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.1.0 released</title>
    <link href="https://eslint.org/blog/2026/03/eslint-v10.1.0-released/"/>
    <updated>2026-03-20T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/03/eslint-v10.1.0-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;h3 id=&quot;api-support-for-bulk-suppressions&quot; tabindex=&quot;-1&quot;&gt;API Support for Bulk Suppressions&lt;/h3&gt;
&lt;p&gt;ESLint v10.1.0 introduces API support for the &lt;a href=&quot;https://eslint.org/docs/latest/use/suppressions&quot;&gt;bulk suppressions&lt;/a&gt; feature that was previously only available in the CLI.&lt;/p&gt;
&lt;p&gt;ESLint API consumers, such as IDEs, can now pass the &lt;code&gt;applySuppressions: true&lt;/code&gt; option to the &lt;code&gt;ESLint&lt;/code&gt; constructor. With this option, suppressions from the suppressions file are automatically applied to results from &lt;code&gt;ESLint#lintFiles()&lt;/code&gt; and &lt;code&gt;ESLint#lintText()&lt;/code&gt; methods.&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language-js line-numbers-mode&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; eslint &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ESLint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;applySuppressions&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// optional, defaults to `eslint-suppressions.json`&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;suppressionsLocation&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;./config/my-suppressions.json&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;Please see the &lt;a href=&quot;https://eslint.org/docs/latest/use/suppressions#usage-with-the-nodejs-api&quot;&gt;Bulk Suppressions - Usage with the Node.js API&lt;/a&gt; section for more details.&lt;/p&gt;
&lt;h2 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562&quot;&gt;&lt;code&gt;ff4382b&lt;/code&gt;&lt;/a&gt; feat: apply fix for &lt;a href=&quot;https://eslint.org/docs/rules/no-var&quot;&gt;&lt;code&gt;no-var&lt;/code&gt;&lt;/a&gt; in &lt;code&gt;TSModuleBlock&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20638&quot;&gt;#20638&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/0916995b51528872b15ba4fedb24172cf25fcb3f&quot;&gt;&lt;code&gt;0916995&lt;/code&gt;&lt;/a&gt; feat: Implement api support for bulk-suppressions (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20565&quot;&gt;#20565&lt;/a&gt;) (Blake Sager)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2b8824e6be4223980e929a20025602df20d05ea2&quot;&gt;&lt;code&gt;2b8824e&lt;/code&gt;&lt;/a&gt; fix: Prevent &lt;a href=&quot;https://eslint.org/docs/rules/no-var&quot;&gt;&lt;code&gt;no-var&lt;/code&gt;&lt;/a&gt; autofix when a variable is used before declaration (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20464&quot;&gt;#20464&lt;/a&gt;) (Amaresh  S M)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e58b4bff167e79afd067d1b0ee9360bec2d3393e&quot;&gt;&lt;code&gt;e58b4bf&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20597&quot;&gt;#20597&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b7b57fe9942c572ff651230f1f96cefed787ca52&quot;&gt;&lt;code&gt;b7b57fe&lt;/code&gt;&lt;/a&gt; docs: use correct JSDoc link in &lt;a href=&quot;https://eslint.org/docs/rules/require-jsdoc&quot;&gt;&lt;code&gt;require-jsdoc&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20641&quot;&gt;#20641&lt;/a&gt;) (mkemna-clb)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/58e4cfc7dbf0fe40c73f09bf0ff94ad944d0ba0e&quot;&gt;&lt;code&gt;58e4cfc&lt;/code&gt;&lt;/a&gt; docs: add deprecation notice partial (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20639&quot;&gt;#20639&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7143dbf99df27c61edf1552da981794e99a0b2f2&quot;&gt;&lt;code&gt;7143dbf&lt;/code&gt;&lt;/a&gt; docs: update v9 migration guide for &lt;code&gt;@eslint/js&lt;/code&gt; usage (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20540&quot;&gt;#20540&lt;/a&gt;) (fnx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/035fc4fbe506e3e4524882cf50db37a4e430adf4&quot;&gt;&lt;code&gt;035fc4f&lt;/code&gt;&lt;/a&gt; docs: note that &lt;code&gt;globalReturn&lt;/code&gt; applies only with &lt;code&gt;sourceType: &amp;quot;script&amp;quot;&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20630&quot;&gt;#20630&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e972c88ab7474a74191ee99ac2558b00d0427a8a&quot;&gt;&lt;code&gt;e972c88&lt;/code&gt;&lt;/a&gt; docs: merge ESLint option descriptions into type definitions (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20608&quot;&gt;#20608&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7f10d8440137f0cfd75f18f4746ba6a1c621b953&quot;&gt;&lt;code&gt;7f10d84&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/aeed0078ca2f73d4744cc522102178d45b5be64e&quot;&gt;&lt;code&gt;aeed007&lt;/code&gt;&lt;/a&gt; docs: open playground link in new tab (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20602&quot;&gt;#20602&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a0d1a3772679d3d74bb860fc65b5b58678acd452&quot;&gt;&lt;code&gt;a0d1a37&lt;/code&gt;&lt;/a&gt; docs: Add AI Usage Policy (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20510&quot;&gt;#20510&lt;/a&gt;) (Nicholas C. Zakas)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8&quot;&gt;&lt;code&gt;a9f9cce&lt;/code&gt;&lt;/a&gt; chore: update dependency eslint-plugin-unicorn to ^63.0.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20584&quot;&gt;#20584&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb&quot;&gt;&lt;code&gt;1f42bd7&lt;/code&gt;&lt;/a&gt; chore: update &lt;code&gt;prettier&lt;/code&gt; to 3.8.1 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20651&quot;&gt;#20651&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366&quot;&gt;&lt;code&gt;c0a6f4a&lt;/code&gt;&lt;/a&gt; chore: update dependency @eslint/json to ^1.2.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20652&quot;&gt;#20652&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3&quot;&gt;&lt;code&gt;cc43f79&lt;/code&gt;&lt;/a&gt; chore: update dependency c8 to v11 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20650&quot;&gt;#20650&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb&quot;&gt;&lt;code&gt;2ce4635&lt;/code&gt;&lt;/a&gt; chore: update dependency @eslint/json to v1 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20649&quot;&gt;#20649&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b&quot;&gt;&lt;code&gt;f0406ee&lt;/code&gt;&lt;/a&gt; chore: update dependency markdownlint-cli2 to ^0.21.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20646&quot;&gt;#20646&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846&quot;&gt;&lt;code&gt;dbb4c95&lt;/code&gt;&lt;/a&gt; chore: remove trunk (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20478&quot;&gt;#20478&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c672a2a70579fddf1c6ce33dfa712d705726e1c9&quot;&gt;&lt;code&gt;c672a2a&lt;/code&gt;&lt;/a&gt; test: fix CLI test for empty output file (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20640&quot;&gt;#20640&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c7ada2455680036bbfc42fcb1511ff28afe3c587&quot;&gt;&lt;code&gt;c7ada24&lt;/code&gt;&lt;/a&gt; ci: bump pnpm/action-setup from 4.3.0 to 4.4.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20636&quot;&gt;#20636&lt;/a&gt;) (dependabot[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/07c4b8b4a9f49145e60a3448dd57853213ed4de3&quot;&gt;&lt;code&gt;07c4b8b&lt;/code&gt;&lt;/a&gt; test: fix &lt;code&gt;RuleTester&lt;/code&gt; test without test runners (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20631&quot;&gt;#20631&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/079bba7ff17d0a99fdffe32bf991d005ba797fae&quot;&gt;&lt;code&gt;079bba7&lt;/code&gt;&lt;/a&gt; test: Add tests for &lt;code&gt;isValidWithUnicodeFlag&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20601&quot;&gt;#20601&lt;/a&gt;) (Manish chaudhary)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/5885ae66216bcee9310bbf73786b7d7d5774aeaf&quot;&gt;&lt;code&gt;5885ae6&lt;/code&gt;&lt;/a&gt; ci: unpin Node.js 25.x in CI (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20615&quot;&gt;#20615&lt;/a&gt;) (Copilot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f65e5d3c0df65fdb317ad6d23f7ae113c5f4b6d7&quot;&gt;&lt;code&gt;f65e5d3&lt;/code&gt;&lt;/a&gt; chore: update pnpm/action-setup digest to b906aff (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20610&quot;&gt;#20610&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v9.39.4 released</title>
    <link href="https://eslint.org/blog/2026/03/eslint-v9.39.4-released/"/>
    <updated>2026-03-06T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/03/eslint-v9.39.4-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;This release sets the &lt;a href=&quot;https://www.npmjs.com/package/minimatch&quot;&gt;minimatch&lt;/a&gt; dependency version used in ESLint to &lt;code&gt;^3.1.5&lt;/code&gt;. This change avoids a bug in a previous minimatch release that could cause ESLint to not recognize certain files. A transitive dependency on minimatch was also updated to &lt;code&gt;^3.1.5&lt;/code&gt; to include a fix for a recently published security issue.&lt;/p&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f18f6c8ae92a1bcfc558f48c0bd863ea94067459&quot;&gt;&lt;code&gt;f18f6c8&lt;/code&gt;&lt;/a&gt; fix: update dependency minimatch to ^3.1.5 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20564&quot;&gt;#20564&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a3c868f6ef103c1caff9d15f744f9ebd995e872f&quot;&gt;&lt;code&gt;a3c868f&lt;/code&gt;&lt;/a&gt; fix: update dependency @eslint/eslintrc to ^3.3.4 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20554&quot;&gt;#20554&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/234d005da6cd3c924f359e3783fbf565a3c047c3&quot;&gt;&lt;code&gt;234d005&lt;/code&gt;&lt;/a&gt; fix: minimatch security vulnerability patch for v9.x (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20549&quot;&gt;#20549&lt;/a&gt;) (Andrej Beles)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b1b37eecaa033d2e390e1d8f1d6e68d0f5ff3a6a&quot;&gt;&lt;code&gt;b1b37ee&lt;/code&gt;&lt;/a&gt; fix: update &lt;code&gt;ajv&lt;/code&gt; to &lt;code&gt;6.14.0&lt;/code&gt; to address security vulnerabilities (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20538&quot;&gt;#20538&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/46751526037682f8b42abcfb3e06d19213719347&quot;&gt;&lt;code&gt;4675152&lt;/code&gt;&lt;/a&gt; docs: add deprecation notice partial (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20520&quot;&gt;#20520&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b8b4eb15901c1bd6ef40d2589da4ae75795c0f6e&quot;&gt;&lt;code&gt;b8b4eb1&lt;/code&gt;&lt;/a&gt; chore: update dependencies for ESLint v9.39.4 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20596&quot;&gt;#20596&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/71b2f6b628b76157b4a2a296cb969dc56abb296c&quot;&gt;&lt;code&gt;71b2f6b&lt;/code&gt;&lt;/a&gt; chore: package.json update for @eslint/js release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1d16c2fa3998440ae7b0f6e2612935bd6b0ded1d&quot;&gt;&lt;code&gt;1d16c2f&lt;/code&gt;&lt;/a&gt; ci: pin Node.js 25.6.1 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20563&quot;&gt;#20563&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.0.3 released</title>
    <link href="https://eslint.org/blog/2026/03/eslint-v10.0.3-released/"/>
    <updated>2026-03-06T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/03/eslint-v10.0.3-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;This release sets the &lt;a href=&quot;https://www.npmjs.com/package/minimatch&quot;&gt;minimatch&lt;/a&gt; dependency version used in ESLint to &lt;code&gt;^10.2.4&lt;/code&gt;. This change avoids a bug in a previous minimatch release that could cause ESLint to not recognize certain files.&lt;/p&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e511b58d5ecd63a232b87743614867f4eaadbba4&quot;&gt;&lt;code&gt;e511b58&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20595&quot;&gt;#20595&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f4c9cf9b8dc5642de555a09295933464080d722a&quot;&gt;&lt;code&gt;f4c9cf9&lt;/code&gt;&lt;/a&gt; fix: include variable name in &lt;a href=&quot;https://eslint.org/docs/rules/no-useless-assignment&quot;&gt;&lt;code&gt;no-useless-assignment&lt;/code&gt;&lt;/a&gt; message (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20581&quot;&gt;#20581&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ee9ff31cee13712d2be2a6b5c0a4a54449fe9fe1&quot;&gt;&lt;code&gt;ee9ff31&lt;/code&gt;&lt;/a&gt; fix: update dependency minimatch to ^10.2.4 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20562&quot;&gt;#20562&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9fc31b03ef05abfc4f0f449b22947029d51a72f6&quot;&gt;&lt;code&gt;9fc31b0&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4efaa367c62d5a45dd21e246e4a506e11dd51758&quot;&gt;&lt;code&gt;4efaa36&lt;/code&gt;&lt;/a&gt; docs: add info box for &lt;code&gt;eslint-plugin-eslint-comments&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20570&quot;&gt;#20570&lt;/a&gt;) (DesselBane)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/23b2759dd5cd70976ab2e8f4a1cf86ffe4b9f65d&quot;&gt;&lt;code&gt;23b2759&lt;/code&gt;&lt;/a&gt; docs: add v10 migration guide link to Use docs index (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20577&quot;&gt;#20577&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/80259a9b0d9e29596a5ef0e1e5269031636cacdb&quot;&gt;&lt;code&gt;80259a9&lt;/code&gt;&lt;/a&gt; docs: Remove deprecated eslintrc documentation files (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20472&quot;&gt;#20472&lt;/a&gt;) (Copilot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9b9b4baf7f0515d28290464ea754d7e7dc350395&quot;&gt;&lt;code&gt;9b9b4ba&lt;/code&gt;&lt;/a&gt; docs: fix typo in &lt;a href=&quot;https://eslint.org/docs/rules/no-await-in-loop&quot;&gt;no-await-in-loop&lt;/a&gt; documentation (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20575&quot;&gt;#20575&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e7d72a77e5e1277690a505160137aebd5985909a&quot;&gt;&lt;code&gt;e7d72a7&lt;/code&gt;&lt;/a&gt; docs: document TypeScript 5.3 minimum supported version (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20547&quot;&gt;#20547&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ef8fb924bfabc2e239b46b2d7b3c37319b03084e&quot;&gt;&lt;code&gt;ef8fb92&lt;/code&gt;&lt;/a&gt; chore: package.json update for eslint-config-eslint release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e8f21040f675753e92df8e04f2dbd03addb92985&quot;&gt;&lt;code&gt;e8f2104&lt;/code&gt;&lt;/a&gt; chore: updates for v9.39.4 release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/5cd1604cea5734bc235155a1a1add9f08ae83370&quot;&gt;&lt;code&gt;5cd1604&lt;/code&gt;&lt;/a&gt; refactor: simplify isCombiningCharacter helper (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20524&quot;&gt;#20524&lt;/a&gt;) (Huáng Jùnliàng)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/70ff1d07a8e7eba9e70b67ea55fcf2e47cdc9b2d&quot;&gt;&lt;code&gt;70ff1d0&lt;/code&gt;&lt;/a&gt; chore: eslint-config-eslint require Node &lt;code&gt;^20.19.0 || ^22.13.0 || &amp;gt;=24&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20586&quot;&gt;#20586&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e32df71a569d5f4aca13079dedd4ae76ea05168a&quot;&gt;&lt;code&gt;e32df71&lt;/code&gt;&lt;/a&gt; chore: update eslint-plugin-eslint-comments, remove legacy-peer-deps (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20576&quot;&gt;#20576&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/53ca6eeed87262ebddd20636107f486badabcc1f&quot;&gt;&lt;code&gt;53ca6ee&lt;/code&gt;&lt;/a&gt; chore: disable &lt;code&gt;eslint-comments/no-unused-disable&lt;/code&gt; rule (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20578&quot;&gt;#20578&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e1218957452e223af27ace1f9d031ab421aec08f&quot;&gt;&lt;code&gt;e121895&lt;/code&gt;&lt;/a&gt; ci: pin Node.js 25.6.1 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20559&quot;&gt;#20559&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/efc5aef2f9a05f01d5cad53dcb91e7f2c575e295&quot;&gt;&lt;code&gt;efc5aef&lt;/code&gt;&lt;/a&gt; chore: update &lt;code&gt;tsconfig.json&lt;/code&gt; in &lt;code&gt;eslint-config-eslint&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20551&quot;&gt;#20551&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.0.2 released</title>
    <link href="https://eslint.org/blog/2026/02/eslint-v10.0.2-released/"/>
    <updated>2026-02-23T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/02/eslint-v10.0.2-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;This release updates the &lt;code&gt;ajv&lt;/code&gt; dependency to v6.14.0 which includes the fix for a recently published security issue.&lt;/p&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2b723616a4daeacd4605f11b4d087d4a7cae5c74&quot;&gt;&lt;code&gt;2b72361&lt;/code&gt;&lt;/a&gt; fix: update &lt;code&gt;ajv&lt;/code&gt; to &lt;code&gt;6.14.0&lt;/code&gt; to address security vulnerabilities (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20537&quot;&gt;#20537&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/13eeedbbd16218b0da1425b78cb284937fd964ca&quot;&gt;&lt;code&gt;13eeedb&lt;/code&gt;&lt;/a&gt; docs: link rule type explanation to CLI option --fix-type (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20548&quot;&gt;#20548&lt;/a&gt;) (Mike McCready)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/98cbf6ba53a1fb2028d25078c7049a538d0e392c&quot;&gt;&lt;code&gt;98cbf6b&lt;/code&gt;&lt;/a&gt; docs: update migration guide per Program range change (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20534&quot;&gt;#20534&lt;/a&gt;) (Huáng Jùnliàng)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/61a24054411fa56ce74bef554846caa9d8cb01f5&quot;&gt;&lt;code&gt;61a2405&lt;/code&gt;&lt;/a&gt; docs: add missing semicolon in &lt;a href=&quot;https://eslint.org/docs/rules/vars-on-top&quot;&gt;vars-on-top&lt;/a&gt; rule example (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20533&quot;&gt;#20533&lt;/a&gt;) (Abilash)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/951223b29669885643f7854d7c824288ba962d7e&quot;&gt;&lt;code&gt;951223b&lt;/code&gt;&lt;/a&gt; chore: update dependency @eslint/eslintrc to ^3.3.4 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20553&quot;&gt;#20553&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6aa1afe6694f3fd7f82116109a5ef2ad18ece074&quot;&gt;&lt;code&gt;6aa1afe&lt;/code&gt;&lt;/a&gt; chore: update dependency eslint-plugin-jsdoc to ^62.7.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20536&quot;&gt;#20536&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v9.39.3 released</title>
    <link href="https://eslint.org/blog/2026/02/eslint-v9.39.3-released/"/>
    <updated>2026-02-20T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/02/eslint-v9.39.3-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;This version restores TypeScript 4.0 compatibility in types.&lt;/p&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/791bf8d7e76ce7ab8c88cb8982658823da4eff27&quot;&gt;&lt;code&gt;791bf8d&lt;/code&gt;&lt;/a&gt; fix: restore TypeScript 4.0 compatibility in types (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20504&quot;&gt;#20504&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8594a436c22a0167fe3c2c4109bbdb04e519a014&quot;&gt;&lt;code&gt;8594a43&lt;/code&gt;&lt;/a&gt; chore: upgrade @eslint/js@9.39.3 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20529&quot;&gt;#20529&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9ceef92fbd3d1298d9a00483f86897834b88acac&quot;&gt;&lt;code&gt;9ceef92&lt;/code&gt;&lt;/a&gt; chore: package.json update for @eslint/js release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/af498c63b9ca065223a425a85afabdcc8451e69b&quot;&gt;&lt;code&gt;af498c6&lt;/code&gt;&lt;/a&gt; chore: ignore &lt;code&gt;/docs/v9.x&lt;/code&gt; in link checker (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20453&quot;&gt;#20453&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.0.1 released</title>
    <link href="https://eslint.org/blog/2026/02/eslint-v10.0.1-released/"/>
    <updated>2026-02-20T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/02/eslint-v10.0.1-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;This release updates the &lt;code&gt;minimatch&lt;/code&gt; dependency to v10.2.1 which includes the fix for a recently published security issue.&lt;/p&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e&quot;&gt;&lt;code&gt;c87d5bd&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20531&quot;&gt;#20531&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a&quot;&gt;&lt;code&gt;d841001&lt;/code&gt;&lt;/a&gt; fix: update &lt;code&gt;minimatch&lt;/code&gt; to &lt;code&gt;10.2.1&lt;/code&gt; to address security vulnerabilities (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20519&quot;&gt;#20519&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/04c21475b3004904948f02049f2888b401d82c78&quot;&gt;&lt;code&gt;04c2147&lt;/code&gt;&lt;/a&gt; fix: update error message for unused suppressions (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20496&quot;&gt;#20496&lt;/a&gt;) (fnx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/38b089c1726feac0e31a31d47941bd99e29ce003&quot;&gt;&lt;code&gt;38b089c&lt;/code&gt;&lt;/a&gt; fix: update dependency @eslint/config-array to ^0.23.1 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20484&quot;&gt;#20484&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/5b3dbce50a1404a9f118afe810cefeee79388a2a&quot;&gt;&lt;code&gt;5b3dbce&lt;/code&gt;&lt;/a&gt; docs: add AI acknowledgement section to templates (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20431&quot;&gt;#20431&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6f23076037d5879f20fb3be2ef094293b1e8d38c&quot;&gt;&lt;code&gt;6f23076&lt;/code&gt;&lt;/a&gt; docs: toggle nav in no-JS mode (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20476&quot;&gt;#20476&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b69cfb32a16c5d5e9986390d484fae1d21e406f9&quot;&gt;&lt;code&gt;b69cfb3&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e5c281ffd038a3a7a3e5364db0b9378e0ad83020&quot;&gt;&lt;code&gt;e5c281f&lt;/code&gt;&lt;/a&gt; chore: updates for v9.39.3 release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8c3832adb77cd993b4a24891900d5eeaaf093cdc&quot;&gt;&lt;code&gt;8c3832a&lt;/code&gt;&lt;/a&gt; chore: update @typescript-eslint/parser to ^8.56.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20514&quot;&gt;#20514&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8330d238ae6adb68bb6a1c9381e38cfedd990d94&quot;&gt;&lt;code&gt;8330d23&lt;/code&gt;&lt;/a&gt; test: add tests for config-api (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20493&quot;&gt;#20493&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/37d6e91e88fa6a2ca6d8726679096acff21ba6cc&quot;&gt;&lt;code&gt;37d6e91&lt;/code&gt;&lt;/a&gt; chore: remove eslint v10 prereleases from eslint-config-eslint deps (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20494&quot;&gt;#20494&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/da7cd0e79197ad16e17052eef99df141de6dbfb1&quot;&gt;&lt;code&gt;da7cd0e&lt;/code&gt;&lt;/a&gt; refactor: cleanup error message templates (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20479&quot;&gt;#20479&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5&quot;&gt;&lt;code&gt;84fb885&lt;/code&gt;&lt;/a&gt; chore: package.json update for @eslint/js release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d&quot;&gt;&lt;code&gt;1f66734&lt;/code&gt;&lt;/a&gt; chore: add &lt;code&gt;eslint&lt;/code&gt; to &lt;code&gt;peerDependencies&lt;/code&gt; of &lt;code&gt;@eslint/js&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20467&quot;&gt;#20467&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.0.0 released</title>
    <link href="https://eslint.org/blog/2026/02/eslint-v10.0.0-released/"/>
    <updated>2026-02-06T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/02/eslint-v10.0.0-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;ESLint v10.0.0 is a major release that includes several new features and breaking changes. Here are some of the most notable updates.&lt;/p&gt;
&lt;h3 id=&quot;installing&quot; tabindex=&quot;-1&quot;&gt;Installing&lt;/h3&gt;
&lt;p&gt;Because this is a major release, you may not automatically be upgraded by npm. To ensure you are using this version, run:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language- line-numbers-mode&quot;&gt;&lt;code class=&quot;language-&quot;&gt;npm i eslint@10.0.0 --save-dev
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;h3 id=&quot;node.js-%3C-v20.19.0%2C-v21.x%2C-v23.x-no-longer-supported&quot; tabindex=&quot;-1&quot;&gt;Node.js &amp;lt; v20.19.0, v21.x, v23.x no longer supported&lt;/h3&gt;
&lt;p&gt;As of this post, Node.js v24.x is the LTS release, and as such we are dropping support for all versions of Node.js prior to v20.19.0 as well as v21.x and v23.x.&lt;/p&gt;
&lt;h3 id=&quot;migration-guide&quot; tabindex=&quot;-1&quot;&gt;Migration Guide&lt;/h3&gt;
&lt;p&gt;As there are a lot of changes, we’ve created a &lt;a href=&quot;https://eslint.org/docs/latest/use/migrate-to-10.0.0&quot;&gt;migration guide&lt;/a&gt; describing the breaking changes in great detail along with the steps you should take to address them. We expect that most users should be able to upgrade without any build changes, but the migration guide should be a useful resource if you encounter problems.&lt;/p&gt;
&lt;h3 id=&quot;new-configuration-file-lookup-algorithm&quot; tabindex=&quot;-1&quot;&gt;New configuration file lookup algorithm&lt;/h3&gt;
&lt;p&gt;ESLint v10.0.0 locates &lt;code&gt;eslint.config.*&lt;/code&gt; by &lt;a href=&quot;https://github.com/eslint/rfcs/tree/main/designs/2024-config-lookup-from-file&quot;&gt;starting from the directory of each linted file&lt;/a&gt; rather than the current working directory as was the case with ESLint v9.x. The new behavior allows for using multiple configuration files in the same run and can be particularly useful in monorepo setups.&lt;/p&gt;
&lt;p&gt;In ESLint v9.x, this config lookup behavior could be enabled with the &lt;code&gt;v10_config_lookup_from_file&lt;/code&gt; feature flag. In ESLint v10.0.0, this behavior is now the default and the &lt;code&gt;v10_config_lookup_from_file&lt;/code&gt; flag has been removed.&lt;/p&gt;
&lt;h3 id=&quot;removed-eslintrc-functionality&quot; tabindex=&quot;-1&quot;&gt;Removed eslintrc functionality&lt;/h3&gt;
&lt;p&gt;As &lt;a href=&quot;https://eslint.org/blog/2023/10/flat-config-rollout-plans/#eslintrc-removed-in-eslint-v10.0.0&quot;&gt;announced in Flat config rollout plans&lt;/a&gt;, the eslintrc config system has been completely removed in ESLint v10.0.0. Specifically, this means:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;code&gt;ESLINT_USE_FLAT_CONFIG&lt;/code&gt; environment variable is no longer honored.&lt;/li&gt;
&lt;li&gt;The CLI no longer supports eslintrc-specific arguments (&lt;code&gt;--no-eslintrc&lt;/code&gt;, &lt;code&gt;--env&lt;/code&gt;, &lt;code&gt;--resolve-plugins-relative-to&lt;/code&gt;, &lt;code&gt;--rulesdir&lt;/code&gt;, &lt;code&gt;--ignore-path&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.eslintrc.*&lt;/code&gt; and &lt;code&gt;.eslintignore&lt;/code&gt; files will no longer be honored.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/* eslint-env */&lt;/code&gt; comments are reported as errors.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;loadESLint()&lt;/code&gt; function now always returns the &lt;code&gt;ESLint&lt;/code&gt; class.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;Linter&lt;/code&gt; constructor &lt;code&gt;configType&lt;/code&gt; argument can only be &lt;code&gt;&amp;quot;flat&amp;quot;&lt;/code&gt; and will throw an error if &lt;code&gt;&amp;quot;eslintrc&amp;quot;&lt;/code&gt; is passed.&lt;/li&gt;
&lt;li&gt;The following &lt;code&gt;Linter&lt;/code&gt; eslintrc-specific methods are removed:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;defineParser()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;defineRule()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;defineRules()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;getRules()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The following changes to the &lt;code&gt;/use-at-your-own-risk&lt;/code&gt; entrypoint:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LegacyESLint&lt;/code&gt; is removed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FileEnumerator&lt;/code&gt; is removed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shouldUseFlatConfig()&lt;/code&gt; function will always return &lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;jsx-references-are-now-tracked&quot; tabindex=&quot;-1&quot;&gt;JSX references are now tracked&lt;/h3&gt;
&lt;p&gt;ESLint v10.0.0 now tracks JSX references, enabling correct scope analysis of JSX elements.&lt;/p&gt;
&lt;p&gt;Previously, JSX identifiers weren’t tracked as references, which could lead to incorrect results in rules relying on scope information. For example:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language-jsx line-numbers-mode&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Card &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;./card.jsx&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createCard&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Card&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token script language-javascript&quot;&gt;&lt;span class=&quot;token script-punctuation punctuation&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;Prior to v10.0.0:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;False positives&lt;/strong&gt;: &lt;code&gt;&amp;lt;Card&amp;gt;&lt;/code&gt; could be reported as “defined but never used” (&lt;a href=&quot;https://eslint.org/docs/latest/rules/no-unused-vars&quot;&gt;&lt;code&gt;no-unused-vars&lt;/code&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;False negatives&lt;/strong&gt;: Removing the import might not trigger an “undefined variable” error (&lt;a href=&quot;https://eslint.org/docs/latest/rules/no-undef&quot;&gt;&lt;code&gt;no-undef&lt;/code&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Starting with v10.0.0, &lt;code&gt;&amp;lt;Card&amp;gt;&lt;/code&gt; is treated as a normal reference to the variable in scope. This eliminates confusing false positives/negatives, aligns JSX handling with developer expectations, and improves the linting experience in projects using JSX.&lt;/p&gt;
&lt;h3 id=&quot;espree-and-eslint-scope-now-include-types&quot; tabindex=&quot;-1&quot;&gt;Espree and ESLint Scope now include types&lt;/h3&gt;
&lt;p&gt;Beginning with &lt;a href=&quot;https://www.npmjs.com/package/espree/v/11.1.0&quot;&gt;Espree v11.1.0&lt;/a&gt; and &lt;a href=&quot;https://www.npmjs.com/package/eslint-scope/v/9.1.0&quot;&gt;ESLint Scope v9.1.0&lt;/a&gt;, these packages now contain built-in type definitions.&lt;/p&gt;
&lt;p&gt;Previously, type definitions were provided by Definitely Typed packages &lt;code&gt;@types/espree&lt;/code&gt; and &lt;code&gt;@types/eslint-scope&lt;/code&gt;. There are several differences between the old and new type definitions, mostly bug fixes. If your code relies on types for the Espree and ESLint Scope packages, check if there are any updates needed.&lt;/p&gt;
&lt;h3 id=&quot;enhancements-to-ruletester&quot; tabindex=&quot;-1&quot;&gt;Enhancements to &lt;code&gt;RuleTester&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Since its earliest days, ESLint has provided the &lt;a href=&quot;https://eslint.org/docs/latest/integrate/nodejs-api#ruletester&quot;&gt;&lt;code&gt;RuleTester&lt;/code&gt;&lt;/a&gt; API to help plugin authors test their rules against custom test cases and configurations. This release introduces several enhancements to &lt;code&gt;RuleTester&lt;/code&gt; to enforce more robust test definitions and improve debugging.&lt;/p&gt;
&lt;h4 id=&quot;assertion-options&quot; tabindex=&quot;-1&quot;&gt;Assertion options&lt;/h4&gt;
&lt;p&gt;The &lt;a href=&quot;https://eslint.org/docs/latest/integrate/nodejs-api#ruletesterrun&quot;&gt;&lt;code&gt;RuleTester#run()&lt;/code&gt;&lt;/a&gt; method now supports &lt;strong&gt;assertion options&lt;/strong&gt;, specifically &lt;code&gt;requireMessage&lt;/code&gt;, &lt;code&gt;requireLocation&lt;/code&gt;, and &lt;code&gt;requireData&lt;/code&gt;, to let developers enforce stricter requirements in rule tests. These options enforce that every invalid test case explicitly checks violation messages, locations, and data, ensuring that a test fails if it doesn’t meet the requirements.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;requireMessage&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensures every test case includes a message check.&lt;/li&gt;
&lt;li&gt;Accepts:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;true&lt;/code&gt;: Must use an array of objects for &lt;code&gt;errors&lt;/code&gt;, rather than a numeric count shorthand, to check the problems reported by a rule. Each object must include a &lt;code&gt;message&lt;/code&gt; or &lt;code&gt;messageId&lt;/code&gt; property as usual to check the message of a reported problem.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;message&amp;quot;&lt;/code&gt;: Must check using &lt;code&gt;message&lt;/code&gt; only.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;messageId&amp;quot;&lt;/code&gt;: Must check using &lt;code&gt;messageId&lt;/code&gt; only.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Prevents tests from passing without verifying the actual message.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;requireLocation&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensures every test case includes a location check.&lt;/li&gt;
&lt;li&gt;Accepts: &lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Requires &lt;code&gt;line&lt;/code&gt; and &lt;code&gt;column&lt;/code&gt; in each object of the &lt;code&gt;errors&lt;/code&gt; array.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;endLine&lt;/code&gt; and &lt;code&gt;endColumn&lt;/code&gt; are optional if the actual report doesn’t include them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Guarantees that tests validate the location of an error.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;requireData&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensures every test case includes a &lt;code&gt;data&lt;/code&gt; check.&lt;/li&gt;
&lt;li&gt;Accepts: &lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;When set to &lt;code&gt;true&lt;/code&gt;, &lt;code&gt;RuleTester&lt;/code&gt; will require invalid test cases to include a &lt;code&gt;data&lt;/code&gt; object whenever a &lt;code&gt;messageId&lt;/code&gt; references a message with placeholders. This helps ensure that tests remain consistent with rule messages that rely on placeholder substitution.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example Usage:&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language-js line-numbers-mode&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;ruleTester&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;my-rule&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; rule&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;valid&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;code&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;var foo = true;&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;invalid&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;code&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;var invalidVariable = true;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;errors&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Unexpected invalid variable.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;column&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;assertionOptions&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;requireMessage&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;requireLocation&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id=&quot;improved-location-reporting-for-failing-tests&quot; tabindex=&quot;-1&quot;&gt;Improved location reporting for failing tests&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;RuleTester&lt;/code&gt; now decorates stack traces with information that makes it easier to locate failing test cases in your source code. For example, the test output will now include stack trace lines indicating the index of the failing test case in the &lt;code&gt;invalid&lt;/code&gt; array and the file and line number where that test case is defined.&lt;/p&gt;
&lt;p&gt;Note that these line numbers may not always be included, depending on how your tests are structured. When the lines cannot be determined precisely, the failing test index and the printed code snippet are still available to locate the test case.&lt;/p&gt;
&lt;h3 id=&quot;countthis-option-in-max-params-rule&quot; tabindex=&quot;-1&quot;&gt;&lt;code&gt;countThis&lt;/code&gt; option in &lt;code&gt;max-params&lt;/code&gt; rule&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;max-params&lt;/code&gt; rule now supports the new &lt;a href=&quot;https://eslint.org/docs/latest/rules/max-params#countthis-typescript-only&quot;&gt;&lt;code&gt;countThis&lt;/code&gt;&lt;/a&gt; option, which supersedes the deprecated &lt;code&gt;countVoidThis&lt;/code&gt;. With the setting &lt;code&gt;countThis: &amp;quot;never&amp;quot;&lt;/code&gt;, the rule will now ignore any &lt;code&gt;this&lt;/code&gt; annotation in a function’s argument list when counting the number of parameters in a TypeScript function. For example:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language-ts line-numbers-mode&quot;&gt;&lt;code class=&quot;language-ts&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;doSomething&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; SomeType&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; first&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; second&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;number&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
 &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;will be considered a function taking only 2 parameters.&lt;/p&gt;
&lt;h3 id=&quot;color-property-in-formatter-context&quot; tabindex=&quot;-1&quot;&gt;&lt;code&gt;color&lt;/code&gt; property in formatter context&lt;/h3&gt;
&lt;p&gt;When the &lt;a href=&quot;https://eslint.org/docs/next/use/command-line-interface#--color-and---no-color&quot;&gt;&lt;code&gt;--color&lt;/code&gt; or &lt;code&gt;--no-color&lt;/code&gt;&lt;/a&gt; option is specified on the command line, ESLint sets an additional &lt;code&gt;color&lt;/code&gt; property on the context object passed to a formatter (the second argument of the &lt;code&gt;format()&lt;/code&gt; method). This property is &lt;code&gt;true&lt;/code&gt; for &lt;code&gt;--color&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt; for &lt;code&gt;--no-color&lt;/code&gt;. &lt;a href=&quot;https://eslint.org/docs/next/extend/custom-formatters&quot;&gt;Custom formatters&lt;/a&gt; can use this value to determine whether to apply color styling, based on the assumption that the terminal supports or does not support colors as indicated by the option.&lt;/p&gt;
&lt;h3 id=&quot;updated-eslint%3Arecommended&quot; tabindex=&quot;-1&quot;&gt;Updated &lt;code&gt;eslint:recommended&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;eslint:recommended&lt;/code&gt; configuration is &lt;a href=&quot;https://github.com/eslint/eslint/issues/19966&quot;&gt;updated to include new rules&lt;/a&gt; that we feel are important.&lt;/p&gt;
&lt;h3 id=&quot;removed-deprecated-rule-context-members&quot; tabindex=&quot;-1&quot;&gt;Removed deprecated rule &lt;code&gt;context&lt;/code&gt; members&lt;/h3&gt;
&lt;p&gt;The following rule &lt;code&gt;context&lt;/code&gt; members are no longer available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context.getCwd()&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;context.cwd&lt;/code&gt; instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context.getFilename()&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;context.filename&lt;/code&gt; instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context.getPhysicalFilename()&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;context.physicalFilename&lt;/code&gt; instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context.getSourceCode()&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;context.sourceCode&lt;/code&gt; instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context.parserOptions&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;context.languageOptions&lt;/code&gt; or &lt;code&gt;context.languageOptions.parserOptions&lt;/code&gt; instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context.parserPath&lt;/code&gt;&lt;/strong&gt; - No replacement&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;removed-deprecated-sourcecode-methods&quot; tabindex=&quot;-1&quot;&gt;Removed deprecated &lt;code&gt;SourceCode&lt;/code&gt; methods&lt;/h3&gt;
&lt;p&gt;The following &lt;a href=&quot;https://eslint.org/docs/next/extend/custom-rules#accessing-the-source-code&quot;&gt;&lt;code&gt;SourceCode&lt;/code&gt;&lt;/a&gt; methods are no longer available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;getTokenOrCommentBefore()&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;getTokenBefore()&lt;/code&gt; with the &lt;code&gt;{ includeComments: true }&lt;/code&gt; option instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;getTokenOrCommentAfter()&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;getTokenAfter()&lt;/code&gt; with the &lt;code&gt;{ includeComments: true }&lt;/code&gt; option instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;isSpaceBetweenTokens()&lt;/code&gt;&lt;/strong&gt; - Use &lt;code&gt;isSpaceBetween()&lt;/code&gt; instead&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;getJSDocComment()&lt;/code&gt;&lt;/strong&gt; - No replacement&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;program-ast-node-range-spans-entire-source-text&quot; tabindex=&quot;-1&quot;&gt;&lt;code&gt;Program&lt;/code&gt; AST node range spans entire source text&lt;/h3&gt;
&lt;p&gt;Starting with ESLint v10.0.0, &lt;code&gt;Program&lt;/code&gt; AST node’s range &lt;a href=&quot;https://github.com/eslint/js/issues/648&quot;&gt;spans the entire source text&lt;/a&gt;. Previously, leading and trailing comments/whitespace were not included in the range.&lt;/p&gt;
&lt;h3 id=&quot;jiti-%3C-v2.2.0-no-longer-supported&quot; tabindex=&quot;-1&quot;&gt;Jiti &amp;lt; v2.2.0 no longer supported&lt;/h3&gt;
&lt;p&gt;ESLint v10.0.0 &lt;a href=&quot;https://github.com/eslint/eslint/issues/19765&quot;&gt;drops support for &lt;code&gt;jiti&lt;/code&gt; versions prior to 2.2.0&lt;/a&gt; when loading TypeScript configuration files due to known issues that can cause compatibility problems when configurations load certain plugins.&lt;/p&gt;
&lt;h2 id=&quot;breaking-changes&quot; tabindex=&quot;-1&quot;&gt;Breaking Changes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f9e54f43a5e497cdfa179338b431093245cb787b&quot;&gt;&lt;code&gt;f9e54f4&lt;/code&gt;&lt;/a&gt; feat!: estimate rule-tester failure location (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20420&quot;&gt;#20420&lt;/a&gt;) (ST-DDT)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a176319d8ade1a7d9b2d7fb8f038f55a2662325f&quot;&gt;&lt;code&gt;a176319&lt;/code&gt;&lt;/a&gt; feat!: replace &lt;code&gt;chalk&lt;/code&gt; with &lt;code&gt;styleText&lt;/code&gt; and add &lt;code&gt;color&lt;/code&gt; to &lt;code&gt;ResultsMeta&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20227&quot;&gt;#20227&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c7046e6c1e03c4ca0eee4888a1f2eba4c6454f84&quot;&gt;&lt;code&gt;c7046e6&lt;/code&gt;&lt;/a&gt; feat!: enable JSX reference tracking (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20152&quot;&gt;#20152&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/fa31a608901684fbcd9906d1907e66561d16e5aa&quot;&gt;&lt;code&gt;fa31a60&lt;/code&gt;&lt;/a&gt; feat!: add &lt;code&gt;name&lt;/code&gt; to configs (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20015&quot;&gt;#20015&lt;/a&gt;) (Kirk Waiblinger)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3383e7ec9028166cafc8ea7986c2f7498d0049f0&quot;&gt;&lt;code&gt;3383e7e&lt;/code&gt;&lt;/a&gt; fix!: remove deprecated &lt;code&gt;SourceCode&lt;/code&gt; methods (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20137&quot;&gt;#20137&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/501abd0e916a35554c58b7c0365537f1fa3880ce&quot;&gt;&lt;code&gt;501abd0&lt;/code&gt;&lt;/a&gt; feat!: update dependency minimatch to v10 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20246&quot;&gt;#20246&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ca4d3b40085de47561f89656a2207d09946ed45e&quot;&gt;&lt;code&gt;ca4d3b4&lt;/code&gt;&lt;/a&gt; fix!: stricter rule tester assertions for valid test cases (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20125&quot;&gt;#20125&lt;/a&gt;) (唯然)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/96512a66c86402fb0538cdcb6cd30b9073f6bf3b&quot;&gt;&lt;code&gt;96512a6&lt;/code&gt;&lt;/a&gt; fix!: Remove deprecated rule context methods (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20086&quot;&gt;#20086&lt;/a&gt;) (Nicholas C. Zakas)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c69fdacdb2e886b9d965568a397aa8220db3fe90&quot;&gt;&lt;code&gt;c69fdac&lt;/code&gt;&lt;/a&gt; feat!: remove eslintrc support (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20037&quot;&gt;#20037&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/208b5cc34a8374ff81412b5bec2e0800eebfbd04&quot;&gt;&lt;code&gt;208b5cc&lt;/code&gt;&lt;/a&gt; feat!: Use &lt;code&gt;ScopeManager#addGlobals()&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20132&quot;&gt;#20132&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a2ee188ea7a38a0c6155f3d39e2b00e1d0f36e14&quot;&gt;&lt;code&gt;a2ee188&lt;/code&gt;&lt;/a&gt; fix!: add &lt;code&gt;uniqueItems: true&lt;/code&gt; in &lt;a href=&quot;https://eslint.org/docs/rules/no-invalid-regexp&quot;&gt;&lt;code&gt;no-invalid-regexp&lt;/code&gt;&lt;/a&gt; option (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20155&quot;&gt;#20155&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a89059dbf2832d417dd493ee81483227ec44e4ab&quot;&gt;&lt;code&gt;a89059d&lt;/code&gt;&lt;/a&gt; feat!: Program range span entire source text (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20133&quot;&gt;#20133&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/39a6424373d915fa9de0d7b0caba9a4dc3da9b53&quot;&gt;&lt;code&gt;39a6424&lt;/code&gt;&lt;/a&gt; fix!: assert ‘text’ is a string across all RuleFixer methods (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20082&quot;&gt;#20082&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f28fbf846244e043c92b355b224d121b06140b44&quot;&gt;&lt;code&gt;f28fbf8&lt;/code&gt;&lt;/a&gt; fix!: Deprecate &lt;code&gt;&amp;quot;always&amp;quot;&lt;/code&gt; and &lt;code&gt;&amp;quot;as-needed&amp;quot;&lt;/code&gt; options of the &lt;a href=&quot;https://eslint.org/docs/rules/radix&quot;&gt;&lt;code&gt;radix&lt;/code&gt;&lt;/a&gt; rule (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20223&quot;&gt;#20223&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/aa3fb2b233e929b37220be940575f42c280e0b98&quot;&gt;&lt;code&gt;aa3fb2b&lt;/code&gt;&lt;/a&gt; fix!: tighten &lt;a href=&quot;https://eslint.org/docs/rules/func-names&quot;&gt;&lt;code&gt;func-names&lt;/code&gt;&lt;/a&gt; schema (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20119&quot;&gt;#20119&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f6c0ed0311dcfee853367d5068c765d066e6b756&quot;&gt;&lt;code&gt;f6c0ed0&lt;/code&gt;&lt;/a&gt; feat!: report &lt;code&gt;eslint-env&lt;/code&gt; comments as errors (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20128&quot;&gt;#20128&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4bf739fb533e59f7f0a66b65f7bc80be0f37d8db&quot;&gt;&lt;code&gt;4bf739f&lt;/code&gt;&lt;/a&gt; fix!: remove deprecated &lt;code&gt;LintMessage#nodeType&lt;/code&gt; and &lt;code&gt;TestCaseError#type&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20096&quot;&gt;#20096&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/523c076866400670fb2192a3f55dbf7ad3469247&quot;&gt;&lt;code&gt;523c076&lt;/code&gt;&lt;/a&gt; feat!: drop support for jiti &amp;lt; 2.2.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20016&quot;&gt;#20016&lt;/a&gt;) (michael faith)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/454a292c95f34dad232411ddac06408e6383bb64&quot;&gt;&lt;code&gt;454a292&lt;/code&gt;&lt;/a&gt; feat!: update &lt;code&gt;eslint:recommended&lt;/code&gt; configuration (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20210&quot;&gt;#20210&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4f880ee02992e1bf0e96ebaba679985e2d1295f1&quot;&gt;&lt;code&gt;4f880ee&lt;/code&gt;&lt;/a&gt; feat!: remove &lt;code&gt;v10_*&lt;/code&gt; and inactive &lt;code&gt;unstable_*&lt;/code&gt; flags (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20225&quot;&gt;#20225&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f18115c363a4ac7671a4c7f30ee13d57ebba330f&quot;&gt;&lt;code&gt;f18115c&lt;/code&gt;&lt;/a&gt; feat!: &lt;a href=&quot;https://eslint.org/docs/rules/no-shadow-restricted-names&quot;&gt;&lt;code&gt;no-shadow-restricted-names&lt;/code&gt;&lt;/a&gt; report &lt;code&gt;globalThis&lt;/code&gt; by default (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20027&quot;&gt;#20027&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c6358c31fbd3937b92d89be2618ffdf5a774604e&quot;&gt;&lt;code&gt;c6358c3&lt;/code&gt;&lt;/a&gt; feat!: Require Node.js &lt;code&gt;^20.19.0 || ^22.13.0 || &amp;gt;=24&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20160&quot;&gt;#20160&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/bff9091927811497dbf066b0e3b85ecb37d43822&quot;&gt;&lt;code&gt;bff9091&lt;/code&gt;&lt;/a&gt; feat: handle &lt;code&gt;Array.fromAsync&lt;/code&gt; in &lt;a href=&quot;https://eslint.org/docs/rules/array-callback-return&quot;&gt;&lt;code&gt;array-callback-return&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20457&quot;&gt;#20457&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/290c594bb50c439fb71bc75521ee5360daa8c222&quot;&gt;&lt;code&gt;290c594&lt;/code&gt;&lt;/a&gt; feat: add &lt;code&gt;self&lt;/code&gt; to &lt;a href=&quot;https://eslint.org/docs/rules/no-implied-eval&quot;&gt;&lt;code&gt;no-implied-eval&lt;/code&gt;&lt;/a&gt; rule (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20468&quot;&gt;#20468&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/43677de07ebd6e14bfac40a46ad749ba783c45f2&quot;&gt;&lt;code&gt;43677de&lt;/code&gt;&lt;/a&gt; feat: fix handling of function and class expression names in &lt;a href=&quot;https://eslint.org/docs/rules/no-shadow&quot;&gt;&lt;code&gt;no-shadow&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20432&quot;&gt;#20432&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f0cafe5f37e7765e9d8c2751b5f5d33107687009&quot;&gt;&lt;code&gt;f0cafe5&lt;/code&gt;&lt;/a&gt; feat: rule tester add assertion option &lt;code&gt;requireData&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20409&quot;&gt;#20409&lt;/a&gt;) (fnx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f7ab6937e63bc618d326710858f5861a68f80616&quot;&gt;&lt;code&gt;f7ab693&lt;/code&gt;&lt;/a&gt; feat: output RuleTester test case failure index (&lt;a href=&quot;https://github.com/eslint/eslint/issues/19976&quot;&gt;#19976&lt;/a&gt;) (ST-DDT)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7cbcbf9c3c2008deee7d143ae35e668e8ffbccb3&quot;&gt;&lt;code&gt;7cbcbf9&lt;/code&gt;&lt;/a&gt; feat: add &lt;code&gt;countThis&lt;/code&gt; option to &lt;a href=&quot;https://eslint.org/docs/rules/max-params&quot;&gt;&lt;code&gt;max-params&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20236&quot;&gt;#20236&lt;/a&gt;) (Gerkin)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f148a5eaa1e89dd80ade62f0a690186b00b9f6e1&quot;&gt;&lt;code&gt;f148a5e&lt;/code&gt;&lt;/a&gt; feat: add error assertion options (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20247&quot;&gt;#20247&lt;/a&gt;) (ST-DDT)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/09e66549ecada6dcb8c567a60faf044fce049188&quot;&gt;&lt;code&gt;09e6654&lt;/code&gt;&lt;/a&gt; feat: update error loc of &lt;a href=&quot;https://eslint.org/docs/rules/require-yield&quot;&gt;&lt;code&gt;require-yield&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://eslint.org/docs/rules/no-useless-constructor&quot;&gt;&lt;code&gt;no-useless-constructor&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20267&quot;&gt;#20267&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/436b82f3c0a8cfa2fdc17d173e95ea11d5d3ee03&quot;&gt;&lt;code&gt;436b82f&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20473&quot;&gt;#20473&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1d29d22fe302443cec2a11da0816397f94af97ec&quot;&gt;&lt;code&gt;1d29d22&lt;/code&gt;&lt;/a&gt; fix: detect default &lt;code&gt;this&lt;/code&gt; binding in &lt;code&gt;Array.fromAsync&lt;/code&gt; callbacks (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20456&quot;&gt;#20456&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/727451eff55b35d853e0e443d0de58f4550762bf&quot;&gt;&lt;code&gt;727451e&lt;/code&gt;&lt;/a&gt; fix: fix regression of global mode report range in &lt;a href=&quot;https://eslint.org/docs/rules/strict&quot;&gt;&lt;code&gt;strict&lt;/code&gt;&lt;/a&gt; rule (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20462&quot;&gt;#20462&lt;/a&gt;) (ntnyq)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e80485fcd27196fa0b6f6b5c7ac8cf49ad4b079d&quot;&gt;&lt;code&gt;e80485f&lt;/code&gt;&lt;/a&gt; fix: remove fake &lt;code&gt;FlatESLint&lt;/code&gt; and &lt;code&gt;LegacyESLint&lt;/code&gt; exports (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20460&quot;&gt;#20460&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9eeff3bc13813a786b8a4c3815def97c0fb646ef&quot;&gt;&lt;code&gt;9eeff3b&lt;/code&gt;&lt;/a&gt; fix: update esquery (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20423&quot;&gt;#20423&lt;/a&gt;) (cryptnix)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b34b93852d014ebbcf3538d892b55e0216cdf681&quot;&gt;&lt;code&gt;b34b938&lt;/code&gt;&lt;/a&gt; fix: use &lt;code&gt;Error.prepareStackTrace&lt;/code&gt; to estimate failing test location (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20436&quot;&gt;#20436&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/51aab5393b058f7cbed69041a9069b2bd106aabd&quot;&gt;&lt;code&gt;51aab53&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20443&quot;&gt;#20443&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/23490b266276792896a0b7b43c49a1ce87bf8568&quot;&gt;&lt;code&gt;23490b2&lt;/code&gt;&lt;/a&gt; fix: handle space before colon in &lt;code&gt;RuleTester&lt;/code&gt; location estimation (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20433&quot;&gt;#20433&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f244dbf2191267a4cafd08645243624baf3e8c83&quot;&gt;&lt;code&gt;f244dbf&lt;/code&gt;&lt;/a&gt; fix: use &lt;code&gt;MessagePlaceholderData&lt;/code&gt; type from &lt;code&gt;@eslint/core&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20348&quot;&gt;#20348&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/d186f8c0747f14890e86a5a39708b052b391ddaf&quot;&gt;&lt;code&gt;d186f8c&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20427&quot;&gt;#20427&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2332262deb4ef3188b210595896bb0ff552a7e66&quot;&gt;&lt;code&gt;2332262&lt;/code&gt;&lt;/a&gt; fix: error location should not modify error message in RuleTester (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20421&quot;&gt;#20421&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ab99b21a6715dee1035d8f4e6d6841853eb5563f&quot;&gt;&lt;code&gt;ab99b21&lt;/code&gt;&lt;/a&gt; fix: ensure &lt;code&gt;filename&lt;/code&gt; is passed as third argument to &lt;code&gt;verifyAndFix()&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20405&quot;&gt;#20405&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8a60f3bc80ad96c65feeb29886342623c630199c&quot;&gt;&lt;code&gt;8a60f3b&lt;/code&gt;&lt;/a&gt; fix: remove &lt;code&gt;ecmaVersion&lt;/code&gt; and &lt;code&gt;sourceType&lt;/code&gt; from &lt;code&gt;ParserOptions&lt;/code&gt; type (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20415&quot;&gt;#20415&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/eafd727a060131f7fc79b2eb5698d8d27683c3a2&quot;&gt;&lt;code&gt;eafd727&lt;/code&gt;&lt;/a&gt; fix: remove &lt;code&gt;TDZ&lt;/code&gt; scope type (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20231&quot;&gt;#20231&lt;/a&gt;) (jaymarvelz)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/39d1f51680d4fbade16b4d9c07ad61a87ee3b1ea&quot;&gt;&lt;code&gt;39d1f51&lt;/code&gt;&lt;/a&gt; fix: correct &lt;code&gt;Scope&lt;/code&gt; typings (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20404&quot;&gt;#20404&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2bd0f13a92fb373827f16210aa4748d4885fddb1&quot;&gt;&lt;code&gt;2bd0f13&lt;/code&gt;&lt;/a&gt; fix: update &lt;code&gt;verify&lt;/code&gt; and &lt;code&gt;verifyAndFix&lt;/code&gt; types (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20384&quot;&gt;#20384&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ba6ebfa78de0b8522cea5ee80179887e92c6c935&quot;&gt;&lt;code&gt;ba6ebfa&lt;/code&gt;&lt;/a&gt; fix: correct typings for &lt;code&gt;loadESLint()&lt;/code&gt; and &lt;code&gt;shouldUseFlatConfig()&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20393&quot;&gt;#20393&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e7673ae096900330599680efe91f8a199a5c2e59&quot;&gt;&lt;code&gt;e7673ae&lt;/code&gt;&lt;/a&gt; fix: correct RuleTester typings (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20105&quot;&gt;#20105&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/53e95222af8561a8eed282fa9fd44b2f320a3c37&quot;&gt;&lt;code&gt;53e9522&lt;/code&gt;&lt;/a&gt; fix: &lt;a href=&quot;https://eslint.org/docs/rules/strict&quot;&gt;strict&lt;/a&gt; removed formatters check (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20241&quot;&gt;#20241&lt;/a&gt;) (ntnyq)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b017f094d4e53728f8d335b9cf8b16dc074afda3&quot;&gt;&lt;code&gt;b017f09&lt;/code&gt;&lt;/a&gt; fix: correct &lt;code&gt;no-restricted-import&lt;/code&gt; messages (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20374&quot;&gt;#20374&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e978ddaab7e6a3c38b4a2afa721148a6ef38f29a&quot;&gt;&lt;code&gt;e978dda&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4cecf8393ae9af18c4cfd50621115eb23b3d0cb6&quot;&gt;&lt;code&gt;4cecf83&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c79f0ab2e2d242a93b08ff2f6a0712e2ef60b7b8&quot;&gt;&lt;code&gt;c79f0ab&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/773c0527c72c09fb5e63c2036b5cb9783f1f04d3&quot;&gt;&lt;code&gt;773c052&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f2962e46a0e8ee8e04d76e9d899f6a7c73a646f1&quot;&gt;&lt;code&gt;f2962e4&lt;/code&gt;&lt;/a&gt; docs: document &lt;code&gt;meta.docs.frozen&lt;/code&gt; property (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20475&quot;&gt;#20475&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8e94f58bebfd854eed814a39e19dea4e3c3ee4a3&quot;&gt;&lt;code&gt;8e94f58&lt;/code&gt;&lt;/a&gt; docs: fix broken anchor links from gerund heading updates (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20449&quot;&gt;#20449&lt;/a&gt;) (Copilot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/14956543d42ab542f72820f38941d0bcc39a1fbb&quot;&gt;&lt;code&gt;1495654&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/0b8ed5c0aa4222a9b6b185c605cfedaef4662dcb&quot;&gt;&lt;code&gt;0b8ed5c&lt;/code&gt;&lt;/a&gt; docs: document support for &lt;code&gt;:is&lt;/code&gt; selector alias (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20454&quot;&gt;#20454&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1c4b33fe8620dcaafbe6e8f4e9515b624476548c&quot;&gt;&lt;code&gt;1c4b33f&lt;/code&gt;&lt;/a&gt; docs: Document policies about ESM-only dependencies (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20448&quot;&gt;#20448&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3e5d38cdd5712bef50d440585b0f6669a2e9a9b9&quot;&gt;&lt;code&gt;3e5d38c&lt;/code&gt;&lt;/a&gt; docs: add missing indentation space in rule example (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20446&quot;&gt;#20446&lt;/a&gt;) (fnx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/63a0c7c84bf5b12357893ea2bf0482aa3c855bac&quot;&gt;&lt;code&gt;63a0c7c&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/65ed0c94e7cd1e3f882956113228311d8c7b3463&quot;&gt;&lt;code&gt;65ed0c9&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b0e4717d6619ffd02913cf3633b44d8e6953d938&quot;&gt;&lt;code&gt;b0e4717&lt;/code&gt;&lt;/a&gt; docs: [&lt;a href=&quot;https://eslint.org/docs/rules/no-await-in-loop&quot;&gt;no-await-in-loop&lt;/a&gt;] Expand inapplicability (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20363&quot;&gt;#20363&lt;/a&gt;) (Niklas Hambüchen)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/fca421f6a4eecd52f2a7ae5765bd9008f62f9994&quot;&gt;&lt;code&gt;fca421f&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/d925c54f045b2230d3404e8aa18f4e2860a35e1d&quot;&gt;&lt;code&gt;d925c54&lt;/code&gt;&lt;/a&gt; docs: update config syntax in &lt;a href=&quot;https://eslint.org/docs/rules/no-lone-blocks&quot;&gt;&lt;code&gt;no-lone-blocks&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20413&quot;&gt;#20413&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7d5c95f281cb88868f4e09ca07fbbc6394d78c41&quot;&gt;&lt;code&gt;7d5c95f&lt;/code&gt;&lt;/a&gt; docs: remove redundant &lt;code&gt;sourceType: &amp;quot;module&amp;quot;&lt;/code&gt; from rule examples (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20412&quot;&gt;#20412&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/02e7e7126366fc5eeffb713f865d80a759dc14b0&quot;&gt;&lt;code&gt;02e7e71&lt;/code&gt;&lt;/a&gt; docs: correct &lt;code&gt;.mts&lt;/code&gt; glob pattern in files with extensions example (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20403&quot;&gt;#20403&lt;/a&gt;) (Ali Essalihi)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/264b981101a3cf0c12eba200ac64e5523186a89f&quot;&gt;&lt;code&gt;264b981&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/5a4324f38e7ce370038351ef7412dcf8548c105e&quot;&gt;&lt;code&gt;5a4324f&lt;/code&gt;&lt;/a&gt; docs: clarify &lt;code&gt;&amp;quot;local&amp;quot;&lt;/code&gt; option of &lt;a href=&quot;https://eslint.org/docs/rules/no-unused-vars&quot;&gt;&lt;code&gt;no-unused-vars&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20385&quot;&gt;#20385&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e593aa0fd29f51edea787815ffc847aa723ef1f8&quot;&gt;&lt;code&gt;e593aa0&lt;/code&gt;&lt;/a&gt; docs: improve clarity, grammar, and wording in documentation site README (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20370&quot;&gt;#20370&lt;/a&gt;) (Aditya)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3f5062ed5f27eb25414faced2478ae076906874e&quot;&gt;&lt;code&gt;3f5062e&lt;/code&gt;&lt;/a&gt; docs: Add messages property to rule meta documentation (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20361&quot;&gt;#20361&lt;/a&gt;) (Sabya Sachi)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9e5a5c2b6b368cdacd678eabf36b441bd8bb726c&quot;&gt;&lt;code&gt;9e5a5c2&lt;/code&gt;&lt;/a&gt; docs: remove &lt;code&gt;Examples&lt;/code&gt; headings from rule docs (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20364&quot;&gt;#20364&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/194f488a8dc97850485afe704d2a64096582f96d&quot;&gt;&lt;code&gt;194f488&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/0f5a94a84beee19f376025c74f703f275d52c94b&quot;&gt;&lt;code&gt;0f5a94a&lt;/code&gt;&lt;/a&gt; docs: [&lt;a href=&quot;https://eslint.org/docs/rules/class-methods-use-this&quot;&gt;class-methods-use-this&lt;/a&gt;] explain purpose of rule (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20008&quot;&gt;#20008&lt;/a&gt;) (Kirk Waiblinger)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/df5566f826d9f5740546e473aa6876b1f7d2f12c&quot;&gt;&lt;code&gt;df5566f&lt;/code&gt;&lt;/a&gt; docs: add Options section to all rule docs (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20296&quot;&gt;#20296&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/adf7a2b202743a98edc454890574292dd2b34837&quot;&gt;&lt;code&gt;adf7a2b&lt;/code&gt;&lt;/a&gt; docs: &lt;a href=&quot;https://eslint.org/docs/rules/no-unsafe-finally&quot;&gt;no-unsafe-finally&lt;/a&gt; note for generator functions (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20330&quot;&gt;#20330&lt;/a&gt;) (Tom Pereira)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ef7028c9688dc931051a4217637eb971efcbd71b&quot;&gt;&lt;code&gt;ef7028c&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/fbae5d18854b30ea3b696672c7699cef3ec92140&quot;&gt;&lt;code&gt;fbae5d1&lt;/code&gt;&lt;/a&gt; docs: consistently use “v10.0.0” in migration guide (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20328&quot;&gt;#20328&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/778aa2d83e1ef1e2bd1577ee976c5a43472a3dbe&quot;&gt;&lt;code&gt;778aa2d&lt;/code&gt;&lt;/a&gt; docs: ignoring default file patterns (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20312&quot;&gt;#20312&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4b5dbcdae52c1c16293dc68028cab18ed2504841&quot;&gt;&lt;code&gt;4b5dbcd&lt;/code&gt;&lt;/a&gt; docs: reorder v10 migration guide (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20315&quot;&gt;#20315&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/5d84a7371d01ead1b274600c055fe49150d487f1&quot;&gt;&lt;code&gt;5d84a73&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/37c8863088a2d7e845d019f68a329f53a3fe2c35&quot;&gt;&lt;code&gt;37c8863&lt;/code&gt;&lt;/a&gt; docs: fix incorrect anchor link in v10 migration guide (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20299&quot;&gt;#20299&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/077ff028b6ce036da091d2f7ed8c606c9d017468&quot;&gt;&lt;code&gt;077ff02&lt;/code&gt;&lt;/a&gt; docs: add migrate-to-10.0.0 doc (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20143&quot;&gt;#20143&lt;/a&gt;) (唯然)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3822e1b768bb4a64b72b73b5657737a6ee5c8afe&quot;&gt;&lt;code&gt;3822e1b&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;build-related&quot; tabindex=&quot;-1&quot;&gt;Build Related&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9f0871236e90ec78bcdbfa352cc1363b4bae5596&quot;&gt;&lt;code&gt;9f08712&lt;/code&gt;&lt;/a&gt; Build: changelog update for 10.0.0-rc.2 (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1e2c449701524b426022fde19144b1d22d8197b0&quot;&gt;&lt;code&gt;1e2c449&lt;/code&gt;&lt;/a&gt; Build: changelog update for 10.0.0-rc.1 (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c4c72a8d996dda629e85e78a6ef5417242594b5d&quot;&gt;&lt;code&gt;c4c72a8&lt;/code&gt;&lt;/a&gt; Build: changelog update for 10.0.0-rc.0 (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7e4daf93d255ed343d68e999aad167bb20e5a96b&quot;&gt;&lt;code&gt;7e4daf9&lt;/code&gt;&lt;/a&gt; Build: changelog update for 10.0.0-beta.0 (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a126a2ab136406017f2dac2d7632114e37e62dc2&quot;&gt;&lt;code&gt;a126a2a&lt;/code&gt;&lt;/a&gt; build: add .scss files entry to knip (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20389&quot;&gt;#20389&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f5c01932f69189b260646d60b28011c55870e65d&quot;&gt;&lt;code&gt;f5c0193&lt;/code&gt;&lt;/a&gt; Build: changelog update for 10.0.0-alpha.1 (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/165326f0469dd6a9b33598a6fceb66336bb2deb5&quot;&gt;&lt;code&gt;165326f&lt;/code&gt;&lt;/a&gt; Build: changelog update for 10.0.0-alpha.0 (Jenkins)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1ece282c2286b5dc187ece2a793dbd8798f20bd7&quot;&gt;&lt;code&gt;1ece282&lt;/code&gt;&lt;/a&gt; chore: ignore &lt;code&gt;/docs/v9.x&lt;/code&gt; in link checker (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20452&quot;&gt;#20452&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/034e1397446205e83eb341354605380195c88633&quot;&gt;&lt;code&gt;034e139&lt;/code&gt;&lt;/a&gt; ci: add type integration test for &lt;code&gt;@html-eslint/eslint-plugin&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20345&quot;&gt;#20345&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f3fbc2f60cbe2c718364feb8c3fc0452c0df3c56&quot;&gt;&lt;code&gt;f3fbc2f&lt;/code&gt;&lt;/a&gt; chore: set &lt;code&gt;@eslint/js&lt;/code&gt; version to 10.0.0 to skip releasing it (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20466&quot;&gt;#20466&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/afc06817bbd0625c7b0a46bdc81c38dab0c99441&quot;&gt;&lt;code&gt;afc0681&lt;/code&gt;&lt;/a&gt; chore: remove scopeManager.addGlobals patch for typescript-eslint parser (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20461&quot;&gt;#20461&lt;/a&gt;) (fnx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3e5a173053fe0bb3d0f29aff12eb2c19ae21aa36&quot;&gt;&lt;code&gt;3e5a173&lt;/code&gt;&lt;/a&gt; refactor: use types from &lt;code&gt;@eslint/plugin-kit&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20435&quot;&gt;#20435&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/11644b1dc2bdf4c4f3a97901932e5f25c9f60775&quot;&gt;&lt;code&gt;11644b1&lt;/code&gt;&lt;/a&gt; ci: rename workflows (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20463&quot;&gt;#20463&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2d14173729ae75fe562430dd5e37c457f44bc7ac&quot;&gt;&lt;code&gt;2d14173&lt;/code&gt;&lt;/a&gt; chore: fix typos in docs and comments (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20458&quot;&gt;#20458&lt;/a&gt;) (o-m12a)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6742f927ba6afb1bce6f64b9b072a1a11dbf53c4&quot;&gt;&lt;code&gt;6742f92&lt;/code&gt;&lt;/a&gt; test: add endLine/endColumn to invalid test case in &lt;a href=&quot;https://eslint.org/docs/rules/no-alert&quot;&gt;no-alert&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20441&quot;&gt;#20441&lt;/a&gt;) (경하)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3e22c82a87f44f7407ff75b17b26f1ceed3edd14&quot;&gt;&lt;code&gt;3e22c82&lt;/code&gt;&lt;/a&gt; test: add missing location data to &lt;a href=&quot;https://eslint.org/docs/rules/no-template-curly-in-string&quot;&gt;no-template-curly-in-string&lt;/a&gt; tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20440&quot;&gt;#20440&lt;/a&gt;) (Haeun Kim)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b4b3127f8542c599ce2dea804b6582ebc40c993d&quot;&gt;&lt;code&gt;b4b3127&lt;/code&gt;&lt;/a&gt; chore: package.json update for @eslint/js release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f6584191cb5cabd62f6a197339a91e1f9b3f8432&quot;&gt;&lt;code&gt;f658419&lt;/code&gt;&lt;/a&gt; refactor: remove &lt;code&gt;raw&lt;/code&gt; parser option from JS language (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20416&quot;&gt;#20416&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2c3efb728b294b74a240ec24c7be8137a31cf5f0&quot;&gt;&lt;code&gt;2c3efb7&lt;/code&gt;&lt;/a&gt; chore: remove &lt;code&gt;category&lt;/code&gt; from type test fixtures (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20417&quot;&gt;#20417&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/36193fd9ad27764d8e4a24ce7c7bbeeaf5d4a6ba&quot;&gt;&lt;code&gt;36193fd&lt;/code&gt;&lt;/a&gt; chore: remove &lt;code&gt;category&lt;/code&gt; from formatter test fixtures (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20418&quot;&gt;#20418&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e8d203b0d9f66e55841863f90d215fd83b7eee0f&quot;&gt;&lt;code&gt;e8d203b&lt;/code&gt;&lt;/a&gt; chore: add JSX language tag validation to &lt;code&gt;check-rule-examples&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20414&quot;&gt;#20414&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/bc465a1e9d955b6e53a45d1b5da7c632dae77262&quot;&gt;&lt;code&gt;bc465a1&lt;/code&gt;&lt;/a&gt; chore: pin dependencies (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20397&quot;&gt;#20397&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/703f0f551daea28767e5a68a00e335928919a7ff&quot;&gt;&lt;code&gt;703f0f5&lt;/code&gt;&lt;/a&gt; test: replace deprecated rules in &lt;code&gt;linter&lt;/code&gt; tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20406&quot;&gt;#20406&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ba71baa87265888b582f314163df1d727441e2f1&quot;&gt;&lt;code&gt;ba71baa&lt;/code&gt;&lt;/a&gt; test: enable &lt;a href=&quot;https://eslint.org/docs/rules/strict&quot;&gt;&lt;code&gt;strict&lt;/code&gt;&lt;/a&gt; mode in type tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20398&quot;&gt;#20398&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f9c49683a6d69ff0b5425803955fc226f7e05d76&quot;&gt;&lt;code&gt;f9c4968&lt;/code&gt;&lt;/a&gt; refactor: remove &lt;code&gt;lib/linter/rules.js&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20399&quot;&gt;#20399&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6f1c48e5e7f8195f7796ea04e756841391ada927&quot;&gt;&lt;code&gt;6f1c48e&lt;/code&gt;&lt;/a&gt; chore: updates for v9.39.2 release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/54bf0a3646265060f5f22faef71ec840d630c701&quot;&gt;&lt;code&gt;54bf0a3&lt;/code&gt;&lt;/a&gt; ci: create package manager test (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20392&quot;&gt;#20392&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3115021439490d1ed12da5804902ebbf8a5e574b&quot;&gt;&lt;code&gt;3115021&lt;/code&gt;&lt;/a&gt; refactor: simplify JSDoc comment detection logic (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20360&quot;&gt;#20360&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4345b172a81e1394579ec09df51ba460b956c3b5&quot;&gt;&lt;code&gt;4345b17&lt;/code&gt;&lt;/a&gt; chore: update &lt;code&gt;@eslint-community/regexpp&lt;/code&gt; to &lt;code&gt;4.12.2&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20366&quot;&gt;#20366&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/772c9ee9b65b6ad0be3e46462a7f93c37578cfa8&quot;&gt;&lt;code&gt;772c9ee&lt;/code&gt;&lt;/a&gt; chore: update dependency @eslint/eslintrc to ^3.3.3 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20359&quot;&gt;#20359&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/0b14059491d830a49b3577931f4f68fbcfce6be5&quot;&gt;&lt;code&gt;0b14059&lt;/code&gt;&lt;/a&gt; chore: package.json update for @eslint/js release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/d6e7bf3064be01d159d6856e3718672c6a97a8e1&quot;&gt;&lt;code&gt;d6e7bf3&lt;/code&gt;&lt;/a&gt; ci: bump actions/checkout from 5 to 6 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20350&quot;&gt;#20350&lt;/a&gt;) (dependabot[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/139d4567d4afe3f1e1cdae21769d5e868f90ef0d&quot;&gt;&lt;code&gt;139d456&lt;/code&gt;&lt;/a&gt; chore: require mandatory headers in rule docs (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20347&quot;&gt;#20347&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3b0289c7b605b2d94fe2d0c347d07eea4b6ba1d4&quot;&gt;&lt;code&gt;3b0289c&lt;/code&gt;&lt;/a&gt; chore: remove unused &lt;code&gt;.eslintignore&lt;/code&gt; and test fixtures (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20316&quot;&gt;#20316&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a463e7bea0d18af55e5557e33691e4b0685d9523&quot;&gt;&lt;code&gt;a463e7b&lt;/code&gt;&lt;/a&gt; chore: update dependency js-yaml to v4 [security] (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20319&quot;&gt;#20319&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/ebfe90533d07a7020a5c63b93763fe537120f61f&quot;&gt;&lt;code&gt;ebfe905&lt;/code&gt;&lt;/a&gt; chore: remove redundant rules from eslint-config-eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20327&quot;&gt;#20327&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/88dfdb23ee541de4e9c3aa5d8a152c5980f6cc3f&quot;&gt;&lt;code&gt;88dfdb2&lt;/code&gt;&lt;/a&gt; test: add regression tests for message placeholder interpolation (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20318&quot;&gt;#20318&lt;/a&gt;) (fnx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6ed0f758ff460b7a182c8d16b0487ae707e43cc9&quot;&gt;&lt;code&gt;6ed0f75&lt;/code&gt;&lt;/a&gt; chore: skip type checking in &lt;code&gt;eslint-config-eslint&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20323&quot;&gt;#20323&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1e2cad5f6fa47ed6ed89d2a29798dda926d50990&quot;&gt;&lt;code&gt;1e2cad5&lt;/code&gt;&lt;/a&gt; chore: package.json update for @eslint/js release (Jenkins)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9da26798483270a2c3c490c41cbd8f0c28edf75a&quot;&gt;&lt;code&gt;9da2679&lt;/code&gt;&lt;/a&gt; chore: update &lt;code&gt;@eslint/*&lt;/code&gt; dependencies (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20321&quot;&gt;#20321&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/043979418161e1c17becef31b1dd5c6e1b031e98&quot;&gt;&lt;code&gt;0439794&lt;/code&gt;&lt;/a&gt; refactor: use types from @eslint/core (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20235&quot;&gt;#20235&lt;/a&gt;) (jaymarvelz)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/cb51ec2d6d3b729bf02a5e6b58b236578c6cce42&quot;&gt;&lt;code&gt;cb51ec2&lt;/code&gt;&lt;/a&gt; test: cleanup &lt;code&gt;SourceCode#traverse&lt;/code&gt; tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20289&quot;&gt;#20289&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/897a3471d6da073c1a179fa84f7a3fe72973ec45&quot;&gt;&lt;code&gt;897a347&lt;/code&gt;&lt;/a&gt; chore: remove restriction for &lt;code&gt;type&lt;/code&gt; in rule tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20305&quot;&gt;#20305&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/d9720988579734da7323fbacca4c67058651d6ff&quot;&gt;&lt;code&gt;d972098&lt;/code&gt;&lt;/a&gt; chore: ignore prettier updates in renovate to keep in sync with trunk (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20304&quot;&gt;#20304&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a0863593872fe01b5dd0e04c682450c26ae40ac8&quot;&gt;&lt;code&gt;a086359&lt;/code&gt;&lt;/a&gt; chore: remove redundant &lt;code&gt;fast-glob&lt;/code&gt; dev-dependency (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20301&quot;&gt;#20301&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/564b30215c3c1aba47bc29f948f11db5c824cacd&quot;&gt;&lt;code&gt;564b302&lt;/code&gt;&lt;/a&gt; chore: install &lt;code&gt;prettier&lt;/code&gt; as a dev dependency (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20302&quot;&gt;#20302&lt;/a&gt;) (michael faith)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8257b5729d6a26f88b079aa389df4ecea4451a80&quot;&gt;&lt;code&gt;8257b57&lt;/code&gt;&lt;/a&gt; refactor: correct regex for &lt;code&gt;eslint-plugin/report-message-format&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20300&quot;&gt;#20300&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e2516713bc9ae62117da3f490d9cb6a9676f44fe&quot;&gt;&lt;code&gt;e251671&lt;/code&gt;&lt;/a&gt; refactor: extract assertions in RuleTester (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20135&quot;&gt;#20135&lt;/a&gt;) (唯然)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2e7f25e18908e66d9bd1a4dc016709e39e19a24d&quot;&gt;&lt;code&gt;2e7f25e&lt;/code&gt;&lt;/a&gt; chore: add &lt;code&gt;legacy-peer-deps&lt;/code&gt; to &lt;code&gt;.npmrc&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20281&quot;&gt;#20281&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/39c638a9aeb7ddc353684d536bbf69d1d39380bd&quot;&gt;&lt;code&gt;39c638a&lt;/code&gt;&lt;/a&gt; chore: update eslint-config-eslint dependencies for v10 prereleases (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20278&quot;&gt;#20278&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8533b3fa281e6ecc481083ee83e9c34cae22f31c&quot;&gt;&lt;code&gt;8533b3f&lt;/code&gt;&lt;/a&gt; chore: update dependency @eslint/json to ^0.14.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20288&quot;&gt;#20288&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/796ddf6db5c8fe3e098aa3198128f8ce3c58f8e0&quot;&gt;&lt;code&gt;796ddf6&lt;/code&gt;&lt;/a&gt; chore: update dependency @eslint/js to ^9.39.1 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20285&quot;&gt;#20285&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.0.0-rc.2 released</title>
    <link href="https://eslint.org/blog/2026/01/eslint-v10.0.0-rc.2-released/"/>
    <updated>2026-01-27T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/01/eslint-v10.0.0-rc.2-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;This version of ESLint is not ready for production use and is provided to gather feedback from the community before releasing the final version. Please let us know if you have any problems or feedback by creating issues on our &lt;a href=&quot;https://github.com/eslint/eslint&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note that this prerelease version of ESLint has a &lt;a href=&quot;https://eslint.org/docs/next/&quot;&gt;separate documentation section&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;notable-bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Notable bug fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;a href=&quot;https://github.com/eslint/eslint/issues/20451&quot;&gt;regression&lt;/a&gt; in the core &lt;a href=&quot;https://eslint.org/docs/next/rules/strict&quot;&gt;&lt;code&gt;strict&lt;/code&gt;&lt;/a&gt; rule has been fixed.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LegacyESLint&lt;/code&gt; and &lt;code&gt;FlatESLint&lt;/code&gt; exports are now completely removed from the &lt;code&gt;/use-at-your-own-risk&lt;/code&gt; entrypoint. In previous prerelease versions of ESLint v10, they were exported as &lt;code&gt;null&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;installing&quot; tabindex=&quot;-1&quot;&gt;Installing&lt;/h3&gt;
&lt;p&gt;Since this is a pre-release version, you will not automatically be upgraded by npm. You must specify the &lt;code&gt;next&lt;/code&gt; tag when installing:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language- line-numbers-mode&quot;&gt;&lt;code class=&quot;language-&quot;&gt;npm i eslint@next --save-dev
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;You can also specify the version directly:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language- line-numbers-mode&quot;&gt;&lt;code class=&quot;language-&quot;&gt;npm i eslint@10.0.0-rc.2 --save-dev
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;h3 id=&quot;migration-guide&quot; tabindex=&quot;-1&quot;&gt;Migration Guide&lt;/h3&gt;
&lt;p&gt;As there are a lot of changes, we’ve created a &lt;a href=&quot;https://eslint.org/docs/next/use/migrate-to-10.0.0&quot;&gt;migration guide&lt;/a&gt; describing the breaking changes in great detail along with the steps you should take to address them. We expect that most users should be able to upgrade without any build changes, but the migration guide should be a useful resource if you encounter problems.&lt;/p&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/727451eff55b35d853e0e443d0de58f4550762bf&quot;&gt;&lt;code&gt;727451e&lt;/code&gt;&lt;/a&gt; fix: fix regression of global mode report range in &lt;a href=&quot;https://eslint.org/docs/rules/strict&quot;&gt;&lt;code&gt;strict&lt;/code&gt;&lt;/a&gt; rule (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20462&quot;&gt;#20462&lt;/a&gt;) (ntnyq)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e80485fcd27196fa0b6f6b5c7ac8cf49ad4b079d&quot;&gt;&lt;code&gt;e80485f&lt;/code&gt;&lt;/a&gt; fix: remove fake &lt;code&gt;FlatESLint&lt;/code&gt; and &lt;code&gt;LegacyESLint&lt;/code&gt; exports (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20460&quot;&gt;#20460&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9eeff3bc13813a786b8a4c3815def97c0fb646ef&quot;&gt;&lt;code&gt;9eeff3b&lt;/code&gt;&lt;/a&gt; fix: update esquery (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20423&quot;&gt;#20423&lt;/a&gt;) (cryptnix)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/14956543d42ab542f72820f38941d0bcc39a1fbb&quot;&gt;&lt;code&gt;1495654&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/0b8ed5c0aa4222a9b6b185c605cfedaef4662dcb&quot;&gt;&lt;code&gt;0b8ed5c&lt;/code&gt;&lt;/a&gt; docs: document support for &lt;code&gt;:is&lt;/code&gt; selector alias (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20454&quot;&gt;#20454&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1c4b33fe8620dcaafbe6e8f4e9515b624476548c&quot;&gt;&lt;code&gt;1c4b33f&lt;/code&gt;&lt;/a&gt; docs: Document policies about ESM-only dependencies (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20448&quot;&gt;#20448&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2d14173729ae75fe562430dd5e37c457f44bc7ac&quot;&gt;&lt;code&gt;2d14173&lt;/code&gt;&lt;/a&gt; chore: fix typos in docs and comments (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20458&quot;&gt;#20458&lt;/a&gt;) (o-m12a)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.0.0-rc.1 released</title>
    <link href="https://eslint.org/blog/2026/01/eslint-v10.0.0-rc.1-released/"/>
    <updated>2026-01-23T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/01/eslint-v10.0.0-rc.1-released/</id>
    <content type="html">&lt;h2 id=&quot;highlights&quot; tabindex=&quot;-1&quot;&gt;Highlights&lt;/h2&gt;
&lt;p&gt;This version of ESLint is not ready for production use and is provided to gather feedback from the community before releasing the final version. Please let us know if you have any problems or feedback by creating issues on our &lt;a href=&quot;https://github.com/eslint/eslint&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note that this prerelease version of ESLint has a &lt;a href=&quot;https://eslint.org/docs/next/&quot;&gt;separate documentation section&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;espree-and-eslint-scope-now-include-types&quot; tabindex=&quot;-1&quot;&gt;Espree and ESLint Scope now include types&lt;/h3&gt;
&lt;p&gt;Beginning with &lt;a href=&quot;https://www.npmjs.com/package/espree/v/11.1.0&quot;&gt;Espree v11.1.0&lt;/a&gt; and &lt;a href=&quot;https://www.npmjs.com/package/eslint-scope/v/9.1.0&quot;&gt;ESLint Scope v9.1.0&lt;/a&gt;, these packages now contain built-in type definitions.&lt;/p&gt;
&lt;p&gt;Previously, type definitions were provided by Definitely Typed packages &lt;code&gt;@types/espree&lt;/code&gt; and &lt;code&gt;@types/eslint-scope&lt;/code&gt;. There are several differences between the old and new type definitions, mostly bug fixes. If your code relies on types for the Espree and ESLint Scope packages, check if there are any updates needed.&lt;/p&gt;
&lt;h3 id=&quot;installing&quot; tabindex=&quot;-1&quot;&gt;Installing&lt;/h3&gt;
&lt;p&gt;Since this is a pre-release version, you will not automatically be upgraded by npm. You must specify the &lt;code&gt;next&lt;/code&gt; tag when installing:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language- line-numbers-mode&quot;&gt;&lt;code class=&quot;language-&quot;&gt;npm i eslint@next --save-dev
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;You can also specify the version directly:&lt;/p&gt;

&lt;div class=&quot;code-wrapper&quot;&gt;
    &lt;pre class=&quot;language- line-numbers-mode&quot;&gt;&lt;code class=&quot;language-&quot;&gt;npm i eslint@10.0.0-rc.1 --save-dev
&lt;/code&gt;&lt;div class=&quot;line-numbers-wrapper&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;
    &lt;button class=&quot;copy-btn&quot; aria-labelledby=&quot;copy-button-label&quot;&gt;
        &lt;span hidden=&quot;&quot; id=&quot;copy-button-label&quot;&gt;Copy code to clipboard&lt;/span&gt;
        &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; role=&quot;img&quot; aria-label=&quot;copy&quot; fill=&quot;none&quot; focusable=&quot;false&quot;&gt;
            &lt;path d=&quot;M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.66667&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;
        &lt;/svg&gt;
    &lt;/button&gt;
&lt;/div&gt;
&lt;h3 id=&quot;migration-guide&quot; tabindex=&quot;-1&quot;&gt;Migration Guide&lt;/h3&gt;
&lt;p&gt;As there are a lot of changes, we’ve created a &lt;a href=&quot;https://eslint.org/docs/next/use/migrate-to-10.0.0&quot;&gt;migration guide&lt;/a&gt; describing the breaking changes in great detail along with the steps you should take to address them. We expect that most users should be able to upgrade without any build changes, but the migration guide should be a useful resource if you encounter problems.&lt;/p&gt;
&lt;h2 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/43677de07ebd6e14bfac40a46ad749ba783c45f2&quot;&gt;&lt;code&gt;43677de&lt;/code&gt;&lt;/a&gt; feat: fix handling of function and class expression names in &lt;a href=&quot;https://eslint.org/docs/rules/no-shadow&quot;&gt;&lt;code&gt;no-shadow&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20432&quot;&gt;#20432&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bug-fixes&quot; tabindex=&quot;-1&quot;&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b34b93852d014ebbcf3538d892b55e0216cdf681&quot;&gt;&lt;code&gt;b34b938&lt;/code&gt;&lt;/a&gt; fix: use &lt;code&gt;Error.prepareStackTrace&lt;/code&gt; to estimate failing test location (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20436&quot;&gt;#20436&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/51aab5393b058f7cbed69041a9069b2bd106aabd&quot;&gt;&lt;code&gt;51aab53&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20443&quot;&gt;#20443&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/23490b266276792896a0b7b43c49a1ce87bf8568&quot;&gt;&lt;code&gt;23490b2&lt;/code&gt;&lt;/a&gt; fix: handle space before colon in &lt;code&gt;RuleTester&lt;/code&gt; location estimation (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20433&quot;&gt;#20433&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f244dbf2191267a4cafd08645243624baf3e8c83&quot;&gt;&lt;code&gt;f244dbf&lt;/code&gt;&lt;/a&gt; fix: use &lt;code&gt;MessagePlaceholderData&lt;/code&gt; type from &lt;code&gt;@eslint/core&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20348&quot;&gt;#20348&lt;/a&gt;) (루밀LuMir)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;documentation&quot; tabindex=&quot;-1&quot;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3e5d38cdd5712bef50d440585b0f6669a2e9a9b9&quot;&gt;&lt;code&gt;3e5d38c&lt;/code&gt;&lt;/a&gt; docs: add missing indentation space in rule example (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20446&quot;&gt;#20446&lt;/a&gt;) (fnx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/63a0c7c84bf5b12357893ea2bf0482aa3c855bac&quot;&gt;&lt;code&gt;63a0c7c&lt;/code&gt;&lt;/a&gt; docs: Update README (GitHub Actions Bot)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;chores&quot; tabindex=&quot;-1&quot;&gt;Chores&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6742f927ba6afb1bce6f64b9b072a1a11dbf53c4&quot;&gt;&lt;code&gt;6742f92&lt;/code&gt;&lt;/a&gt; test: add endLine/endColumn to invalid test case in &lt;a href=&quot;https://eslint.org/docs/rules/no-alert&quot;&gt;no-alert&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20441&quot;&gt;#20441&lt;/a&gt;) (경하)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3e22c82a87f44f7407ff75b17b26f1ceed3edd14&quot;&gt;&lt;code&gt;3e22c82&lt;/code&gt;&lt;/a&gt; test: add missing location data to &lt;a href=&quot;https://eslint.org/docs/rules/no-template-curly-in-string&quot;&gt;no-template-curly-in-string&lt;/a&gt; tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20440&quot;&gt;#20440&lt;/a&gt;) (Haeun Kim)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
</feed>
