Breaking Changes
- [Pro] Rolling-deploy previous-URL config is now
rolling_deploy_previous_urls(plural) and seeds from multiple endpoints:
config.rolling_deploy_previous_urlis renamed toconfig.rolling_deploy_previous_urls, and the built-in HTTP
adapter now accepts a single URL string, a comma-separated string, or an Array. Discovery unions the bundle hashes
advertised by every endpoint, and fetch tries each endpoint in order, returning the first that has the requested hash.
Seeding from more than one endpoint (e.g. staging + production) lets an image built in one environment and promoted to
another carry the promotion target's draining bundle — the previous single-URL config could only seed the build
environment, so a promoted production image never held production's draining bundle. Rename any
config.rolling_deploy_previous_url = ...toconfig.rolling_deploy_previous_urls = ...(and the
ROLLING_DEPLOY_PREVIOUS_URLbuild arg toROLLING_DEPLOY_PREVIOUS_URLS). Introduced during the 17.0.0 RC cycle, so
this is not a break for any stable release. See
Promotion deploys need a boot seed.
PR 4544 by justin808.
Fixed
- [Pro] RSC scaffolding now installs the published
react-on-rails-rsc@19.2.1-rc.1:
The Pro generator, compatibility checks, workspace overrides, dummy app, and RSC documentation now use the
published RC.1 build with the coordinated React 19.2.7 peer floor. PR 4587 by justin808. - [Pro] Failing RSC payloads no longer cause unbounded browser requests:
RSCProvidernow
keeps one cached Promise for a logical payload load and retries a transient network, server, or
malformed-payload failure once within it. If the retry also fails, React receives the final
rejection instead of repeatedly starting new requests. The retry bypasses failed embedded
payloads and fetches fresh data; 4xx responses and cancellations are not automatically retried,
and official server rendering does not perform the browser retry. A later browser lookup may try
again after a short retention window. Fixes
react_on_rails_rsc Issue 187.
PR 4564 by
ihabadham. - [Pro] Production streamed RSC CSS reveal gating: Pro streaming now promotes stylesheet
preloads listed in the React client manifest, preventing a flash of unstyled content when
production chunk CSS uses numeric IDs and id-named files. Fixes
Issue 4568.
PR 4570 by
justin808. - [Pro] RSC payload prerender cache no longer stores an empty payload: With
config.prerender_caching = true, the RSC payload endpoint (/rsc_payload/:component_name) served
the first visitor a correct payload but every subsequent visitor a zero-byte payload, because the
length-prefixed framing consumer destructively removed"html"from the chunk Hash that
StreamCachehad buffered by reference and wrote to the cache after the stream completed. The
browser's Flight client then rejected the empty response with"Connection closed.". The framing
consumer now reads"html"without mutating the chunk, andStreamCachesnapshots each chunk
before handing it downstream so a mutating consumer can never corrupt the cached entry. Fixes
Issue 4550.
PR 4551 by
AbanoubGhadban.