Tracking the port of eslint-plugin-svelte rules to Biome. Grouped by the plugin's own categories. Stylistic rules largely overlap with Biome's formatter and may not all become lint rules.
Possible Errors
|
Rule |
Notes |
Difficulty |
| [ ] |
no-dom-manipulating |
needs bind:this variable tracking |
medium |
| [ ] |
no-dupe-else-if-blocks |
|
easy |
| [ ] |
no-dupe-style-properties |
|
easy |
| [ ] |
no-dupe-use-directives |
|
easy |
| [ ] |
no-nested-style-tag |
|
easy |
| [ ] |
no-not-function-handler |
needs type info for identifier expressions |
hard |
| [ ] |
no-object-in-text-mustaches |
|
easy |
| [ ] |
no-raw-special-elements |
|
easy |
| [ ] |
no-shorthand-style-property-overrides |
needs CSS shorthand→longhand mapping |
medium |
| [ ] |
no-store-async |
|
easy |
| [ ] |
no-top-level-browser-globals |
needs guard/control-flow analysis |
medium |
| [ ] |
no-unknown-style-directive-property |
needs CSS property database |
medium |
| [ ] |
prefer-svelte-reactivity |
needs mutation tracking after instantiation |
hard |
| [ ] |
require-store-callbacks-use-set-param |
|
easy |
| [ ] |
require-store-reactive-access |
cross-file stores need type info |
hard |
| [ ] |
valid-style-parse |
unknown lang= values need preprocessor awareness |
medium |
Security
|
Rule |
Notes |
Difficulty |
| [ ] |
no-at-html-tags |
|
easy |
Best Practices
|
Rule |
Notes |
Difficulty |
| [ ] |
block-lang |
|
easy |
| [ ] |
no-add-event-listener |
|
easy |
| [ ] |
no-at-const-tags |
|
easy |
| [ ] |
no-at-debug-tags |
|
easy |
| [ ] |
no-ignored-unsubscribe |
needs usage tracking for subscribe() return value |
medium |
| [ ] |
no-inline-styles |
|
easy |
| [ ] |
no-inspect |
|
easy |
| [ ] |
no-svelte-internal |
|
easy |
| [ ] |
no-unnecessary-state-wrap |
needs type info for reactive class detection |
hard |
| [ ] |
no-unused-props |
cross-file usage needs type system |
hard |
| [ ] |
no-useless-children-snippet |
|
easy |
| [ ] |
no-useless-mustaches |
|
easy |
| [ ] |
prefer-derived-over-derived-by |
|
easy |
| [ ] |
prefer-destructured-store-props |
needs data-flow for property access tracking |
hard |
| [ ] |
prefer-writable-derived |
needs $state+$effect pattern matching |
hard |
| [x] |
require-each-key |
done → useSvelteRequireEachKey (#10503) |
|
| [ ] |
require-optimized-style-attribute |
|
easy |
| [ ] |
require-stores-init |
|
easy |
| [ ] |
valid-each-key |
|
easy |
Stylistic Issues
|
Rule |
Notes |
Difficulty |
| [ ] |
consistent-selector-style |
needs CSS scope analysis |
medium |
| [ ] |
derived-has-same-inputs-outputs |
|
easy |
| [ ] |
max-lines-per-block |
|
easy |
| [ ] |
no-extra-reactive-curlies |
|
easy |
| [ ] |
no-restricted-html-elements |
|
easy |
| [ ] |
prefer-class-directive |
|
easy |
| [ ] |
prefer-style-directive |
|
easy |
| [ ] |
require-event-prefix |
|
easy |
| [ ] |
shorthand-attribute |
|
easy |
| [ ] |
shorthand-directive |
|
easy |
| [ ] |
sort-attributes |
|
easy |
SvelteKit
|
Rule |
Notes |
Difficulty |
| [ ] |
no-export-load-in-svelte-module-in-kit-pages |
needs SvelteKit file routing awareness |
medium |
| [ ] |
no-navigation-without-resolve |
|
medium |
| [ ] |
valid-prop-names-in-kit-pages |
needs SvelteKit routing config |
hard |
Tracking the port of eslint-plugin-svelte rules to Biome. Grouped by the plugin's own categories. Stylistic rules largely overlap with Biome's formatter and may not all become lint rules.
Possible Errors
no-dom-manipulatingbind:thisvariable trackingno-dupe-else-if-blocksno-dupe-style-propertiesno-dupe-use-directivesno-nested-style-tagno-not-function-handlerno-object-in-text-mustachesno-raw-special-elementsno-shorthand-style-property-overridesno-store-asyncno-top-level-browser-globalsno-unknown-style-directive-propertyprefer-svelte-reactivityrequire-store-callbacks-use-set-paramrequire-store-reactive-accessvalid-style-parselang=values need preprocessor awarenessSecurity
no-at-html-tagsBest Practices
block-langno-add-event-listenerno-at-const-tagsno-at-debug-tagsno-ignored-unsubscribesubscribe()return valueno-inline-stylesno-inspectno-svelte-internalno-unnecessary-state-wrapno-unused-propsno-useless-children-snippetno-useless-mustachesprefer-derived-over-derived-byprefer-destructured-store-propsprefer-writable-derived$state+$effectpattern matchingrequire-each-keyuseSvelteRequireEachKey(#10503)require-optimized-style-attributerequire-stores-initvalid-each-keyStylistic Issues
consistent-selector-stylederived-has-same-inputs-outputsmax-lines-per-blockno-extra-reactive-curliesno-restricted-html-elementsprefer-class-directiveprefer-style-directiverequire-event-prefixshorthand-attributeshorthand-directivesort-attributesSvelteKit
no-export-load-in-svelte-module-in-kit-pagesno-navigation-without-resolvevalid-prop-names-in-kit-pages