Release RC packages (rc) - #3399
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/next
branch
8 times, most recently
from
September 13, 2026 04:50
2803d98 to
e6792ce
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
from
September 13, 2026 05:30
e6792ce to
85623b8
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 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.
nextis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonnext.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).
arestarted whileb's first flight was up),bstays pending ona; the stale landing no longer let the transaction commit the newer signal beside the older derived value (2 / 1, 2.0.0-rc Async memo chain publishes a stale result alongside a newer signal value #3373) or blipisPendingtofalse(2.0.0-rc isPending briefly returns false during overlapping updates to an async memo chain #3376). A fresh flight drops pending entries its inputs propagated earlier — the run read them, so a masked input (an active override, A17) does not hold it._error.source, which a later-pending input overwrites; the held write no longer commits ahead of its answer once the load is re-asked under anon-scoped boundary (2.0.0-rc Loading reveals stale content before downstream async work finishes #3375).Loadingboundary records every source the notifying effect is pending on, not only the one the notification carries — anonreset no longer reveals content when the boundary's one collected source settles while the effect is still pending on a flight it already carried (2.0.0-rc Loading reveals stale content before downstream async work finishes #3375).Count: 1besideDetails: 0, 2.0.0-rc Repeating a signal write after remounting its async reader publishes it early #3374).Loadingboundary'sonreset ends the hold on writes that only its readers observed: a reader registered while the boundary showed content stops blocking once the boundary flips to its fallback, and the parked transaction is woken and re-judged in the same drain. A reader outside the boundary that also observes the flight still holds it (2.0.0-rc Loading reveals stale content before downstream async work finishes #3375).6095955: Two ways a held write stayed staged past the point it should have revealed:
<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).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 / 0for 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 whendetailsderives it through an async memo (2.0.0-rc.8 isPending stays false while an async memo loads an optimistic value #3379).notifyStatusnow 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
ownedWriteflag 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 readslatest(memo)off while an action is pending and restoring it as the action resumes threw REACTIVE_WRITE_IN_OWNED_SCOPE.ca05917:
OBSERVE.excludenow 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.serverand the invocation channelOBSERVEgains aserverslot — an augmentableServerObserveinterface declared empty in@solidjs/signals(re-exported bysolid-js) and populated by@solidjs/web's server runtime, so server-side observability consumers subscribe on the oneOBSERVEobject they already know from the client. The first channel isOBSERVE.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;wrapInvocationremains the single policy hook.@solidjs/webnow publishes observe-tier server artifacts (dist/server.observe.js,server-functions/dist/server.observe.js,frames/dist/server.observe.js) under theobserveexport 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.serverand the invocation channelOBSERVEgains aserverslot — an augmentableServerObserveinterface declared empty in@solidjs/signals(re-exported bysolid-js) and populated by@solidjs/web's server runtime, so server-side observability consumers subscribe on the oneOBSERVEobject they already know from the client. The first channel isOBSERVE.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;wrapInvocationremains the single policy hook.@solidjs/webnow publishes observe-tier server artifacts (dist/server.observe.js,server-functions/dist/server.observe.js,frames/dist/server.observe.js) under theobserveexport 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()afterdynamic()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:
ssrElementno longer emitsstyle=""/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 (ssrElementemitsstyle=""/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 — everyDynamic,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.serverand the invocation channelOBSERVEgains aserverslot — an augmentableServerObserveinterface declared empty in@solidjs/signals(re-exported bysolid-js) and populated by@solidjs/web's server runtime, so server-side observability consumers subscribe on the oneOBSERVEobject they already know from the client. The first channel isOBSERVE.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;wrapInvocationremains the single policy hook.@solidjs/webnow publishes observe-tier server artifacts (dist/server.observe.js,server-functions/dist/server.observe.js,frames/dist/server.observe.js) under theobserveexport condition, alongside the existing dev/prod pairs. The surface and every emit site fold out of the prod artifacts.042b540: Trace context:
getTraceContext(), W3Ctraceparenton the exchange, and theOBSERVE.server.traceprovider slotThe server runtime now reads the W3C Trace Context half of the HTTP exchange once per request — continuing an incoming
traceparent(withtracestate/baggagebeside it) or originating a trace when none came in — and exposes it throughgetTraceContext()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,undefinedoutside both and on the client. Application code forwards a trace downstream withentries.traceparent. This is core HTTP behavior in every build tier.The trace is also handed down to the browser:
entriesare emitted asServer-Timingmetrics (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), andcommitResponseStub(which accepts the owningeventin its options) — and as<meta name="…" content="…">tags in the HTML shell head, delivered wherever the head content goes (</head>splice,onHead). AServer-Timingname the application already wrote is respected;Server-Timingnow folds entry by entry when a stub and a response/responseInitboth carry one. The browser is told only when something is recording the trace — the incomingtraceparentwas 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,entriesmerge 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