# What changed in eslint-plugin-svelte

> 40 changes in eslint-plugin-svelte 2 to 3 from its official release notes, upgrade guides and advisories: 10 breaking, 2 deprecations, 10 new APIs and options. Each one cited. Sources checked 2026-11-07. HTML: https://unstale.sh/npm/eslint-plugin-svelte/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## eslint-plugin-svelte 3

### Breaking changes

- Support for old ESLint versions was dropped. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The plugin is now an ESM-only package. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule was updated to follow Svelte 5. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule was renamed to no-raw-special-elements. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The recommended config enables 20 additional rules, which may introduce breaking lint errors. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The plugin upgraded to svelte-eslint-parser v1. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)

### Deprecations

- The rule was deprecated. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule was deprecated. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)

### New APIs and options

- Adds the prefer-attribute-interpolation rule for configuring ESLint checks. (3.23.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.23.0)
- Adds the no-conflicting-module-names rule. (3.22.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.22.0)
- A new rule was added. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- A new rule was added; it was later renamed to no-raw-special-elements in this release. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- A new rule was added. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- A new rule was added. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- A new rule was added. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- Support for the Svelte boundary element was added. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- A new rule was added. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The valid-compile rule now supports warningFilter. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)

### Behavior and default changes

- The all configuration excludes deprecated rules while keeping active rules enabled. (3.23.1) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.23.1)
- The recommended config enables this rule on SvelteKit 3, reporting internal links and navigation calls that omit resolve(). (3.23.1) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.23.1)
- The rule now provides a suggestion. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- Transitions are now allowed by default. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule was removed from the recommended rules. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule was removed from the recommended config. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- Version information is detected from node_modules when it is not specified in package.json, including pnpm catalogs. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The base config now includes this file pattern. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule now supports Svelte 5. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)

### Tooling

- The rule now supports typescript-eslint v8. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)

### Fixes and other changes

- Fixes false positives for TypeScript components when `ecmaFeatures.globalReturn` is enabled. (3.23.1) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.23.1)
- Recognizes `browser` from SvelteKit's `$app/env` alias as a browser guard. (3.23.1) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.23.1)
- Diagnostics are limited to the opening each tag instead of covering the whole block. (3.23.1) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.23.1)
- Rule conditions recognize SvelteKit 3, including prereleases. (3.23.1) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.23.1)
- Each blocks without an item are now supported. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule no longer crashes with ESLint v9.16.0. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule ignores css_unused_selector compile errors when a style tag has the global attribute. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)
- The rule now allows children. (3.0.0) — [release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases/tag/eslint-plugin-svelte%403.0.0)

## eslint-plugin-svelte 2

### Breaking changes

- The package was renamed from @ota-meshi/eslint-plugin-svelte; replace the package name in package.json. (2.0.0) — [upgrade guide](https://sveltejs.github.io/eslint-plugin-svelte/migration)
- Version 2 is an independent eslint-plugin rather than an alias for eslint-plugin-svelte3; use eslint-plugin-svelte3 for the previous behavior. (2.0.0) — [upgrade guide](https://sveltejs.github.io/eslint-plugin-svelte/migration)
- The preset namespace changed from plugin:@ota-meshi/svelte/recommended to plugin:svelte/recommended. (2.0.0) — [upgrade guide](https://sveltejs.github.io/eslint-plugin-svelte/migration)
- Rule configuration moved from the @ota-meshi/svelte namespace to the svelte namespace. (2.0.0) — [upgrade guide](https://sveltejs.github.io/eslint-plugin-svelte/migration)
