Patch Changes
-
4a99c84:
sourceNamesgains alocationskind andtransform()arootoption: component and binding labels carry afile:line:colfor diagnostics, printed the same as@solidjs/babel-plugin's.createComponent(Home, props, "Home", "src/App.tsx:12:5")points at the<Homeopening element (DOM and SSR output); a binding's options gainlocaftername— the attribute's start for an attribute effect (a merged effect points at the first attribute it lists; a property split out ofstyle={{…}}/class={{…}}at that attribute), the hole's{for an insert — and a spread passes it after the tag (spread(el, props, false, undefined, "div", "src/App.tsx:20:12")). The path is relative toroot(default: the working directory) with/separators; line and column are 1-based, so a dev server links the location straight to the source. Like the other kinds,locationsfollowsdevwhen unset,trueturns every kind on, and the object form picks; a location is only emitted beside its label, and never without afilename.transformSourceNamesgainslocations(defaulttrue) androot: it writeslocbesidenamein every options literal it writes or completes —createSignal(0, { name: "count", loc: "src/store.ts:3:22" }), the call's start — keeping an explicitname(and still addingloc) and never overriding an explicitloc. -
3f36f77: Server components: binding slots are removed. Client components in slots replace them: place a client component through a
Slot(<props.x />) where the server's markup needs client behavior, or a formactionfor a mutation. Removed with them: theBindingSlot,SlotOutputandSlotErrortypes, the lazy@solidjs/web/frames/bindentry and its"bind"tier, the_s:*position markers and the compiledssrClaimhole, the effect of theserverComponentscompiler option (@solidjs/compilerand@solidjs/babel-pluginstill accept it, so existing build configs keep working, and ignore it), and theBINDING_SLOT_POSITIONdiagnostic code (@solidjs/signals'DiagnosticCode,solid-js'sdiagnostics.json). Ordinary slots, theirslot:<id>ranges and records, and$keyare unchanged. -
d0ba31c: SSR evaluates a
refexpression beside a spread, as it already does without one, so a ref factory's owned setup (ref={tooltip()}) runs on the server too and the hydration ids after it line up. The ref itself is still never called on the server (#4081). UnderserverComponentsthe same holds outside a server component's render, where a ref expression was never evaluated on either path; inside one the claim evaluates it, once.