diff --git a/.cspell.json b/.cspell.json
index dc41dd9403fb..83e9dd112d67 100644
--- a/.cspell.json
+++ b/.cspell.json
@@ -49,8 +49,8 @@
"words": [
"Airbnb",
"Airbnb's",
- "ambiently",
"allowdefaultprojectforfiles",
+ "ambiently",
"Armano",
"astexplorer",
"Astro",
@@ -90,6 +90,7 @@
"falsiness",
"globby",
"IDE's",
+ "ignoreconditionaltests",
"IIFE",
"IIFEs",
"jameshenry",
@@ -99,6 +100,7 @@
"lzstring",
"markdownlint",
"metastring",
+ "multipass",
"necroing",
"nocheck",
"noninteractive",
diff --git a/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md b/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md
index a1c5d205a025..7606e3e9f364 100644
--- a/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md
+++ b/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md
@@ -1,6 +1,6 @@
---
authors:
- - image_url: https://www.joshuakgoldberg.com/img/josh.jpg
+ - image_url: /img/team/joshuakgoldberg.jpg
name: Josh Goldberg
title: typescript-eslint Maintainer
url: https://github.com/JoshuaKGoldberg
@@ -223,6 +223,6 @@ Thanks Joshua! π€
## Supporting typescript-eslint
-If you enjoyed this blog post and/or or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
+If you enjoyed this blog post and/or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great.
Thanks! π
diff --git a/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md b/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md
index 5d1abe9bb65b..9fccf0035b25 100644
--- a/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md
+++ b/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md
@@ -1,6 +1,6 @@
---
authors:
- - image_url: https://www.joshuakgoldberg.com/img/josh.jpg
+ - image_url: /img/team/joshuakgoldberg.jpg
name: Josh Goldberg
title: typescript-eslint Maintainer
url: https://github.com/JoshuaKGoldberg
diff --git a/packages/website/blog/2023-02-24-consistent-type-exports-and-imports-why-and-how.md b/packages/website/blog/2023-02-24-consistent-type-exports-and-imports-why-and-how.md
index 5e0f1e02de58..cde68190cd45 100644
--- a/packages/website/blog/2023-02-24-consistent-type-exports-and-imports-why-and-how.md
+++ b/packages/website/blog/2023-02-24-consistent-type-exports-and-imports-why-and-how.md
@@ -1,6 +1,6 @@
---
authors:
- - image_url: https://www.joshuakgoldberg.com/img/josh.jpg
+ - image_url: /img/team/joshuakgoldberg.jpg
name: Josh Goldberg
title: typescript-eslint Maintainer
url: https://github.com/JoshuaKGoldberg
@@ -186,6 +186,6 @@ See [our Getting Started docs](/getting-started) for more information on linting
## Supporting typescript-eslint
-If you enjoyed this blog post and/or or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
+If you enjoyed this blog post and/or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great.
Thanks! π
diff --git a/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md b/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md
index 38f9f289d03f..49d3bbf416e9 100644
--- a/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md
+++ b/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md
@@ -1,6 +1,6 @@
---
authors:
- - image_url: https://www.joshuakgoldberg.com/img/josh.jpg
+ - image_url: /img/team/joshuakgoldberg.jpg
name: Josh Goldberg
title: typescript-eslint Maintainer
url: https://github.com/JoshuaKGoldberg
@@ -377,6 +377,6 @@ See the [v6.0.0 milestone](https://github.com/typescript-eslint/typescript-eslin
## Supporting typescript-eslint
-If you enjoyed this blog post and/or or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
+If you enjoyed this blog post and/or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great.
Thanks! π
diff --git a/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md b/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md
index e0352744d189..0920b0047905 100644
--- a/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md
+++ b/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md
@@ -1,6 +1,6 @@
---
authors:
- - image_url: https://www.joshuakgoldberg.com/img/josh.jpg
+ - image_url: /img/team/joshuakgoldberg.jpg
name: Josh Goldberg
title: typescript-eslint Maintainer
url: https://github.com/JoshuaKGoldberg
@@ -702,6 +702,6 @@ See the [v6.0.0 milestone](https://github.com/typescript-eslint/typescript-eslin
## Supporting typescript-eslint
-If you enjoyed this blog post and/or or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
+If you enjoyed this blog post and/or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great.
Thanks! π
diff --git a/packages/website/blog/2023-09-18-parser-options-project-true.md b/packages/website/blog/2023-09-18-parser-options-project-true.md
index c767972508ae..d279beae93b3 100644
--- a/packages/website/blog/2023-09-18-parser-options-project-true.md
+++ b/packages/website/blog/2023-09-18-parser-options-project-true.md
@@ -1,6 +1,6 @@
---
authors:
- - image_url: https://www.joshuakgoldberg.com/img/josh.jpg
+ - image_url: /img/team/joshuakgoldberg.jpg
name: Josh Goldberg
title: typescript-eslint Maintainer
url: https://github.com/JoshuaKGoldberg
diff --git a/packages/website/blog/2023-12-25-deprecating-formatting-rules.md b/packages/website/blog/2023-12-25-deprecating-formatting-rules.md
index 9bb344ee696f..6767fedc9904 100644
--- a/packages/website/blog/2023-12-25-deprecating-formatting-rules.md
+++ b/packages/website/blog/2023-12-25-deprecating-formatting-rules.md
@@ -1,6 +1,6 @@
---
authors:
- - image_url: https://www.joshuakgoldberg.com/img/josh.jpg
+ - image_url: /img/team/joshuakgoldberg.jpg
name: Josh Goldberg
title: typescript-eslint Maintainer
url: https://github.com/JoshuaKGoldberg
diff --git a/packages/website/blog/2024-05-27-announcing-typescript-eslint-v8-beta.mdx b/packages/website/blog/2024-05-27-announcing-typescript-eslint-v8-beta.mdx
new file mode 100644
index 000000000000..385f13fec573
--- /dev/null
+++ b/packages/website/blog/2024-05-27-announcing-typescript-eslint-v8-beta.mdx
@@ -0,0 +1,353 @@
+---
+authors:
+ - image_url: /img/team/joshuakgoldberg.jpg
+ name: Josh Goldberg
+ title: typescript-eslint Maintainer
+ url: https://github.com/JoshuaKGoldberg
+description: Announcing the release of typescript-eslint's v8 beta, including its changes and timeline.
+slug: announcing-typescript-eslint-v8-beta
+tags: [breaking changes, typescript-eslint, v7, v8]
+title: Announcing typescript-eslint v8 Beta
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+[typescript-eslint](https://typescript-eslint.io) is the tooling that enables standard JavaScript tools such as [ESLint](https://eslint.org) and [Prettier](https://prettier.io) to support TypeScript code.
+We've been working on a set of breaking changes and general features that we're excited to get in front of users soon.
+And now, we're excited to say that typescript-eslint v8 is ready for public beta testing! π
+
+Our plan for typescript-eslint v8 is to:
+
+1. Have users try out betas starting in May of 2024
+2. Respond to user feedback for the next ~1-2 months
+3. Release a stable version within the next ~1-2 months
+
+Nothing mentioned in this blog post is set in stone.
+If you feel passionately about any of the choices we've made here β positively or negatively β then do let us know on [the typescript-eslint Discord](https://discord.gg/FSxKq8Tdyg)'s `#v8` channel!
+
+
+
+## Trying Out v8
+
+Please do try out the typescript-eslint v8 beta!
+
+### As A New User
+
+If you don't yet use typescript-eslint, you can go through our [configuration steps on the v8 _Getting Started_ docs](https://v8--typescript-eslint.netlify.app/getting-started).
+It'll walk you through setting up typescript-eslint in a project.
+
+To use v8 specifically, see the following section for an updated install command.
+
+### As An Existing User
+
+If you already use typescript-eslint, you'll need to first replace your package's previous versions of `@typescript-eslint/eslint-plugin` and `@typescript-eslint/parser` with `@rc-v8` versions:
+
+
+
+
+```shell
+npm i typescript-eslint@rc-v8 --save-dev
+```
+
+
+
+
+```shell
+npm i @typescript-eslint/eslint-plugin@rc-v8 @typescript-eslint/parser@rc-v8 --save-dev
+```
+
+
+
+
+We highly recommend then basing your ESLint configuration on the reworked typescript-eslint [recommended configurations](/users/configs) β especially if it's been a while since you've reworked your linter config.
+
+## User-Facing Changes
+
+These are the changes that users of typescript-eslint βgenerally, any developer running ESLint on TypeScript codeβ should pay attention to when upgrading typescript-eslint from v7 to v8.
+
+> β³ indicates a change that has been scheduled for v8 but not yet released.
+> We'll update this blog post as the corresponding pull requests land.
+
+### ESLint v9 Support
+
+typescript-eslint v8 ships with full support for ESLint v9.
+
+typescript-eslint v7 was our first version that supported ESLint's [new "flat" config file format](https://eslint.org/docs/latest/use/configure/configuration-files), which was already available in ESLint v8.
+ESLint v9 still supports ESLint's [older legacy config file format](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated) so our tooling does as well.
+However, ESLint v9 also includes a set of breaking changes that we added support for in typescript-eslint v8.
+See the [ESLint v9 release blog post](https://eslint.org/blog/2024/04/eslint-v9.0.0-released) for more details.
+
+### Project Service
+
+The biggest new feature added in this version is the stability of our new "project service".
+In short, the project service is a new way to enable [typed linting](/getting-started/typed-linting) that is generally _easier to configure_ and _faster at runtime_ than our previous offerings.
+It's been experimentally available since v6.1.0 under the name `EXPERIMENTAL_useProjectService`; now, we've renamed it to `projectService`.
+
+You can use the new project service in your configuration instead of the previous `parserOptions.project`:
+
+```js title="eslint.config.js"
+import eslint from '@eslint/js';
+import tseslint from 'typescript-eslint';
+
+export default tseslint.config(
+ eslint.configs.recommended,
+ ...tseslint.configs.recommendedTypeChecked,
+ {
+ languageOptions: {
+ parserOptions: {
+ // Remove this line
+ project: true,
+ // Add this line
+ projectService: true,
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+ },
+);
+```
+
+The project service will automatically find the closest `tsconfig.json` for each file (like `project: true`).
+It also allows enabling typed linting for files not explicitly included in a `tsconfig.json`.
+This should remove the need for custom `tsconfig.eslint.json` files to lint files like `eslint.config.js`!
+
+Typed linting for out-of-project files can be done by specifying two properties of a `parserOptions.projectService` object:
+
+- `allowDefaultProject`: a glob of a small number of out-of-project files to enable a slower default project on
+- `defaultProject`: path to a TypeScript configuration file to use for the slower default project
+
+```js title="eslint.config.js"
+import eslint from '@eslint/js';
+import tseslint from 'typescript-eslint';
+
+export default tseslint.config(
+ eslint.configs.recommended,
+ ...tseslint.configs.recommendedTypeChecked,
+ {
+ languageOptions: {
+ parserOptions: {
+ // Remove this line
+ project: ['packages/*/tsconfig.json', 'tsconfig.eslint.json'],
+ // Added lines start
+ projectService: {
+ allowDefaultProject: ['./*.js'],
+ defaultProject: './tsconfig.json',
+ },
+ // Added lines end
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+ },
+);
+```
+
+Internally, the project service uses the same TypeScript APIs that editors such as VS Code use.
+Doing so should make it harder to accidentally configure different type information for ESLint than what you see in day-to-day editing.
+
+We're thrilled to have the project service option promoted to stable in v8.
+We'll soon release a [dedicated `parserOptions` blog post](https://github.com/typescript-eslint/typescript-eslint/pull/8031) walking through the new option in more details.
+π
+
+### Updated Configuration Rules
+
+Every new major version of typescript-eslint comes with changes to which rules are enabled in the preset configurations and with which options.
+Because this release also includes a reworking of the configurations themselves, the list of changes is too large to put in this blog post.
+Instead see the table in [Changes to configurations for 8.0.0](https://github.com/typescript-eslint/typescript-eslint/discussions/8914) for a full list of the changes.
+
+Please do try out the new rule configurations presets and let us know in that discussion!
+
+:::tip
+If your ESLint configuration contains many `rules` configurations, we suggest the following strategy to start anew:
+
+1. Remove all your rules configurations
+2. Extend from the preset configs that make sense for you
+3. Run ESLint on your project
+4. In your ESLint configuration, turn off any rules creating errors that don't make sense for your project β with comments explaining why
+5. In your ESLint configuration and/or with inline `eslint-disable` comments, turn off/downgrade to "warn" any rules creating too many errors for you to fix β with _"TODO"_ comments linking to tracking issues/tickets to re-enable them
+
+:::
+
+### Rule Breaking Changes
+
+Several rules are changed in significant enough ways to be considered breaking changes:
+
+- β³ [Rules: Deprecate prefer-ts-expect-error in favor of ban-ts-comment](https://github.com/typescript-eslint/typescript-eslint/issues/8333)
+ - If you have [`@typescript-eslint/prefer-ts-expect-error`](/rules/prefer-ts-expect-error) manually enabled, remove that, and instead either use a [recommended config](/users/configs) or manually enable [`@typescript-eslint/ban-ts-comment`](/rules/ban-ts-comment)
+- β³ [chore(eslint-plugin): deprecate no-var-requires in favor of no-require-imports](https://github.com/typescript-eslint/typescript-eslint/pull/8334)
+ - If you have [`@typescript-eslint/no-var-requires`](/rules/no-var-requires) manually enabled, remove that, and instead either use a [recommended config](/users/configs) or manually enable [`@typescript-eslint/no-require-imports`](/rules/no-require-imports)
+- [feat(eslint-plugin): remove deprecated no-throw-literal rule](https://github.com/typescript-eslint/typescript-eslint/issues/9083)
+ - If you have [`@typescript-eslint/no-throw-literal`](/rules/no-throw-literal) manually enabled, remove that, and instead either use a [recommended config](/users/configs) or manually enable [`@typescript-eslint/only-throw-error`](/rules/only-throw-error)
+- β³ [fix(eslint-plugin): [no-useless-template-literals] rename to no-useless-template-expression](https://github.com/typescript-eslint/typescript-eslint/pull/8821)
+ - Find-and-replace text from `no-useless-template-literals` to `no-useless-template-expression`
+- [feat(eslint-plugin): deprecate no-loss-of-precision extension rule](https://github.com/typescript-eslint/typescript-eslint/pull/8832)
+ - If you have [`@typescript-eslint/no-loss-of-precision`](/rules/no-loss-of-precision) manually enabled, replace it with the base rule `no-loss-of-precision`.
+- [feat(eslint-plugin): remove formatting/layout rules](https://github.com/typescript-eslint/typescript-eslint/pull/8833)
+ - If you're using any of the old deprecated formatting rules, see [eslint.style](https://eslint.style) for their new equivalents
+- [feat(eslint-plugin): [prefer-nullish-coalescing] change ignoreConditionalTests default to true](https://github.com/typescript-eslint/typescript-eslint/pull/8872)
+ - If you want to have the rule check conditional tests, set its [`ignoreConditionalTests` option](/rules/prefer-nullish-coalescing/#ignoreconditionaltests) to `false` in your ESLint config
+- [feat(eslint-plugin): [no-unused-vars] align catch behavior to ESLint 9](https://github.com/typescript-eslint/typescript-eslint/pull/8971)
+ - If you want [`@typescript-eslint/no-unused-vars`](/rules/no-unused-vars) to ignore caught errors, enable its `caughtErrors` option to `'none'` in your ESLint config
+- [feat(eslint-plugin): split no-empty-object-type out from ban-types and no-empty-interface](https://github.com/typescript-eslint/typescript-eslint/pull/8977)
+ - If you have [`@typescript-eslint/ban-types`](/rules/ban-types) manually enabled, it will no longer ban the `{}` or `object` types; use a [recommended config](/users/configs) or manually enable [`@typescript-eslint/no-empty-object-type`](https://v8--typescript-eslint.netlify.app/rules/no-empty-object-type)
+ - If you have [`@typescript-eslint/no-empty-interface`](/rules/no-empty-interface) manually enabled, remove that, and instead either use a [recommended config](/users/configs) or manually enable [`@typescript-eslint/no-empty-object-type`](https://v8--typescript-eslint.netlify.app/rules/no-empty-object-type)
+
+### Tooling Breaking Changes
+
+- β³ [Enhancement: Error if configuration options aren't provided as expected](https://github.com/typescript-eslint/typescript-eslint/issues/6403)
+ - This should only cause errors if you had an invalid config.
+- [fix(typescript-estree): enable dot globs for project by default](https://github.com/typescript-eslint/typescript-eslint/pull/8818)
+ - This will cause any `parserOptions.project` globs to match dot (`.`) directories.
+ If you don't want to match them then use a more specific set of globs, or switch to `parserOptions.projectService`.
+- [feat(typescript-estree): remove slow deprecated and isolated programs](https://github.com/typescript-eslint/typescript-eslint/pull/8834)
+ - If you were still using `parserOptions.DEPRECATED__createDefaultProgram`, switch to `parserOptions.projectService` _(recommended)_ or `parserOptions.project`.
+- [feat(typescript-estree): rename automaticSingleRunInference to disallowAutomaticSingleRunInference](https://github.com/typescript-eslint/typescript-eslint/pull/8922)
+ - We've updated the default to be an opt-out - meaning you no longer need to enable it:
+ ```js
+ parserOptions: {
+ // Remove this line
+ automaticSingleRunInference: true,
+ // ...
+ }
+ ```
+- [chore: bump minimum versions for v8](https://github.com/typescript-eslint/typescript-eslint/pull/8973)
+ - ESLint support range was changed from `^8.56.0` to `^8.57.0`
+ - Node.js support range was changed from `^18.18.0 || >=20.0.0` to `^18.18.0 || ^20.9.0 || >=21.1.0`
+ - TypeScript support range was changed from `>=4.7.4 <5.5.0` to `>=4.8.4 <5.5.0`
+
+## Developer-Facing Changes
+
+typescript-eslint v8 comes with a suite of cleanups and improvements for developers using its Node.js APIs as well.
+If you author any ESLint plugins or other tools that interact with TypeScript syntax, then we recommend you try out typescript-eslint v8 soon.
+It includes some breaking changes that you may need to accommodate for.
+
+:::tip
+If you're having trouble working with the changes, please let us know on [the typescript-eslint Discord](https://discord.gg/FSxKq8Tdyg)'s `#v8` channel!
+:::
+
+### AST Breaking Changes
+
+These changes are to the AST shapes generated by typescript-eslint when parsing code.
+If you author any ESLint rules that refer to the syntax mentioned by them, these are relevant to you.
+
+- β³ [Enhancement: add strict parent types for nodes that have well-defined parents](https://github.com/typescript-eslint/typescript-eslint/issues/6225)
+ - This will help you remove some unnecessary conditions - we suggest using `@typescript-eslint/no-unnecessary-condition` to help find the unnecessary checks!
+- [feat(typescript-estree): split TSMappedType typeParameter into constraint and key](https://github.com/typescript-eslint/typescript-eslint/pull/7065)
+ - If your code handles mapped types, change from `node.typeParameter.constraint` to `node.constraint` and from `node.typeParameter.name` to `node.key`
+- [feat(ast-spec): remove deprecated type params](https://github.com/typescript-eslint/typescript-eslint/pull/8933)
+ - If you haven't already you must stop using those removed AST properties that were already marked as `@deprecated`
+
+### Custom Rule `meta.docs` Types
+
+`@typescript-eslint/utils` has long exported a [`RuleCreator` utility](https://typescript-eslint.io/developers/custom-rules#rulecreator) for making custom well-typed custom ESLint rules.
+That `RuleCreator` is used internally by `@typescript-eslint/eslint-plugin` β and in fact, up through typescript-eslint v7, it hardcoded the same types for rules' `meta.docs` as `@typescript-eslint/eslint-plugin`!
+
+In typescript-eslint v8, we've made two changes to `RuleCreator`:
+
+- Rule `meta.docs` by default only allows the properties defined in ESLint's [Custom Rules > Rule Structure docs](https://eslint.org/docs/latest/extend/custom-rules#rule-structure): `description` and `url`
+- `RuleCreator` allows an optional type parameter to specify additional allowed properties
+
+For example, this rule includes the common `meta.docs.recommended` property as a `boolean`:
+
+```ts
+interface MyPluginDocs {
+ recommended: boolean;
+}
+
+const createRule = ESLintUtils.RuleCreator(
+ name => `https://example.com/rule/${name}`,
+);
+
+createRule({
+ // ...
+ meta: {
+ docs: {
+ description: '...',
+ recommended: true,
+ },
+ // ...
+ },
+});
+```
+
+See [feat(utils): allow specifying additional rule meta.docs in RuleCreator](https://github.com/typescript-eslint/typescript-eslint/pull/9025) for more details.
+
+### Support for multi-pass fixes in `RuleTester`
+
+The `RuleTester` provided by `@typescript-eslint/rule-tester` is a fork of ESLint's `RuleTester`.
+One limitation of the original `RuleTester` is that it is not possible to verify the individual applied fixes when a rule provides multiple rounds of fixes.
+[The original `RuleTester` applies only the first fix](https://eslint.org/docs/latest/integrate/nodejs-api#testing-fixes) when there is conflict between two fixes.
+
+In typescript-eslint v8, `RuleTester` tries to apply all possible fixes for each test case.
+
+If your rule tests had some test cases that required multi-pass fixes, you will see some test failures.
+To fix these failures, provide an array of strings for `output` which specifies the output after each fix pass.
+
+```ts
+import { RuleTester } from '@typescript-eslint/rule-tester';
+import rule from '../src/rules/my-rule.ts';
+
+const ruleTester = new RuleTester();
+
+ruleTester.run('my-rule', rule, {
+ valid: [
+ /* ... */
+ ],
+ invalid: [
+ {
+ code: 'const a = 1;',
+ // Remove the line with string form of `output`
+ output: 'const b = 1;',
+ // Add the line with array form of `output`
+ output: ['const b = 1;', 'const c = 1;'],
+ errors: [
+ /* ... */
+ ],
+ },
+ ],
+});
+```
+
+See [[rule-tester] support multipass fixes](https://github.com/typescript-eslint/typescript-eslint/issues/8554) for more details.
+
+### Other Developer-Facing Breaking Changes
+
+- β³ [Repo: Rule [options] parameter should be non-nullable if defaultOptions exists](https://github.com/typescript-eslint/typescript-eslint/issues/5439)
+- [feat(parser): always enable comment, loc, range, tokens](https://github.com/typescript-eslint/typescript-eslint/pull/8617)
+ - If you were manually calling `@typescript-eslint/parser` functions, those options are no longer necessary to provide
+- [chore(type-utils)!: remove IsNullableTypeOptions interface](https://github.com/typescript-eslint/typescript-eslint/pull/8934)
+ - If you were using `isNullableType`, you can omit its section parameter
+- [feat(utils): swap LegacyESLint out for FlatESLint as ESLint export](https://github.com/typescript-eslint/typescript-eslint/pull/8972)
+ - If you still need to use the class corresponding to legacy ("eslintrc") configs, switch from importing `ESLint` to `LegacyESLint`
+- [chore(type-utils): remove getTypeArguments](https://github.com/typescript-eslint/typescript-eslint/pull/8938)
+ - If you were using `getTypeArguments`, call a TypeScript type checker's `checker.getTypeArguments` instead
+- [feat(utils): remove deprecated context helpers](https://github.com/typescript-eslint/typescript-eslint/pull/9000)
+ - You should consider dropping support for older ESLint versions and migrate to the new APIs.
+
+## Appreciation
+
+We'd like to extend a sincere _thank you_ to everybody who pitched in to make typescript-eslint v8 possible.
+
+- Ourselves on the maintenance team:
+ - [Auvred](https://github.com/auvred)
+ - [Armano](https://github.com/armano2)
+ - [Brad Zacher](https://github.com/bradzacher)
+ - [James Henry](https://github.com/JamesHenry)
+ - [Josh Goldberg](https://github.com/JoshuaKGoldberg)
+ - [Joshua Chen](https://github.com/Josh-Cena)
+ - [Kirk Waiblinger](https://github.com/kirkwaiblinger)
+- Community contributors whose PRs were merged into the 8.0.0 release:
+
+ - [Abraham Guo](https://github.com/abrahamguo)
+ - [Collin Bachman](https://github.com/bachmacintosh)
+ - [Thomas HuchedΓ©](https://github.com/thuchede)
+ - [Yukihiro Hasegawa](https://github.com/y-hsgw)
+ - _(more to come as PRs are merged!)_
+
+
+See the [v8.0.0 milestone](https://github.com/typescript-eslint/typescript-eslint/milestone/9) for the list of issues and associated merged pull requests.
+
+## Supporting typescript-eslint
+
+If you enjoyed this blog post and/or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
+We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great.
+Thanks! π