Skip to content

v17.0.0.rc.9

Pre-release
Pre-release

Choose a tag to compare

@justin808 justin808 released this 12 Jul 10:40

Breaking Changes

  • [Pro] Rolling-deploy previous-URL config is now rolling_deploy_previous_urls (plural) and seeds from multiple endpoints:
    config.rolling_deploy_previous_url is renamed to config.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 = ... to config.rolling_deploy_previous_urls = ... (and the
    ROLLING_DEPLOY_PREVIOUS_URL build arg to ROLLING_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: RSCProvider now
    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
    StreamCache had 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, and StreamCache snapshots each chunk
    before handing it downstream so a mutating consumer can never corrupt the cached entry. Fixes
    Issue 4550.
    PR 4551 by
    AbanoubGhadban.