Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Release RC packages (rc) - #3399

Open
github-actions[bot] wants to merge 1 commit into
nextfrom
changeset-release/next
Open

Release RC packages (rc)#3399
github-actions[bot] wants to merge 1 commit into
nextfrom
changeset-release/next

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@solidjs/[email protected]

Patch Changes

@solidjs/[email protected]

Patch Changes

@solidjs/[email protected]

Patch Changes

@solidjs/[email protected]

Patch Changes

@solidjs/[email protected]

Patch Changes

  • d7cb456: Fix a second write arriving while an async chain is still in flight (2.0.0-rc Async memo chain publishes a stale result alongside a newer signal value #3373, 2.0.0-rc Repeating a signal write after remounting its async reader publishes it early #3374, 2.0.0-rc Loading reveals stale content before downstream async work finishes #3375, 2.0.0-rc isPending briefly returns false during overlapping updates to an async memo chain #3376).

  • 6095955: Two ways a held write stayed staged past the point it should have revealed:

    • A transaction whose only reporter is disposed by ambient work (a <Show> unmounting the reader of a pending memo) was never re-judged — the flush only evaluates the active transaction, and nothing re-entered a parked one. The writes held with that reader (a signal set while it was pending) stayed staged forever. Disposing a pending reader parked in a transaction now wakes it; the flush re-enters a woken transaction on an otherwise idle pass, prunes the dead reporter and commits (2.0.0-rc Signal update lost when a suspending reader is unmounted #3372).
    • An effect that reads latest() (or otherwise adopts an optimistic lane through its deps) direct-commits on a lane pass, but a hold it had staged on an earlier, lane-free pass of the same transaction was left in place and the transaction's commit published that older frame over the fresh value — Pair: 0 / 0 for good. A lane recompute now drops the hold it supersedes, override or not (2.0.0-rc.8 latest stops updating after intermediate write restores the initial value #3377).
  • 9da7f0a: isPending(details) reports the load of an optimistic value when details derives it through an async memo (2.0.0-rc.8 isPending stays false while an async memo loads an optimistic value #3379). notifyStatus now assigns the node's optimistic lane before poking its companions, so a companion lane created by the poke is parented to the node's lane: the indicator effect flushes on the companion's child lane immediately instead of merging it into the held lane and waiting on the async it reports.

  • 632e45c: Give the latest() shadow companion the ownedWrite flag its isPending companion already carries (2.0.0-rc.8 latest read throws an owned-scope write error when an action resumes #3378). A companion sync is internal plumbing that can run from inside a computation — a transition-held memo recompute pulled mid-tick by a reader creating or refreshing its latest() shadow — and the dev owned-scope write guard halted the app on the shadow write. Toggling a JSX branch that reads latest(memo) off while an action is pending and restoring it as the action resumes threw REACTIVE_WRITE_IN_OWNED_SCOPE.

  • ca05917: OBSERVE.exclude now covers writes: a root write to an excluded subject (the observer's own store or signal) no longer counts toward the interaction that made it, and an interaction whose writes all went to excluded subjects with none of the app's work run — a click on a devtools panel's own button — is not recorded. Store nodes carry the owner their store was created under, so an excluded panel's store is an excluded subject like its signals.

  • af94f67: Server observe surface: OBSERVE.server and the invocation channel

    OBSERVE gains a server slot — an augmentable ServerObserve interface declared empty in @solidjs/signals (re-exported by solid-js) and populated by @solidjs/web's server runtime, so server-side observability consumers subscribe on the one OBSERVE object they already know from the client. The first channel is OBSERVE.server.invocations: subscribe("invocation", (event, live) => …) delivers one { id, direct, at, durationMs, outcome, deferred? } record per server-function execution — HTTP dispatch and direct SSR calls alike — when it settles, with the request event, request, args, and the result or the error as thrown beside it. Observers, not policy: any number of listeners, none able to alter the call; wrapInvocation remains the single policy hook.

    @solidjs/web now publishes observe-tier server artifacts (dist/server.observe.js, server-functions/dist/server.observe.js, frames/dist/server.observe.js) under the observe export condition, alongside the existing dev/prod pairs. The surface and every emit site fold out of the prod artifacts.

[email protected]

Patch Changes

  • af94f67: Server observe surface: OBSERVE.server and the invocation channel

    OBSERVE gains a server slot — an augmentable ServerObserve interface declared empty in @solidjs/signals (re-exported by solid-js) and populated by @solidjs/web's server runtime, so server-side observability consumers subscribe on the one OBSERVE object they already know from the client. The first channel is OBSERVE.server.invocations: subscribe("invocation", (event, live) => …) delivers one { id, direct, at, durationMs, outcome, deferred? } record per server-function execution — HTTP dispatch and direct SSR calls alike — when it settles, with the request event, request, args, and the result or the error as thrown beside it. Observers, not policy: any number of listeners, none able to alter the call; wrapInvocation remains the single policy hook.

    @solidjs/web now publishes observe-tier server artifacts (dist/server.observe.js, server-functions/dist/server.observe.js, frames/dist/server.observe.js) under the observe export condition, alongside the existing dev/prod pairs. The surface and every emit site fold out of the prod artifacts.

  • Updated dependencies [d7cb456]

  • Updated dependencies [6095955]

  • Updated dependencies [9da7f0a]

  • Updated dependencies [632e45c]

  • Updated dependencies [ca05917]

  • Updated dependencies [af94f67]

@solidjs/[email protected]

Patch Changes

@solidjs/[email protected]

Patch Changes

  • 1af28a1: Call runHydrationEvents() after dynamic() spreads props onto a string tag, so events the hydration script queued for a <Dynamic> element are replayed instead of being dropped until _$HY.done.

  • 5b31076: ssrElement no longer emits style="" / class="" for nullish values; they are omitted like every other attribute, matching the client. Skipped props also leave no stray whitespace in the opening tag (ssrElement emits style="" / class="" for nullish values #3382).

  • 084e621: SSR emits the <!--!$--> text separator only between items that resolve to text. Adjacent memos and components that yield elements — every Dynamic, Show, or wrapper-library instance in a list — no longer carry a separator and a comment node each. Text that becomes adjacent through a nested array or a dropped nullish item is now separated, so it hydrates into distinct text nodes (SSR emits <!--!$--> between adjacent memo/function items even when they resolve to elements #3383).

  • af94f67: Server observe surface: OBSERVE.server and the invocation channel

    OBSERVE gains a server slot — an augmentable ServerObserve interface declared empty in @solidjs/signals (re-exported by solid-js) and populated by @solidjs/web's server runtime, so server-side observability consumers subscribe on the one OBSERVE object they already know from the client. The first channel is OBSERVE.server.invocations: subscribe("invocation", (event, live) => …) delivers one { id, direct, at, durationMs, outcome, deferred? } record per server-function execution — HTTP dispatch and direct SSR calls alike — when it settles, with the request event, request, args, and the result or the error as thrown beside it. Observers, not policy: any number of listeners, none able to alter the call; wrapInvocation remains the single policy hook.

    @solidjs/web now publishes observe-tier server artifacts (dist/server.observe.js, server-functions/dist/server.observe.js, frames/dist/server.observe.js) under the observe export condition, alongside the existing dev/prod pairs. The surface and every emit site fold out of the prod artifacts.

  • 042b540: Trace context: getTraceContext(), W3C traceparent on the exchange, and the OBSERVE.server.trace provider slot

    The server runtime now reads the W3C Trace Context half of the HTTP exchange once per request — continuing an incoming traceparent (with tracestate/baggage beside it) or originating a trace when none came in — and exposes it through getTraceContext() from @solidjs/web: { traceId, spanId, parentId?, sampled?, state?, baggage?, entries }, one object per request (direct SSR-time server-function calls included), the render's own for a render outside a request scope, undefined outside both and on the client. Application code forwards a trace downstream with entries.traceparent. This is core HTTP behavior in every build tier.

    The trace is also handed down to the browser: entries are emitted as Server-Timing metrics (traceparent;desc="00-…") when the response head commits — createSSRResponse, commitEventResponse (now also for an event without a response stub, such as the server-function handler's default event), and commitResponseStub (which accepts the owning event in its options) — and as <meta name="…" content="…"> tags in the HTML shell head, delivered wherever the head content goes (</head> splice, onHead). A Server-Timing name the application already wrote is respected; Server-Timing now folds entry by entry when a stub and a response/responseInit both carry one. The browser is told only when something is recording the trace — the incoming traceparent was sampled, or a provider answered — never for a trace the runtime originated alone or an unsampled upstream one (what load balancers and meshes stamp on every request), so an app with no APM sees zero wire change.

    In observe/dev builds, OBSERVE.server.trace.provide(provider) installs a single global provider whose answer merges over the derivation (fields replace, entries merge by name) — how an APM's server SDK contributes its active span and vendor entries (sentry-trace/baggage) once, with no per-request entry point into the host.

  • Updated dependencies [af94f67]

@solidjs/[email protected]

@solidjs/[email protected]

[email protected]

Patch Changes

@github-actions
github-actions Bot force-pushed the changeset-release/next branch 8 times, most recently from 2803d98 to e6792ce Compare September 13, 2026 04:50
@github-actions
github-actions Bot force-pushed the changeset-release/next branch from e6792ce to 85623b8 Compare September 13, 2026 05:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants