chore(deps): update dependency eslint-plugin-solid to ^0.17.0 - #210
Open
renovate[bot] wants to merge 1 commit into
Open
chore(deps): update dependency eslint-plugin-solid to ^0.17.0#210renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
|
commit: |
renovate
Bot
force-pushed
the
renovate/eslint-plugin-solid-0.x
branch
2 times, most recently
from
August 27, 2026 12:07
8e6e29d to
3b8e771
Compare
renovate
Bot
force-pushed
the
renovate/eslint-plugin-solid-0.x
branch
from
August 29, 2026 08:44
3b8e771 to
771f91e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^0.14.5→^0.17.0Release Notes
solidjs-community/eslint-plugin-solid (eslint-plugin-solid)
v0.17.0Compare Source
Server functions are core in Solid 2.0, so the plugin now lints them. Four new rules cover the
"use server"directive's silent failure modes — all enabled as errors in thev2andv2-strictconfigs, and verified against the official Solid 2.0 templates (zero findings) and under Oxlint.New Rules
solid/valid-use-server. The compiler only honors"use server"in specific positions and silently ignores it everywhere else — often shipping database access or secrets to the client without any error. Flags directives that aren't in the directive prologue (after other statements, inside plain blocks), template-literal "directives", and directives in positions the compiler never extracts (object methods, getters/setters, class methods). For module-level directive files, also flags non-function exports (which fail at server boot) and calls to client declaration wrappers (GET,live,withMetafrom@solidjs/web;query,action,liveQueryfrom@solidjs/router), whose client-side behavior is silently compiled out in such files. AclientWrappersoption adds project-specific wrapper names, with*wildcard and/regex/support.solid/require-async-server-function. On the client every server function call resolves a Promise, but during SSR the function is called in-process and returns synchronously — so a non-async server function observes two different return types, and TypeScript only sees one of them. Covers function-level directives and all exports of module-level directive files (includingexport { name }specifiers). Autofixes by insertingasync.solid/no-invalid-server-capture. An editor-time mirror of the compiler's closure-capture validation: server functions cannot capture variables from intermediate scopes (component state, enclosing function parameters), because the extracted function is hoisted to module level on the server and becomes a network proxy on the client. The compiler already rejects this at build time; the rule reports the same captures as you type. Module top-level bindings, imports, globals, own params/locals, named-function-expression self-references, and TS type-only references are all allowed.solid/no-browser-globals-in-server-function. Flags unambiguous browser-only globals (window,document,localStorage, etc.) inside server functions, which only run on the server. The list is deliberately conservative — server runtimes providefetch,crypto,URL, and evennavigator, so those never warn — and shadowing bindings andtypeof windowguards are ignored. In module-level directive files, the whole module is checked.Internal
customReactiveFunctions-style pattern matching (exact names,*wildcards,/regex/strings) was extracted into a sharedcreateNameMatcherutility, now used by bothsolid/reactivityandsolid/valid-use-server.Full Changelog: solidjs-community/eslint-plugin-solid@v0.16.1...v0.17.0
v0.16.1Compare Source
A precision pass over
solid/reactivity, driven by the longest-standing false-positive reports in the tracker. Every fix landed with a regression test reproducing the original issue, and the Solid 2.0 templates still lint clean.Fixes
valuegets a real explanation (#209). Passing a reactive expression to a provider'svalueprop previously produced the generic "should be used within JSX" message — nonsense for something that is in JSX. It now reports a dedicated message explaining that providers readvalueonce, untracked, when created (true in both Solid 1.x and 2.0), and to pass the signal, memo, or store itself. Detection also now covers the Solid 2.0 form, where the context object is used directly as the provider (<MyContext value={...}>), by resolving JSX names tocreateContext()calls.createResourceargument shapes (#199, #195).createResource(fetcher, options)no longer treats the fetcher as a tracked scope (so async fetchers with an options object stop reportingnoAsyncTrackedScope), and increateResource(source, fetcher)the fetcher is now correctly treated as an untracked called function that may be async and read current values. The source remains a synchronous tracked scope.const { item } = propsinsidecreateMemo/createEffectre-runs on updates and no longer warns. Destructuring at component setup level still does.window.setTimeoutand friends (#194). Timer and scheduling callbacks prefixed withwindow.,globalThis., orself.now get the same called-function treatment as the bare globals.mergeProps/mergefunction arguments are tracked scopes (#179). Both wrap function sources increateMemo, so reactive reads inside them no longer warn.createMemoaccessor to acreate*/use*/custom reactive function no longer warns, matching the existing allowance for signals.create*calls (#52).return createMemo(...)(or as an arrow body) no longer reportsshouldAssign— the result is handed to the caller, like a custom primitive.doSomething(() => props.toggle)) no longer warns, matching the existing behavior for named functions: synchronous calls still run tracked, and later calls poll current values.Features
customReactiveFunctions(#176). Entries now support*wildcards ("watch*") and regexes written as"/pattern/"strings, in addition to exact names.v0.16.0Compare Source
The complete Solid 2.0 lint surface: version-aware rules, new
v2/v2-strictconfigs, and afull set of 2.0-specific rules, all vetted against the official Solid 2.0 templates (which lint
clean with zero errors and zero warnings under the
v2config).Features
settings.solid.version. Rules can now read the targeted Solid major version from ESLintsettings (
settings: { solid: { version: 2 } }). Unset means the permissive dual-versionbehavior from 0.15. The new configs preset it; any custom config can opt in with one line.
v2config (eslint-plugin-solid/configs/v2, alsosolid.configs.v2): what theofficial Solid 2.0 templates ship. Sets the version setting, switches existing rules to strict
2.0 semantics, and enables the new 2.0 rules — errors are reserved for near-certain bugs,
heuristics stay warnings.
v2-strictconfig (eslint-plugin-solid/configs/v2-strict): everything inv2plusthe plugin's strongest opinions (see below).
solid/removed-api(error inv2): flags removed/renamed 1.x APIs withautofixes where mechanical (
onMount→onSettled,batch→flush,mergeProps→merge,unwrap→snapshot,equalFn→isEqual,getListener→getObserver,classList={{...}}→class={{...}},"solid-js/web"→"@solidjs/web","solid-js/store"→"solid-js") and prescriptive migration messages otherwise(
createResource,on,Suspense→Loading,Index→<For keyed={false}>,produce, etc.).Lists verified against the Solid 2.0 RC source.
solid/no-single-arg-create-effect(error inv2): Solid 2.0 requires the splitcreateEffect(compute, effect)form. The single-argument 1.x form produces no TS compile erroron a bare statement call and only throws at runtime in dev mode; this rule is the build-time
hard stop for the most commonly reproduced AI mistake.
solid/no-accessor-as-prop(error inv2):<div title={count} />silentlyrenders a stringified function. Fires on any expression that statically resolves to a function
in a value-typed DOM attribute, with a message that states the fix (
count→count()).Event handlers,
ref,children, namespaced attributes, components, and custom elements areexempt.
solid/prefer-structured-class(warning inv2, error inv2-strict): nudgesmanually-built class strings (concatenation with conditionals, conditional template literals,
.join(" ")) toward the structured array/objectClassValueforms that Solid 2.0 acceptsnatively. Static strings and plain interpolation are untouched.
solid/no-module-scope-reactive-primitive(error inv2-strictonly): reactivestate at module scope is shared across SSR requests.
createRoot-wrapped module state is thedeliberate escape hatch and is not flagged.
solid/prefer-onSettled-for-side-effects(warning inv2-strictonly): flagsside-effectful setup (timers, global listeners, observers) in component bodies, where it also
runs during SSR; suggests
onSettled. Never flagsonCleanupitself.solid/no-restated-default-options(error inv2-strictonly, autofixable):removes restated defaults like
<For keyed={true}>and<Show keyed={false}>.settings.solid.versionis 2):solid/no-unknown-namespacesinverts its premise: namespaces are no longer reserved in 2.0,so any colon-name is a legal literal attribute — but the formerly-special prefixes
use:,attr:,bool:,on:, andoncapture:are flagged as near-certain 1.x migration bugs withper-prefix guidance.
prop:remains the only special namespace.solid/event-handlersgraduates from style to correctness: only camelCaseonClickis anevent handler in 2.0; a lowercase
onclickwith a function value is a listener that willnever fire (autofixed to camelCase for known DOM events). Lowercase names with static string
values are legitimate literal attributes and are no longer flagged.
onDoubleClick(whichlowercases to a nonexistent DOM event) is autofixed to
onDblClick.solid/importsrequires the 2.0 export locations: store exports from core"solid-js", webexports from
"@solidjs/web". The legacysolid-js/store/solid-js/websubpaths aresolid/removed-api's territory, avoiding double reports.solid/jsx-no-undefauto-imports the 2.0 control-flow components (For,Repeat,Show,Switch,Match,Errored,Loading,Reveal);Indexis no longer suggested.solid/reactivitydelegates its uncalled-signal-in-DOM-attribute case tosolid/no-accessor-as-propso a node never gets two reports.solid/no-react-depsself-gates off (a dependency array in the second argument is already atype and runtime error in 2.0).
v2config over sources copied from the officialSolid 2.0 templates in CI, and
test/lint-templates.mjssweeps a localsolidjs/templatescheckout. All eleven
solid-v2/*templates lint clean.v0.15.0Compare Source
The revival release: Solid 2.0 support and a modernized toolchain.
Breaking Changes
eslintpeer dependency range is now^9.0.0 || ^10.0.0. Support for ESLint v6–v8 has been dropped.plugin:solid/recommendedandplugin:solid/typescriptconfigs have been removed, matching ESLint v10's removal of the eslintrc system. Useeslint-plugin-solid/configs/recommended/eslint-plugin-solid/configs/typescript, or the configs on the root export (solid.configs.recommended/solid.configs.typescript). Theconfigs["flat/recommended"]andconfigs["flat/typescript"]names from 0.14.x still work as aliases.engines.nodefield is now>=22.0.0(Node 20 reached end-of-life in April 2026).Features
solid/reactivity. The rule now recognizes, alongside the 1.x APIs:createProjection,createOptimistic,createOptimisticStore,merge,omit,isPending,latest,resolve,deep,repeat,flush,action,onSettled,createTrackedEffect,createErrorBoundary,createLoadingBoundary,createRevealOrder, function-formcreateSignal(fn)/createStore(fn), split effects (createEffect(compute, effect)), async computations (e.g.createMemo(async () => ...)), and<For>'skeyedprop callback shapes. Imports from@solidjs/signalsare recognized as Solid imports. Callsites whose meaning differs between 1.x and 2.0 are resolved permissively so that neither interpretation warns.readAfterAwaitwarning insolid/reactivity. In async computations (asynccreateMemo, function-form derived primitives), reactive reads placed after the firstawaitoryieldare not tracked—in 1.x they behave like reads in an event handler, and in 2.0 they can observe unpredictable mid-transition state. The rule now reports these reads specifically and suggests reading the value before the computation suspends.solid/importsunderstands Solid 2.0 export locations.createStore,reconcile, and store types imported from coresolid-js(their 2.0 home) are no longer flagged.jsPluginswithout modification; see the README for setup.Internal
Full Changelog: solidjs-community/eslint-plugin-solid@v0.14.5...v0.15.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.