Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,22 @@
"align-store-overloads",
"align-with-dom-expressions",
"allow-async-without-loading-csr",
"anchor-noscroll-attribute-type",
"arch-tier1-affects-reveal",
"arch-tier2-consolidations",
"async-arg-border-typing",
"async-landing-deps",
"async-slot-args-value-tier",
"async-store-setter-diagnostic",
"async-waterfall-attribution",
"attribution-enable-release-token",
"attribution-feedback-facts",
"attribution-feedback-tables",
"attribution-folds-named-exports",
"attribution-navigation-origin",
"attribution-serializable-reruns",
"attribution-shared-engine-foundation",
"attribution-timeline-records",
"attribution-unstable-memo-output",
"attribution-wide-write",
"attribution-write-provenance",
Expand Down Expand Up @@ -97,13 +101,16 @@
"bump-dom-expressions-next-4",
"bump-dom-expressions-next-5",
"bump-dom-expressions-next-8",
"carry-live-get-grant-across-dev-rebind",
"clarify-invoke-wrapper-contract",
"clean-bikes-teach",
"cleanup-unwind-order",
"cleanup-use-once-helpers",
"client-error-hook",
"client-only-preload-hints",
"client-only-sibling-id-drift",
"client-store-hydration-pending",
"close-serialized-iterators-on-abandon",
"coalesce-refresh-scheduling",
"cold-field-extension-split",
"commit-clears-transition-stamp",
Expand All @@ -112,13 +119,17 @@
"compiler-component-names",
"compiler-loader-accepts-patch-driver",
"compiler-loader-prefer-local-build",
"compiler-source-names-bindings",
"compiler-source-names-option",
"compiler-source-names-primitives",
"compiler-spread-sources-array",
"composed-header-bounds-transport",
"contain-flight-collector-errors",
"container-tier-projection-traces",
"context-default-less-throws",
"continue-tsrx-semantic-ir",
"core-hot-path-shape-alignment",
"create-root-ownership-jsdoc",
"cross-package-owner-fields",
"csr-hydration-seam-trim",
"curly-rats-dress",
Expand All @@ -140,11 +151,13 @@
"dev-gate-lazy-hydration-diagnostics",
"dev-invariant-assertions",
"dev-tools-cleanup",
"dev-unscoped-hole-allocated-ids",
"dev-warn-scripted-304",
"dev-warn-unhandled-async",
"diagnostic-code-prefix",
"diagnostic-console-footers",
"diagnostics-console-addressability",
"diagnostics-engine-release-token",
"diagnostics-fanout-repair-projection",
"diagnostics-owner-path-console-entry",
"diagnostics-responsiveness-gate",
Expand All @@ -159,6 +172,7 @@
"document-live-slot-args-client",
"document-shell-hydration-docs",
"dom-expressions-scoped-packages",
"dormant-memo-relink-on-reawaken",
"drop-compiler-legacy",
"dynamic-factory-redesign",
"dynamic-remount-latest-address",
Expand All @@ -180,10 +194,12 @@
"enforce-provide-event-once-on-direct-calls",
"enforce-provide-event-single-invocation",
"error-hook-thrower-path",
"errored-fallback-thunk-scope",
"export-memo-options",
"expose-enableExternalSource-loading-on",
"extract-nested-server-function-declarations",
"fail-untagged-2xx-responses",
"fallback-record-times-display",
"fetch-option-retry-contract",
"fill-cleanup-occurrence-scope",
"fix-absorbed-compiler-parity",
Expand All @@ -209,6 +225,7 @@
"fix-async-memo-stale-deps",
"fix-async-signal-ssr-loading",
"fix-async-warning-through-errored",
"fix-boundary-pending-fallback-reveal",
"fix-buffered-iterable-replay-latest",
"fix-buffered-store-replay-claim",
"fix-chunk-reader-quadratic-growth",
Expand All @@ -220,6 +237,7 @@
"fix-contested-effect-rederive",
"fix-cookie-bounds-and-validity",
"fix-create-projection-seed-inference",
"fix-csrf-origin-cross-site",
"fix-dead-transition-stamp-revival",
"fix-decoder-collision-orphaned-promise",
"fix-deep-chained-view-subscription",
Expand Down Expand Up @@ -266,6 +284,9 @@
"fix-held-reader-disposed-lane-hold",
"fix-held-transition-child-disposal",
"fix-hybrid-iterable-signal-takeover",
"fix-hybrid-memo-handoff-quiet",
"fix-hybrid-store-gate-waits-for-server",
"fix-hybrid-store-handoff-quiet",
"fix-hydrated-nullish-values",
"fix-hydration-and-signals-baseline",
"fix-hydration-latched-divergence-lost",
Expand Down Expand Up @@ -319,8 +340,10 @@
"fix-nojs-shape-on-navigation",
"fix-nullish-lone-spread",
"fix-omit-merge-sources-tunnel",
"fix-oncleanup-reentrant-dispose-runs-once",
"fix-onsettled-unowned-cleanup",
"fix-optimistic-lane-release",
"fix-optimistic-move-duplicate-3548",
"fix-optimistic-override-premature-revert",
"fix-optimistic-same-value-overlap",
"fix-optimistic-settle-verdicts",
Expand Down Expand Up @@ -382,6 +405,7 @@
"fix-reveal-carve-out-input-visibility",
"fix-reveal-frontier-errored-boundary",
"fix-reveal-holds-on-lane-flight",
"fix-root-dispose-drains-parked-frame",
"fix-scheduler-child-queue-removal",
"fix-select-empty-value-ssr",
"fix-server-dynamic-promise-source",
Expand All @@ -405,6 +429,7 @@
"fix-snapshot-array-length-zero",
"fix-snapshot-derived-store-row-proxy-leak",
"fix-snapshot-optimistic-overlay",
"fix-sole-child-falsy-primitive",
"fix-spread-hydration-mismatch",
"fix-ssr-async-error-handling",
"fix-ssr-bench-shape",
Expand All @@ -415,12 +440,14 @@
"fix-ssr-memo-promise-notready",
"fix-ssr-owner-id-parity",
"fix-ssr-owner-pool-stale-links",
"fix-ssr-post-render-rejection-3570",
"fix-ssr-projection-replacement-yields",
"fix-ssr-rejected-lazy-reaches-errored",
"fix-ssr-retry-child-reset",
"fix-ssr-retry-convergence-oom",
"fix-ssr-server-projection-pending-store",
"fix-ssr-spread-children-read-once",
"fix-ssr-stream-bare-child-rejection-3569",
"fix-ssr-stream-rejected-fragment-hang",
"fix-ssr-sync-memo-child-id-leak",
"fix-ssr-text-separators-resolved",
Expand Down Expand Up @@ -457,8 +484,10 @@
"fix-tsrx-release-expansion-stack",
"fix-universal-text-escaping",
"fix-usehead-prelude-hydration-walk",
"fix-usehead-stylesheet-hydration",
"fix-validate-document-shell",
"fix-version-skew-label-before-gate",
"fix-zombie-flag-survives-recompute",
"flash-falsy-nojs-outcomes",
"flash-key-derivation",
"flatten-promise-of-async-iterable",
Expand Down Expand Up @@ -495,6 +524,8 @@
"handle-async-setter-errors",
"head-shell-hold-probe-seam",
"heap-mark-incremental",
"held-derivation-not-a-proposal",
"held-truth-masks-lane-passes-only",
"hide-internal-type-exports",
"hoist-web-protocol-components",
"hold-consistency-batch-2",
Expand All @@ -504,6 +535,7 @@
"hydrate-claim-path",
"hydrating-root-snapshot-scope",
"hydrating-store-engine-seam",
"hydration-null-owner-hybrid-latch",
"hydration-primitive-wrappers",
"identity-keyed-server-function-ids",
"ignore-inherited-dom-properties",
Expand Down Expand Up @@ -531,6 +563,7 @@
"latest-probe-order-independence",
"latest-seed-invisibility",
"latest-shadow-owned-write",
"latest-shadow-rewrite-stays-ambient",
"latest-uninitialized-throws",
"lazy-assets-post-settle-livelock",
"lazy-async-asset-resolver",
Expand All @@ -548,6 +581,10 @@
"live-retryable-4xx-and-retry-after",
"live-source-auto-hybrid",
"loading-errored-composition-escape",
"loading-on-follows-frame",
"loading-on-keyed-boundary-not-born-held",
"loading-on-latest-is-a-capability",
"loading-on-outside-hold-same-source-only",
"loading-value-commit-zero",
"loading-value-size-pass",
"loading-value-ssr-commit-zero",
Expand Down Expand Up @@ -576,7 +613,9 @@
"observe-node-shapes",
"observe-records-channel",
"observe-shape-freeze",
"observe-subjectof-jsdoc",
"observe-tier",
"omit-copy-path-rehomes-accessors",
"omit-nested-merge-record",
"one-unflushed-adopted",
"optimistic-draft-reads-compose-over-staged-truth",
Expand Down Expand Up @@ -619,7 +658,13 @@
"perf-dep-revalidation-and-reconcile",
"perf-footer-attribution-discovery",
"perf-ssr-walker-entry",
"perf-tracks-prod-fold-audit",
"perfect-spies-pretend",
"performance-tracks-adapter",
"performance-tracks-dev-enrichments",
"performance-tracks-propagation",
"performance-tracks-review-fixes",
"performance-tracks-server-spans",
"phase2-optimistic-code-reduction",
"pin-prop-condition-memo-id-parity",
"port-store-return-security",
Expand All @@ -629,7 +674,9 @@
"preload-identity-qualifiers",
"preloadable-server-function-reads",
"preserve-bound-event-tuples",
"preserve-directive-source-maps",
"preserve-store-symbol-snapshots",
"projection-draft-valid-until-superseded",
"projection-leaf-companions-die-with-firewall",
"projection-leaf-release",
"projection-lists-drivable",
Expand All @@ -643,6 +690,7 @@
"reaction-rearm-replaces",
"read-every-body-the-transport-tees",
"rebuild-buffered-request-from-parts",
"recompute-preserves-disposed",
"reconcile-array-object-shape-guard",
"reconcile-default-id-positional-null",
"reconcile-symbol-keyed-nodes",
Expand All @@ -662,6 +710,7 @@
"refresh-decline-document-shell-modules",
"refresh-held-write-stays-reask",
"refresh-lifts-stale-manual-write-mask",
"refresh-wrapper-out-of-owner-paths",
"refreshable-type-alias",
"refusals-commit-event-stub",
"refuse-flush-in-action-body",
Expand Down Expand Up @@ -705,13 +754,15 @@
"reveal-together-nested",
"revert-complete-store-seeds",
"revert-dynamic-deferred-creation",
"revert-hydrate-wait-for-records",
"row-proof-admission",
"rude-pillows-tell",
"rxcore-ssr-async-value",
"sanitize-graph-failures",
"scope-deferred-server-function-results",
"scope-function-children-holes",
"scope-nested-deferred-results-without-mutation",
"scope-property-read-holes",
"serialization-decode-entry",
"serve-one-slow-selection",
"server-boundary-records",
Expand All @@ -721,6 +772,7 @@
"server-diagnostics-channel",
"server-error-hook",
"server-first-value-lock",
"server-fn-undefined-before-string",
"server-function-call-observers",
"server-function-data-address-split",
"server-function-extension-surface",
Expand Down Expand Up @@ -770,17 +822,23 @@
"snapshot-hydration-safety",
"snapshot-trailing-holes",
"solid-native-frame-protocol-identifiers",
"solid-query-gate-packs-compiler",
"spec-a33-fallback-hold",
"spread-direct-sources",
"spread-fewer-nodes",
"ssr-boundary-resolve-scope-3414",
"ssr-component-names",
"ssr-element-attrs-and-merge-read-path",
"ssr-element-join-in-place",
"ssr-element-sources",
"ssr-error-sanitization",
"ssr-falsy-rejections-and-thenables",
"ssr-hole-id-scopes",
"ssr-props-hoisted-constructors",
"ssr-retry-robustness",
"ssr-scope-lazy-id",
"ssr-spread-static-tail",
"ssr-spread-static-text-escape",
"ssrSource-effects-and-fix-server-createEffect",
"ssrsource-async-iterables",
"staged-reporter-deps-tail",
Expand Down Expand Up @@ -859,6 +917,7 @@
"unstable-list-identity",
"until-flip-entanglement",
"until-live-source-ack",
"untracked-read-after-await",
"unwrap-status-error-nullish",
"update-deps-and-build-compat",
"update-dom-expressions-next-16",
Expand All @@ -879,18 +938,21 @@
"view-table-on-enumeration",
"violet-stingrays-end",
"wait-asset-seam",
"wake-synchronously-settled-transactions",
"warm-doors-flow",
"web-commit-event-response",
"web-feature-folders",
"web-http-declaration-ledger",
"web-lazy-serializer-split",
"web-nested-package-json-exports",
"web-portal-delegation-containers",
"web-request-event-locals",
"web-serialization-create-plugin",
"web-server-dist-prod-mode",
"why-did-this-run-attribution",
"write-proposals-3494",
"written-keys-bound",
"zombie-chain-dev-invariant",
"zombie-pair-extension-fast-drain"
]
}
15 changes: 15 additions & 0 deletions packages/babel-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# @solidjs/babel-plugin

## 2.0.0-rc.10

### Patch Changes

- fd36d37: `sourceNames.bindings`: compiled binding effects are named by what they write. An attribute effect gets `<tag>.<attribute>` as written (`span.textContent`, `div.class:active`, `div.style:color`; a template's merged effect lists all of its bindings), a hole's insert is named for the parent it fills (`div.children`), and a spread passes its tag so the runtime labels its attribute effect `div.spread` and its children insert `div.children`. The names travel as a trailing options argument on `effect`/`insert` (`{ name }`) and a trailing string on `spread`; `@solidjs/web`'s `effect`, `insert`, and `spread` accept them and put them on the render effect nodes, where the dev and observe tiers show them in owner paths, attribution chains, and the Propagation track — a binding effect reads `span.textContent ← count` instead of `effect ← count`. Production ignores the names; output with the option off is unchanged. DOM output only; `sourceNames: true` turns it on with `components`.
- fd36d37: Rename the compilers' `componentNames` option to `sourceNames`, now `boolean | { components?: boolean }`. `sourceNames: true` (or `{ components: true }`) is what `componentNames: true` was — the tag as written in source as `createComponent`'s third argument, on DOM and SSR output. The option is now the home for every kind of source name the compilers can carry into output for the dev and observe runtimes to label the reactive graph with (binding effects and primitives follow); the object form picks kinds. `@solidjs/compiler` rejects `componentNames` as an unknown option, so a stale `@solidjs/vite-plugin` fails loudly rather than compiling without labels.
- 45407d1: JSX passed through a prop other than `children` (a layout's `header`, an object of slots, a context value) now hydrates when another id-allocating hole follows it (#3567). Both compilers' hole-scope predicate treated only `props.children` as able to build hydratable content, so a `{props.header}` hole compiled to a transparent insert: the server reserved the scoped sibling's slot at registration and gave the header's elements the next id, while the client allocated in source order, and every key after the slot shifted. The predicate is now a denylist: a dynamic hole takes a scope unless its value is provably a primitive (literals, template literals, unary, binary and update expressions), so property reads, optional calls, the left operand of `||`/`??`, sequence and assignment expressions, and array literals with hydratable entries are all scoped. Ids of elements after such a hole shift by one slot on both sides.
- 1735074: SSR: a component's props literal with getters compiles to a module-level constructor with shared getters (`hoistProps`, default on) instead of an object literal, which V8 builds in dictionary mode with a closure per getter per instance. Same own keys, order, descriptors and prototype; a props getter is now defined only for a read through its own object — copying its descriptor elsewhere throws (dev names the rule). Sites closing over a reassigned or later-declared binding, `this`, or `arguments` keep the literal. Babel and the native compiler emit the same output.
- e10a4ba: SSR: attributes written after an element's last spread are markup, not a source. `<li {...rest} class="row" data-id={id}>` compiles to `ssrElement("li", rest, …, _sk$, () => ' class="row"' + ssrElementAttribute("data-id", id))` — statics written as the template path writes them, dynamics through `ssrElementAttribute` (the spread walk's rules for one key), the whole string a literal when every part is static — with a hoisted skip predicate (`var _sk$ = k => k === "class" || k === "data-id"`, one per key set) so the spread's own copies of those keys are never read or emitted. No later source can override a trailing attribute, so the output is unchanged; the thunk runs where the trailing source's getters used to be read, so hydration ids keep their order. What goes away per element is the trailing object literal (with getters, a dictionary-mode object and a closure per getter), its key list, and the precedence check on every key of the spread — an element whose only other source is the spread now serializes from one plain object. Attributes before a spread stay a source, and a source literal with getters (`<li data-id={id} class="row" {...rest}>`) now compiles to the same hoisted constructor as a component's props (`hoistProps`). Spread-static-tail server bench, 500 rows: statics after the spread 1.31×; a dynamic and a static after the spread 1.42× (1.22× from the hoisted source form, 1.17× from the thunk on top); the same attributes before the spread 1.21×. Child properties (`innerHTML`, `textContent`, `children`), a textarea's `value`, reserved namespaces and JSX-valued attributes stay sources.
- 9adf007: Escape static text on SSR spread elements (#3557)
- Static text children of a spread element (`<div {...props}>a &lt;b&gt;</div>`) are now HTML-escaped at compile time in both compilers, matching the template path; `script` and `style` children stay raw.
- A static textarea `value` folded into the template (`<textarea value="a &lt;b&gt;" />`) is escaped in both compilers.
- The Babel plugin no longer folds a textarea `value` into children on an element that carries a spread, so the value stays a prop and precedence follows JSX source order, matching the native compiler.
- Static string props on the Babel spread paths are rebuilt from their decoded value, so `<div {...props} title="a &amp; b" />` no longer double-encodes entities.

## 2.0.0-rc.9

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/babel-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@solidjs/babel-plugin",
"description": "Babel compiler plugin for Solid templates",
"version": "2.0.0-rc.9",
"version": "2.0.0-rc.10",
"author": "Ryan Carniato",
"license": "MIT",
"repository": {
Expand Down
Loading