Stamp 16.4.0.rc.7 changelog and collapse rc.6#2579
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughAdds an Unreleased → Changes
Sequence Diagram(s)sequenceDiagram
participant Client as Client\n(RSC / Hydration)
participant Server as Server\n(react_on_rails_pro)
participant Router as TanStack\nRouter
participant App as React\nApp Render
rect rgba(100,150,240,0.5)
Client->>Server: Request page (RSC/SSR)
Server->>Router: router.load(route) (async)
Router-->>Server: route data / resolved routes
Server->>App: serverRenderTanStackAppAsync(data)
App-->>Server: rendered HTML (returns Promise)
Server->>Client: HTML + hydration payload
end
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR stamps the
Confidence Score: 5/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["### [Unreleased]
(empty — awaiting next commits)"] --> B
B["### [16.4.0.rc.7] - 2026-03-08
'Changes since last non-beta release'
─────────────────────────────────
Added (8 entries — rc.6 + rc.7 merged)
Improved (1 entry)
Fixed (10 entries — rc.6 + rc.7 merged)
Pro > Added (2 entries)
Pro > Changed (1 entry)
Pro > Improved (1 entry)
Pro > Fixed (11 entries — rc.6 + rc.7 merged)"] --> C
C["### [16.3.0] - 2026-02-05
(previous stable release)"]
D["[unreleased] link
compare v16.4.0.rc.7...master"] --> A
E["[16.4.0.rc.7] link
compare v16.3.0...v16.4.0.rc.7"] --> B
F["[16.3.0] link
compare v16.2.1...v16.3.0"] --> C
Last reviewed commit: 1867770 |
Review: Stamp 16.4.0.rc.7 changelog and collapse rc.6This is a clean, well-executed prerelease changelog update. The implementation looks correct: Verified:
Minor observation: No issues with:
LGTM for merging. |
| - **Fix streaming SSR hangs and silent error absorption in RSC payload injection**: Fixed two related issues: (1) streaming SSR renders hanging forever when errors occur because Node.js `stream.pipe()` doesn't propagate errors or closure from source to destination, and (2) errors in the RSC payload injection pipeline being silently absorbed, preventing them from reaching error reporters like Sentry. Introduced a shared `safePipe` utility and used `'close'` events as reliable termination signals across the streaming pipeline (Node renderer, RSC payload injection, transform streams, and Ruby async task). Also added a Ruby safety net to prevent Rails request hangs when async rendering tasks raise before the first chunk. [PR 2407](https://github.com/shakacode/react_on_rails/pull/2407) by [AbanoubGhadban](https://github.com/AbanoubGhadban). | ||
| - **Node renderer duplicate error reports for render failures**: Fixed duplicate `errorReporter.message` notifications when unexpected exceptions occurred in `handleRenderRequest`. The handler now returns an error `ResponseResult` instead of rethrowing, so the same failure is not reported again by `worker.ts` while still returning a 400 response. [PR 2531](https://github.com/shakacode/react_on_rails/pull/2531) by [justin808](https://github.com/justin808). | ||
| - **Fix RSC payload JSON corruption from Rails view annotations in development**: RSC payload responses were rendered through an HTML template, so when `annotate_rendered_view_with_filenames` was enabled, Rails wrapped NDJSON chunks with HTML comments and broke client-side `JSON.parse`. The payload endpoint now renders the template in text format and serves `application/x-ndjson`, and a request spec covers the annotated-view scenario. If you override `custom_rsc_payload_template`, ensure it resolves to a text or format-neutral template (for example, `.text.erb`) rather than `.html.erb`. When RSC support is enabled, startup now also warns if `Rack::Deflater` is present, because response-transforming middleware can interfere with `ActionController::Live` NDJSON streaming. [PR 2535](https://github.com/shakacode/react_on_rails/pull/2535) by [justin808](https://github.com/justin808). | ||
| - **Fixed buildVM promise cleanup ordering in the node renderer**. `buildVM()` cleanup now runs via promise chaining after `vmCreationPromises.set()`, preventing failed synchronous VM builds from leaving stale rejected promises that block retries for the same bundle path. [PR 2484](https://github.com/shakacode/react_on_rails/pull/2484) by [justin808](https://github.com/justin808). |
There was a problem hiding this comment.
This buildVM entry was the only entry in the Pro > Fixed section under the original rc.7 stamp. After collapsing rc.6, the rc.6 Pro Fixed entries were prepended above it, leaving this as the last entry despite being from the earlier rc.7 batch. Functionally fine, but if you prefer consistent ordering (e.g. by merge date), this could be moved to just after the ##### Fixed heading.
- Stamp version header for 16.4.0.rc.7 - Collapse rc.6 section into rc.7 (single prerelease section) - Add new entries: #2418 (CSP nonce for RSC), #2421 (babel preset), #2581 (doctor false positives) - Remove duplicate PR 2407 entry (appeared in both sections) - Update version diff links Co-Authored-By: Claude Opus 4.6 <[email protected]>
1867770 to
e3575df
Compare
|
|
||
| - **Better error messages when component is missing `'use client'` with RSC**. When RSC support is enabled, components without `'use client'` silently crash at runtime with confusing errors. Improved error messages at multiple layers: runtime server and client bundles now include the component name and suggest adding `'use client'`, build-time heuristic scans for client-only patterns and emits warnings, and generated server component pack files explain the classification. [PR 2403](https://github.com/shakacode/react_on_rails/pull/2403) by [AbanoubGhadban](https://github.com/AbanoubGhadban). | ||
|
|
||
| #### Pro |
There was a problem hiding this comment.
There are now two #### Pro sections within the same 16.4.0.rc.7 release block (the first appears at line 74). The ##### Fixed entries here should be nested under the first #### Pro section rather than starting a second one. This creates malformed changelog structure that could confuse readers and any tooling that parses the changelog.
Suggested fix: remove this second #### Pro heading and move the ##### Fixed subsection under the first #### Pro block (after the ##### Improved subsection on ~line 87).
|
Review: Stamp 16.4.0.rc.7 changelog and collapse rc.6 This is a documentation-only change and the overall approach is correct -- stamping the new prerelease header and collapsing rc.6 entries into rc.7 follows the project's established convention. Issue: Duplicate '#### Pro' section headers The collapse introduced two separate '#### Pro' section headings within the single '16.4.0.rc.7' release block (at lines 74 and 89 of the current file). The '##### Fixed' subsection under the second heading should be folded into the first '#### Pro' block, giving a single Pro section with the expected sub-headings ('##### Added', '##### Changed', '##### Improved', '##### Fixed'). This is the only structural problem I found. Everything else looks correct:
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CHANGELOG.md`:
- Line 89: The CHANGELOG contains duplicate "#### Pro" headings; remove the
second "#### Pro" occurrence (the duplicate header from the diff) and move any
subsections or content under it into the first "#### Pro" section so all
Pro-related items are consolidated under a single header; ensure there is only
one "#### Pro" heading and that all Pro subsections are grouped beneath the
original.
|
|
||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.4.0.rc.6...master | ||
| [16.4.0.rc.6]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...v16.4.0.rc.6 | ||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master |
There was a problem hiding this comment.
The [unreleased] and [16.4.0.rc.8] diff links are missing the v prefix on 16.4.0.rc.8, which is inconsistent with every other version link in this file (e.g., v16.4.0.rc.6, v16.3.0, v16.4.0.rc.7 two lines below). When the v16.4.0.rc.8 tag is created, these links will 404.
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master | |
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.4.0.rc.8...master | |
| [16.4.0.rc.8]: https://github.com/shakacode/react_on_rails/compare/v16.4.0.rc.7...v16.4.0.rc.8 |
|
|
||
| ### [Unreleased] | ||
|
|
||
| ### [16.4.0.rc.8] - 2026-03-10 |
There was a problem hiding this comment.
Note: The PR title/description say this stamps 16.4.0.rc.7 and collapses rc.6, but a second commit was added that actually stamps 16.4.0.rc.8 (2026-03-10) and collapses rc.7. The PR description is stale and should be updated to reflect the final state.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
e528287 to
6e418ba
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CHANGELOG.md`:
- Line 2039: Remove the stale markdown reference definition "[16.4.0.rc.7]:
https://github.com/shakacode/react_on_rails/compare/v16.3.0...v16.4.0.rc.7" from
CHANGELOG.md; search the document for any remaining uses of "16.4.0.rc.7" to
confirm it's unused, delete the lone reference line, and run markdownlint (or
grep) to verify MD053 no longer triggers.
- Around line 2037-2038: Replace the non-prefixed tag name used in the two
compare links by changing every occurrence of "16.4.0.rc.8" to the v-prefixed
"v16.4.0.rc.8" so the link targets match the repository's tag naming convention
(update both the [unreleased] compare URL and the [16.4.0.rc.8] compare URL
lines shown in the diff).
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master | ||
| [16.4.0.rc.8]: https://github.com/shakacode/react_on_rails/compare/v16.4.0.rc.7...16.4.0.rc.8 |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'Matching remote tags:\n'
git ls-remote --tags origin | grep -E 'refs/tags/(v)?16\.4\.0\.rc\.(7|8)$' | sort || true
printf '\nCurrent footer entries:\n'
sed -n '2037,2039p' CHANGELOG.mdRepository: shakacode/react_on_rails
Length of output: 434
Update compare links to use the v-prefixed tag name.
The v16.4.0.rc.8 tag does not yet exist in the repository. When created, it will follow the established v-prefix convention (matching v16.4.0.rc.7, v16.3.0, etc.). Lines 2037–2038 currently reference 16.4.0.rc.8 without the prefix, which will be inconsistent and broken. Both lines should use v16.4.0.rc.8 instead.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CHANGELOG.md` around lines 2037 - 2038, Replace the non-prefixed tag name
used in the two compare links by changing every occurrence of "16.4.0.rc.8" to
the v-prefixed "v16.4.0.rc.8" so the link targets match the repository's tag
naming convention (update both the [unreleased] compare URL and the
[16.4.0.rc.8] compare URL lines shown in the diff).
PR ReviewThis is a CHANGELOG-only change that stamps the 1. PR title/description mismatch with actual content The PR title says "Stamp 16.4.0.rc.7 changelog and collapse rc.6" and the description references rc.7/rc.6 throughout, but the actual diff and final file stamp 16.4.0.rc.8. The second commit updated the version to rc.8 but the PR metadata was never updated. This is confusing for history review and could mislead changelog automation. Recommendation: Update the PR title and description to reflect rc.8. 2. Inconsistent The new compare links at the bottom of CHANGELOG.md drop the If the git tag is created as Recommendation: Use the Overall The content reorganization (collapsing prior RC entries into rc.8) is correct and follows the prerelease convention. The individual changelog entries are accurate and well-written. |
|
|
||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.4.0.rc.6...master | ||
| [16.4.0.rc.6]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...v16.4.0.rc.6 | ||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master |
There was a problem hiding this comment.
The v prefix is missing here. The previous RC link was v16.4.0.rc.6 and the adjacent v16.3.0 link uses it. If the tag is created as v16.4.0.rc.8, this link will 404.
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master | |
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.4.0.rc.8...master |
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.4.0.rc.6...master | ||
| [16.4.0.rc.6]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...v16.4.0.rc.6 | ||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master | ||
| [16.4.0.rc.8]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...16.4.0.rc.8 |
There was a problem hiding this comment.
Same issue: right-hand side of the compare URL is missing the v prefix, making it inconsistent with v16.3.0 on the left side. This will break the link if the tag is v16.4.0.rc.8.
| [16.4.0.rc.8]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...16.4.0.rc.8 | |
| [16.4.0.rc.8]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...v16.4.0.rc.8 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6e418ba63a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master | ||
| [16.4.0.rc.8]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...16.4.0.rc.8 |
There was a problem hiding this comment.
Restore v prefix in rc.8 compare links
Both new compare URLs use 16.4.0.rc.8 without the v prefix, but the release tooling only creates and recognizes tags in v... format (rakelib/release.rake creates tag_name = "v#{actual_gem_version}" and parses prerelease tags with /\Av(\d+\.\d+\.\d+)\.(...)/). That means these changelog links can resolve to missing refs (404) and users cannot open the intended release diffs from the changelog.
Useful? React with 👍 / 👎.
Summary
### [16.4.0.rc.7] - 2026-03-08version header in CHANGELOG.md[unreleased]and[16.4.0.rc.7]now point correctly)This follows the prerelease changelog convention: prior prereleases are collapsed into the latest one to keep a single accumulating section of all changes since the last stable release (16.3.0).
Test plan
🤖 Generated with Claude Code
Note
Low Risk
Documentation-only change to
CHANGELOG.md(release notes and compare links) with no impact on runtime behavior.Overview
Stamps a new prerelease section
16.4.0.rc.7(2026-03-08) inCHANGELOG.mdand collapses the prior16.4.0.rc.6entries into this single accumulating prerelease section.Updates the bottom compare links so
[unreleased]and[16.4.0.rc.7]point to the correct GitHub diffs, and removes references to16.4.0.rc.6.Written by Cursor Bugbot for commit 1867770. Configure here.
Summary by CodeRabbit
New Features
Chores
Revert