npm / svelte-eslint-parser
svelte-eslint-parser
What changed in svelte-eslint-parser 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-13.
2 breaking7 new APIs and options2 behavior and defaults3 tooling21 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initsvelte-eslint-parser 135 changes
Breaking changes 2
The parser package is now ESM-only.
The declaration property was replaced by declarations.
New APIs and options 7
Set this environment variable to 1 to opt in to an experimental ts.sys.readFile hook that speeds up type-aware lint of .svelte files.
Adds support for comments in tags, allowing developers to use comments within tags.
An AST node for function bindings was added.
PostCSS is now supported.
Style selector parsing is now supported.
The parser now supports the <svelte:boundary> element.
The warningFilter option was added to SvelteConfig.
Behavior and default changes 2
With the experimental hook enabled, .svelte imports resolve to virtual TypeScript containing a synthetic component export, enabling cross-file prop, event, and slot types.
Generics support was stabilized.
Tooling 3
Adds support for parsing Svelte 5 declaration tags.
The parser now supports the $inspect.trace rune.
The parser now supports the $props.id rune.
Fixes and other changes 21
Marks
$bindable()props as used to preventno-useless-assignmentreports on writes, and handles$props()with non-null assertions, type assertions,satisfies, and angle-bracket type assertions.Types
$bindable()props as possiblyundefinedin$props()to prevent@typescript-eslint/no-useless-default-assignmentreports.The
runesoption on<svelte:options>takes precedence overcompilerOptions.runes, matching the Svelte compiler.Instance exports are included in the synthetic component type, so a component instance obtained through bind:this exposes their real types instead of any.
The setter parameter of a function binding is typed from the bound prop, instead of being implicit any.
A
{#snippet}call is typed as aSnippetcall instead ofvoid, preventing@typescript-eslint/no-confusing-void-expressionfrom reporting{@render name()}.Unannotated parameters of a snippet written as a component child are typed from the component's snippet prop of the same name.
Importers of an edited component are refreshed when the experimental ts.sys hook is on.
JSDoc type information is preserved when using the TypeScript parser, including in Svelte template expressions, stores, and runes.
Template
{:else if}and{:else}branches preserve type narrowing from preceding conditions.The experimental ts.sys hook now works when the TypeScript program is created before the first .svelte parse.
Fixes parsing TypeScript
$derived(...)declaration tags inside top-level snippets.Fixes the wrong parent type for some nodes.
Uses the Svelte config
compilerOptions.runesfunction value when set.The parser now supports {#each} blocks without as, as in Svelte 5.4.0.
Compatibility with eslint-plugin-prettier was fixed.
The parser no longer errors when <script> tags are used inside {@html}.
Runes mode detection was corrected to prevent parser malfunctions.
Scoping of snippet declarations acting as slot properties was improved.
A parent node is now provided for SvelteFunctionBindingsExpression.
Scripts are now recognized as modules for TypeScript type checking.