<?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-05-15T00:00:00Z</updated>
  <id>https://eslint.org/</id>
  <author>
    <name>ESLint</name>
    <email></email>
  </author>
  
  <entry>
    <title>ESLint v10.4.0 released</title>
    <link href="https://eslint.org/blog/2026/05/eslint-v10.4.0-released/"/>
    <updated>2026-05-15T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/05/eslint-v10.4.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;new-includeignorefile()-helper&quot; tabindex=&quot;-1&quot;&gt;New &lt;code&gt;includeIgnoreFile()&lt;/code&gt; helper&lt;/h3&gt;
&lt;p&gt;This release introduces the &lt;code&gt;includeIgnoreFile()&lt;/code&gt; helper for configuration files that allows for including patterns from &lt;code&gt;.gitignore&lt;/code&gt; files or any other files with gitignore-style patterns.&lt;/p&gt;
&lt;p&gt;Previously available in the external package &lt;code&gt;@eslint/compat&lt;/code&gt;, the new &lt;code&gt;includeIgnoreFile&lt;/code&gt; helper function is exported from the &lt;code&gt;eslint/config&lt;/code&gt; entrypoint and provides an extended API that allows multiple files to be included and patterns to be interpreted relative to the location of those files, which is a common use case for nested &lt;code&gt;.gitignore&lt;/code&gt; files.&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.config.js&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; defineConfig&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; includeIgnoreFile &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;eslint/config&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; fileURLToPath &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;node:url&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; rootGitignorePath &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fileURLToPath&lt;/span&gt;&lt;span class=&quot;token punctuation&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;URL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.gitignore&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;meta&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;url&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 keyword&quot;&gt;const&lt;/span&gt; nestedGitignorePath &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fileURLToPath&lt;/span&gt;&lt;span class=&quot;token punctuation&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;URL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;some/other/folder/.gitignore&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;meta&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;url&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 keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;defineConfig&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;includeIgnoreFile&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;rootGitignorePath&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; nestedGitignorePath&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;// option to interpret patterns relative to the locations of the specified files&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;gitignoreResolution&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;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// your overrides&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;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;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;line-number&quot;&gt;21&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/configure/ignore#include-gitignore-files&quot;&gt;Include &lt;code&gt;.gitignore&lt;/code&gt; Files&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/1a45ec596af1dd5f880e6874cb8f24dafb6a7ecf&quot;&gt;&lt;code&gt;1a45ec5&lt;/code&gt;&lt;/a&gt; feat: check sequence expressions in &lt;a href=&quot;https://eslint.org/docs/rules/for-direction&quot;&gt;&lt;code&gt;for-direction&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20701&quot;&gt;#20701&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/450040bd89b989b3531824c6be45feb5fe3d936b&quot;&gt;&lt;code&gt;450040b&lt;/code&gt;&lt;/a&gt; feat: add &lt;code&gt;includeIgnoreFile()&lt;/code&gt; to &lt;code&gt;eslint/config&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20735&quot;&gt;#20735&lt;/a&gt;) (Kirk Waiblinger)&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/544c0c3da589166ad8e5d634f35d3d06701c57be&quot;&gt;&lt;code&gt;544c0c3&lt;/code&gt;&lt;/a&gt; fix: escape code path DOT labels in debug output (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20866&quot;&gt;#20866&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6799431203f2579632d0870f98ba132067f4040c&quot;&gt;&lt;code&gt;6799431&lt;/code&gt;&lt;/a&gt; fix: update dependency @eslint/config-helpers to ^0.6.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20850&quot;&gt;#20850&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f078fef5005dceb14fc162aab7c7200e027688dd&quot;&gt;&lt;code&gt;f078fef&lt;/code&gt;&lt;/a&gt; fix: handle non-array deprecated rule replacements (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20825&quot;&gt;#20825&lt;/a&gt;) (xbinaryx)&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/7e52a7151fb92eec0e0f67fe4e5ddbd1ccce796f&quot;&gt;&lt;code&gt;7e52a71&lt;/code&gt;&lt;/a&gt; docs: add mention of &lt;code&gt;@eslint-react/eslint-plugin&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20869&quot;&gt;#20869&lt;/a&gt;) (Pavel)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/db3468ba746407d7f286f18f7ea9db6df0e3bc08&quot;&gt;&lt;code&gt;db3468b&lt;/code&gt;&lt;/a&gt; docs: tweak wording around ambiguous CJS-vs-ESM config (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20865&quot;&gt;#20865&lt;/a&gt;) (Kirk Waiblinger)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/90846643ec6e97d447ae0d831fabe6d17b0a998a&quot;&gt;&lt;code&gt;9084664&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/9cc73875046e3c4b8313644cbb1e99e26b36bd3f&quot;&gt;&lt;code&gt;9cc7387&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/3d7b5484407403817aa9071a394d336d8ea96eb5&quot;&gt;&lt;code&gt;3d7b548&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/191ec3c0a3f94ce0f110df761f0b2b8949011ccb&quot;&gt;&lt;code&gt;191ec3c&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/6616856f28fa514a30f87b5539fc100d739a94bf&quot;&gt;&lt;code&gt;6616856&lt;/code&gt;&lt;/a&gt; chore: upgrade knip to v6 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20875&quot;&gt;#20875&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/d13b084a3ad02f926e9addaa35fc383759ea5554&quot;&gt;&lt;code&gt;d13b084&lt;/code&gt;&lt;/a&gt; ci: ensure auto-created PRs run CI (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20860&quot;&gt;#20860&lt;/a&gt;) (lumir)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e71c7af86dce9acc1d18cb12d2184309f6841594&quot;&gt;&lt;code&gt;e71c7af&lt;/code&gt;&lt;/a&gt; ci: bump pnpm/action-setup from 6.0.5 to 6.0.7 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20862&quot;&gt;#20862&lt;/a&gt;) (dependabot[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/d84393dea170f54191fd20c8268b52c81c0ccd99&quot;&gt;&lt;code&gt;d84393d&lt;/code&gt;&lt;/a&gt; test: add unit tests for SuppressionsService.applySuppressions() (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20863&quot;&gt;#20863&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/24db8cb8e6f07fba667121777a15b1785486be94&quot;&gt;&lt;code&gt;24db8cb&lt;/code&gt;&lt;/a&gt; test: add tests for SuppressionsService.save() (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20802&quot;&gt;#20802&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2ef0549cac4a9537e4c3a26b9f3edd4c99476bf6&quot;&gt;&lt;code&gt;2ef0549&lt;/code&gt;&lt;/a&gt; chore: update ecosystem plugins (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20857&quot;&gt;#20857&lt;/a&gt;) (github-actions[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a4297918d264d229a06cd96051ef9b91c7b86732&quot;&gt;&lt;code&gt;a429791&lt;/code&gt;&lt;/a&gt; ci: remove &lt;code&gt;eslint-webpack-plugin&lt;/code&gt; types integration test (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20668&quot;&gt;#20668&lt;/a&gt;) (Milos Djermanovic)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9e37386aa7f2ce220b2ef74a6afbac5f6b3527c5&quot;&gt;&lt;code&gt;9e37386&lt;/code&gt;&lt;/a&gt; chore: replace &lt;code&gt;recast&lt;/code&gt; with range approach in code-sample-minimizer (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20682&quot;&gt;#20682&lt;/a&gt;) (Copilot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/0dd1f9ffc9a07704d46e2a4c8d4ccc0d0908b0c0&quot;&gt;&lt;code&gt;0dd1f9f&lt;/code&gt;&lt;/a&gt; test: disable warning for &lt;code&gt;vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20845&quot;&gt;#20845&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/9da3c7bc92d9579f8db19ecb56e718538d09db2b&quot;&gt;&lt;code&gt;9da3c7b&lt;/code&gt;&lt;/a&gt; refactor: remove deprecated &lt;code&gt;meta.language&lt;/code&gt; and migrate &lt;code&gt;meta.dialects&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20716&quot;&gt;#20716&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2099ed12a0a74c3d7f0808514362af2499b4fe2b&quot;&gt;&lt;code&gt;2099ed1&lt;/code&gt;&lt;/a&gt; refactor: add &lt;code&gt;meta.defaultOptions&lt;/code&gt; to more rules, enable linting (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20800&quot;&gt;#20800&lt;/a&gt;) (xbinaryx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f1dfbc9ca57196de7092e1888cc99427bd6fe06e&quot;&gt;&lt;code&gt;f1dfbc9&lt;/code&gt;&lt;/a&gt; chore: update ecosystem plugins (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20836&quot;&gt;#20836&lt;/a&gt;) (github-actions[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c75941390c14728806cd4baef4f6072f6de78318&quot;&gt;&lt;code&gt;c759413&lt;/code&gt;&lt;/a&gt; ci: bump pnpm/action-setup from 6.0.3 to 6.0.5 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20843&quot;&gt;#20843&lt;/a&gt;) (dependabot[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/5b817d6fdc9ae2c35b528dc662b2eca8f40f64aa&quot;&gt;&lt;code&gt;5b817d6&lt;/code&gt;&lt;/a&gt; test: add unit tests for lib/shared/ast-utils (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20838&quot;&gt;#20838&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1c13ae3934c198c494e5958fa3a68b33244ff06a&quot;&gt;&lt;code&gt;1c13ae3&lt;/code&gt;&lt;/a&gt; test: add unit tests for lib/shared/severity (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20835&quot;&gt;#20835&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.3.0 released</title>
    <link href="https://eslint.org/blog/2026/05/eslint-v10.3.0-released/"/>
    <updated>2026-05-01T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/05/eslint-v10.3.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;no-unused-private-class-members-suggestions&quot; tabindex=&quot;-1&quot;&gt;&lt;code&gt;no-unused-private-class-members&lt;/code&gt; Suggestions&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://eslint.org/docs/latest/rules/no-unused-private-class-members&quot;&gt;&lt;code&gt;no-unused-private-class-members&lt;/code&gt;&lt;/a&gt; rule now provides &lt;a href=&quot;https://eslint.org/docs/latest/use/core-concepts/#rule-suggestions&quot;&gt;suggestions&lt;/a&gt; to remove reported unused private class members.&lt;/p&gt;
&lt;p&gt;For example, for the following code, in which the rule reports &lt;code&gt;#doSomethingElse&lt;/code&gt; as unused:&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;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;C&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;/**
     * My public method.
     */&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 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;/**
     * My private method.
     */&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;#doSomethingElse&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;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;/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;It will now suggest removing &lt;code&gt;#doSomethingElse&lt;/code&gt;. After applying the suggestion, the method and related comment will be removed:&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;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;C&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;/**
     * My public method.
     */&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 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;/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/379571a975f2b24d88037b9de2e72ec61d004130&quot;&gt;&lt;code&gt;379571a&lt;/code&gt;&lt;/a&gt; feat: add suggestions for &lt;a href=&quot;https://eslint.org/docs/rules/no-unused-private-class-members&quot;&gt;no-unused-private-class-members&lt;/a&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20773&quot;&gt;#20773&lt;/a&gt;) (sethamus)&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/b6ae5cf07b9b51802367539cb24b245b61eaa37c&quot;&gt;&lt;code&gt;b6ae5cf&lt;/code&gt;&lt;/a&gt; fix: handle unavailable require cache (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20812&quot;&gt;#20812&lt;/a&gt;) (Simon Podlipsky)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/6fb3685bcbe9a6f72fd7dfb9129686b6fb96b0bd&quot;&gt;&lt;code&gt;6fb3685&lt;/code&gt;&lt;/a&gt; fix: rule suggestions cause continuation in class body (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20787&quot;&gt;#20787&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/32cc7ab4ec653ce89da92deb5c40a9f4fc707fe5&quot;&gt;&lt;code&gt;32cc7ab&lt;/code&gt;&lt;/a&gt; docs: fix typos in docs and comments (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20809&quot;&gt;#20809&lt;/a&gt;) (Tanuj Kanti)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7f479376a2fa463d823ab762db6bb37ce8d2ee8f&quot;&gt;&lt;code&gt;7f47937&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/d32235ec19ceea211fa86452afa383ca05f5c2f9&quot;&gt;&lt;code&gt;d32235e&lt;/code&gt;&lt;/a&gt; ci: use pnpm in &lt;code&gt;eslint-flat-config-utils&lt;/code&gt; type integration test (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20826&quot;&gt;#20826&lt;/a&gt;) (Francesco Trotta)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/3ffb14ea517de750ed1181579ef844af342e4096&quot;&gt;&lt;code&gt;3ffb14e&lt;/code&gt;&lt;/a&gt; chore: clean up typos in comments and JSDoc (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20821&quot;&gt;#20821&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/22eb58a21cbde2fbd53a1fae99453d408672de50&quot;&gt;&lt;code&gt;22eb58a&lt;/code&gt;&lt;/a&gt; chore: add missing continue-on-error to ecosystem-tests.yml (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20818&quot;&gt;#20818&lt;/a&gt;) (Josh Goldberg ✨)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/88bf0024cb36caebf2880516d9a1f81aa75dafe2&quot;&gt;&lt;code&gt;88bf002&lt;/code&gt;&lt;/a&gt; ci: bump pnpm/action-setup from 6.0.1 to 6.0.3 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20815&quot;&gt;#20815&lt;/a&gt;) (dependabot[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/97c8c330beae9557ad24e19f94eebc8d08d1a722&quot;&gt;&lt;code&gt;97c8c33&lt;/code&gt;&lt;/a&gt; chore: update ilshidur/action-discord action to v0.4.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20811&quot;&gt;#20811&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2f58136dd47364a4cae7054a64f7bf1e79693813&quot;&gt;&lt;code&gt;2f58136&lt;/code&gt;&lt;/a&gt; chore: pin peter-evans/create-pull-request action to 5f6978f (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20810&quot;&gt;#20810&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/77add7f1bc91ed17bba3be3289928a9146c5f5a1&quot;&gt;&lt;code&gt;77add7f&lt;/code&gt;&lt;/a&gt; chore: add initial ecosystem plugin tests workflow (&lt;a href=&quot;https://github.com/eslint/eslint/issues/19643&quot;&gt;#19643&lt;/a&gt;) (Josh Goldberg ✨)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4023b55490fae55e464fe35530ef038cdf5d79a5&quot;&gt;&lt;code&gt;4023b55&lt;/code&gt;&lt;/a&gt; test: Add unit tests for SuppressionsService.prune() (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20797&quot;&gt;#20797&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/54080dad4f77bb39a1a843933d4ff3a2b7c175e2&quot;&gt;&lt;code&gt;54080da&lt;/code&gt;&lt;/a&gt; test: add unit tests for ForkContext (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20778&quot;&gt;#20778&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/f0e2bcc4bf19253aaebfbd7df87824b0ca4a151f&quot;&gt;&lt;code&gt;f0e2bcc&lt;/code&gt;&lt;/a&gt; test: add unit tests for SuppressionsService.suppress() method (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20765&quot;&gt;#20765&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/a7f0b94743a99bcdf8d07cff15ffbfa6a6c5f927&quot;&gt;&lt;code&gt;a7f0b94&lt;/code&gt;&lt;/a&gt; chore: update dependency prettier to v3.8.3 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20782&quot;&gt;#20782&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7bf93d9e79f6dbf77242cbb9a9b8be834730fccd&quot;&gt;&lt;code&gt;7bf93d9&lt;/code&gt;&lt;/a&gt; chore: update TypeScript to v6 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20677&quot;&gt;#20677&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/b42dd72e76e7f90e7f0be9458288d93353052adc&quot;&gt;&lt;code&gt;b42dd72&lt;/code&gt;&lt;/a&gt; ci: bump pnpm/action-setup from 6.0.0 to 6.0.1 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20781&quot;&gt;#20781&lt;/a&gt;) (dependabot[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/2b252be80f362cca7be3326a6dbe958680fdfe9a&quot;&gt;&lt;code&gt;2b252be&lt;/code&gt;&lt;/a&gt; test: add unit tests for IdGenerator (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20775&quot;&gt;#20775&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>ESLint v10.2.1 released</title>
    <link href="https://eslint.org/blog/2026/04/eslint-v10.2.1-released/"/>
    <updated>2026-04-17T00:00:00Z</updated>
    <id>https://eslint.org/blog/2026/04/eslint-v10.2.1-released/</id>
    <content type="html">&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/14be92b6d1fa0923b8923830f2208e5e2705b002&quot;&gt;&lt;code&gt;14be92b&lt;/code&gt;&lt;/a&gt; fix: model generator yield resumption paths in code path analysis (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20665&quot;&gt;#20665&lt;/a&gt;) (sethamus)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/84a19d2c32255db6b9cfc08644a607aae6d5cb62&quot;&gt;&lt;code&gt;84a19d2&lt;/code&gt;&lt;/a&gt; fix: &lt;a href=&quot;https://eslint.org/docs/rules/no-async-promise-executor&quot;&gt;no-async-promise-executor&lt;/a&gt; false positives for shadowed Promise (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20740&quot;&gt;#20740&lt;/a&gt;) (xbinaryx)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/af764af0ec38225755fbf8a6f207f0c77b595a8d&quot;&gt;&lt;code&gt;af764af&lt;/code&gt;&lt;/a&gt; fix: clarify language and processor validation errors (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20729&quot;&gt;#20729&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e251b89a38280973e468a4a9386c138f4f55d10d&quot;&gt;&lt;code&gt;e251b89&lt;/code&gt;&lt;/a&gt; fix: update eslint (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20715&quot;&gt;#20715&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/ca92ca0fb4599e8de1e2fb914e695fe7397cbe63&quot;&gt;&lt;code&gt;ca92ca0&lt;/code&gt;&lt;/a&gt; docs: reuse markdown-it instance for markdown filter (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20768&quot;&gt;#20768&lt;/a&gt;) (Amaresh  S M)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/57d2ee213305cee0cb55ef08e0480b57396269a9&quot;&gt;&lt;code&gt;57d2ee2&lt;/code&gt;&lt;/a&gt; docs:  Enable Eleventy incremental mode for watch (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20767&quot;&gt;#20767&lt;/a&gt;) (Amaresh  S M)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/c1621b915742276e5f4b25efe790ca62296330dc&quot;&gt;&lt;code&gt;c1621b9&lt;/code&gt;&lt;/a&gt; docs: fix typos in code-path-analyzer.js (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20700&quot;&gt;#20700&lt;/a&gt;) (Ayush Shukla)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/1418d522d10bde1960f4942afb548bc7160ec49e&quot;&gt;&lt;code&gt;1418d52&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/39771e6e600f0b0617fdeafff6dd07e4211ffde6&quot;&gt;&lt;code&gt;39771e6&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/71e04693def2df57268f08f3072a2749df6bf438&quot;&gt;&lt;code&gt;71e0469&lt;/code&gt;&lt;/a&gt; docs: fix incomplete JSDoc param description in &lt;a href=&quot;https://eslint.org/docs/rules/no-shadow&quot;&gt;no-shadow&lt;/a&gt; rule (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20728&quot;&gt;#20728&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/22119ceb93e28f62262fc1d98ff1b1442d6e2dbf&quot;&gt;&lt;code&gt;22119ce&lt;/code&gt;&lt;/a&gt; docs: clarify scope of &lt;a href=&quot;https://eslint.org/docs/rules/for-direction&quot;&gt;for-direction&lt;/a&gt; rule with dead code examples (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20723&quot;&gt;#20723&lt;/a&gt;) (Amaresh  S M)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/8f3fb77f122a5641d1833cad5d93f3f54fa3be0b&quot;&gt;&lt;code&gt;8f3fb77&lt;/code&gt;&lt;/a&gt; docs: document &lt;code&gt;meta.docs.dialects&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20718&quot;&gt;#20718&lt;/a&gt;) (Pixel998)&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/7ddfea9c4f62add1588c5c0b0da568c299246383&quot;&gt;&lt;code&gt;7ddfea9&lt;/code&gt;&lt;/a&gt; chore: update dependency prettier to v3.8.2 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20770&quot;&gt;#20770&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/fac40e1de2ba7646cc7cd2d3f93fbdd1f8819001&quot;&gt;&lt;code&gt;fac40e1&lt;/code&gt;&lt;/a&gt; ci: bump pnpm/action-setup from 5.0.0 to 6.0.0 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20763&quot;&gt;#20763&lt;/a&gt;) (dependabot[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/7246f923332522d8b3d46b6ee646fce88535f3fb&quot;&gt;&lt;code&gt;7246f92&lt;/code&gt;&lt;/a&gt; test: add tests for SuppressionsService.load() error handling (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20734&quot;&gt;#20734&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4f34b1e592b0f63d766d9903998e8e36eb49d3aa&quot;&gt;&lt;code&gt;4f34b1e&lt;/code&gt;&lt;/a&gt; chore: update pnpm/action-setup action to v5 (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20762&quot;&gt;#20762&lt;/a&gt;) (renovate[bot])&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/51080eb5c98d619434e4835dbe9f1c6654aca3b8&quot;&gt;&lt;code&gt;51080eb&lt;/code&gt;&lt;/a&gt; test: processor service (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20731&quot;&gt;#20731&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/e7e1889fca9b6044e08f41b38df20a1ce45808c8&quot;&gt;&lt;code&gt;e7e1889&lt;/code&gt;&lt;/a&gt; chore: remove stale babel-eslint10 fixture and test  (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20727&quot;&gt;#20727&lt;/a&gt;) (kuldeep kumar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/4e1a87cb8fb90e309524bc36bc5f31b9f9cfaa76&quot;&gt;&lt;code&gt;4e1a87c&lt;/code&gt;&lt;/a&gt; test: remove redundant async/await in flat config array tests (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20722&quot;&gt;#20722&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/eslint/eslint/commit/066eabb3643b12931f991594969bcc0028f71a5f&quot;&gt;&lt;code&gt;066eabb&lt;/code&gt;&lt;/a&gt; test: add rule metadata coverage for &lt;code&gt;languages&lt;/code&gt; and &lt;code&gt;docs.dialects&lt;/code&gt; (&lt;a href=&quot;https://github.com/eslint/eslint/issues/20717&quot;&gt;#20717&lt;/a&gt;) (Pixel998)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <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>
</feed>
