Skip to content

Conversation

@AbanoubGhadban
Copy link
Collaborator

@AbanoubGhadban AbanoubGhadban commented Sep 3, 2025

…anges in version 15.0.0

Summary

Remove this paragraph and provide a general description of the code changes in your pull
request... were there any bugs you had fixed? If so, mention them. If
these bugs have open GitHub issues, be sure to tag them here as well,
to keep the conversation linked together.

Pull Request checklist

Remove this line after checking all the items here. If the item is not applicable to the PR, both check it out and wrap it by ~.

  • Add/update test to cover these changes
  • Update documentation
  • Update CHANGELOG file

Add the CHANGELOG entry at the top of the file.

Other Information

Remove this paragraph and mention any other important and relevant information such as benchmarks.


This change is Reviewable

Summary by CodeRabbit

  • Documentation
    • Expanded 15.0.0 notes with explicit migration guidance replacing the old generated-component-packs flag with a sync/async/defer loading strategy and value mappings; documented new force_load option and default.
    • Added async page-load hook guidance, Node.js (ESM) and TypeScript notes, and corrected a release notes link format.
  • New Features
    • Announced React Server Components (Pro), async component returns, and a 14.2.0 client-only export.
  • Improved
    • Improved hydration performance and RSC injection timing.
  • Fixed
    • Compatibility and warning fixes for tooling and refresh support.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 3, 2025

Walkthrough

Documentation updates replace the boolean config defer_generated_component_packs with generated_component_packs_loading_strategy (:sync, :async, :defer), add a force_load option, add migration guidance, expand 15.0.0 CHANGELOG entries (Added/Fixed/Improved), and fix a 15.0.0 release-note image/link.

Changes

Cohort / File(s) Summary
Changelog updates
CHANGELOG.md
Expanded 15.0.0 entries: added generated_component_packs_loading_strategy, mappings from prior boolean, force_load default note, Node.js/TypeScript/ReactOnRails migration notes, Added/Fixed/Improved bullets, and 14.2.0 export note.
Configuration guide updates
docs/guides/configuration.md
Replaced defer_generated_component_packs with generated_component_packs_loading_strategy (:sync, :async, :defer); added force_load (Boolean) and migration mapping guidance (true → :defer, false → :sync).
Release notes fix
docs/release-notes/15.0.0.md
Adjusted link formatting and replaced an external performance link with an inline asset image.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Browser
  participant ROR as ReactOnRails
  participant Packs as GeneratedPacks

  rect rgb(247,250,255)
    note over Browser,ROR: Page load with server-rendered HTML
    Browser->>ROR: Initialize with config (loading_strategy, force_load)
    alt loading_strategy = :sync
      ROR->>Packs: Load packs synchronously
      Packs-->>ROR: Components ready
      ROR->>Browser: Hydrate immediately (force_load true)
    else loading_strategy = :async
      ROR-->>Packs: Fetch packs asynchronously
      Packs-->>ROR: Components ready
      ROR->>Browser: Hydrate (immediately if force_load true; else on trigger)
    else loading_strategy = :defer
      Browser->>Packs: Defer execution until idle
      Packs-->>ROR: Components ready after defer
      ROR->>Browser: Hydrate respecting force_load
    end
  end
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • justin808
  • alexeyr-ci
  • Judahmeek

Poem

I nibbled the changelog, hopped through the code,
Swapped booleans for symbols down the migration road.
Sync, async, defer — I left little tracks,
Force-load at the ready with twitchy little backs.
Hooray for tidy docs — carrots for the lots of docs! 🥕🐇


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 0b20b6a and 2e4d5e5.

📒 Files selected for processing (1)
  • docs/release-notes/15.0.0.md (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • docs/release-notes/15.0.0.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: build
  • GitHub Check: rspec-package-tests (oldest)
  • GitHub Check: rspec-package-tests (newest)
  • GitHub Check: build-dummy-app-webpack-test-bundles (newest)
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch abanoubghadban/update-changelog

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@@ -1,6 +1,6 @@
# React on Rails 15.0.0 Release Notes

Also see the [Changelog for 15.0.0]([url](https://github.com/shakacode/react_on_rails/blob/master/CHANGELOG.md#1500---2025-08-28)).
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was a markdown format error and was fixed

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (4)
docs/guides/configuration.md (1)

216-221: Clarify defaults vs. example assignment for loading strategy.

You note version-conditional defaults, but the example hard-sets :async. Add a brief inline note like “omit to use default for your Shakapacker version” to reduce copy/paste misconfigurations.

-  config.generated_component_packs_loading_strategy = :async
+  # Set only if overriding the default for your Shakapacker version; otherwise omit.
+  config.generated_component_packs_loading_strategy = :async
CHANGELOG.md (3)

31-37: Heading says “Removed” but bullet says “Deprecated”.

For consistency and to avoid confusion, either rename the section to “Removed/Deprecated (Breaking Changes)” or change the bullet to “Removed”.

-### Removed (Breaking Changes)
+### Removed/Deprecated (Breaking Changes)

44-45: Mention per-component/store override for force_load.

You note the global toggle here; add a sub-bullet pointing to per-component (react_component, stream_react_component) and per-store (redux_store) overrides for quick discovery (you already describe this in the Release Notes).

 - Set `force_load: false` in your config if you want the previous behavior.
+ - You can also override per component/store via `react_component(..., { force_load: false })`,
+   `stream_react_component(..., { force_load: false })`, or `redux_store(..., { force_load: false })`.

56-65: Solid “Improved” entries; minor grammar polish optional.

Optional: tweak “which supports the ability to upload multiple bundles at once” to “which adds support for uploading multiple bundles at once.”

- - Updated communication protocol between Node Renderer and Rails to version 2.0.0 which supports the ability to upload multiple bundles at once.
+ - Updated communication protocol between Node Renderer and Rails to version 2.0.0, which adds support for uploading multiple bundles at once.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 301e9c8 and 0b20b6a.

📒 Files selected for processing (3)
  • CHANGELOG.md (2 hunks)
  • docs/guides/configuration.md (1 hunks)
  • docs/release-notes/15.0.0.md (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-04-26T21:55:55.874Z
Learnt from: alexeyr-ci2
PR: shakacode/react_on_rails#1732
File: spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx:40-44
Timestamp: 2025-04-26T21:55:55.874Z
Learning: In the react_on_rails project, files under `app-react16` directories are copied/moved to corresponding `/app` directories during the conversion process (removing the `-react16` suffix), which affects their relative import paths at runtime.

Applied to files:

  • docs/release-notes/15.0.0.md
  • CHANGELOG.md
📚 Learning: 2024-12-12T13:07:09.929Z
Learnt from: alexeyr-ci
PR: shakacode/react_on_rails#1644
File: node_package/src/ReactOnRailsRSC.ts:87-87
Timestamp: 2024-12-12T13:07:09.929Z
Learning: When handling errors in 'node_package/src/ReactOnRailsRSC.ts', include the error stack in error messages in development and test environments to aid debugging.

Applied to files:

  • CHANGELOG.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: dummy-app-integration-tests (newest)
  • GitHub Check: dummy-app-integration-tests (oldest)
  • GitHub Check: build
  • GitHub Check: rspec-package-tests (oldest)
  • GitHub Check: rspec-package-tests (newest)
🔇 Additional comments (6)
docs/release-notes/15.0.0.md (1)

3-3: Good fix on the CHANGELOG link.

Direct link to the 15.0.0 section improves navigation. Consider double-checking the GitHub-generated anchor slug after merge to ensure it resolves correctly.

docs/guides/configuration.md (1)

229-233: Nice addition and clear explanation for force_load.

Defaulting to true is called out, with a concise rationale.

CHANGELOG.md (4)

38-41: Verify Node/TypeScript migration specifics.

Claims about Node versions that allow require with ESM “without any flags” and TS 5.8 + module: nodenext are high-impact. Please verify exact minimum versions and wording. Consider linking to official Node & TS docs.


41-43: Good call-out on async API change.

Clear migration note to await ReactOnRails.reactOnRailsPageLoaded().


46-46: Good cross-reference to Release Notes.

Keeps the CHANGELOG tight while pointing to full guidance.


68-72: Clear “Added” section; good links to PRs.

Reads well and is actionable.

Comment on lines +223 to +228
# DEPRECATED: Use `generated_component_packs_loading_strategy` instead.
# Migration: `defer_generated_component_packs: true` → `generated_component_packs_loading_strategy: :defer`
# Migration: `defer_generated_component_packs: false` → `generated_component_packs_loading_strategy: :sync`
# See [15.0.0 Release Notes](docs/release-notes/15.0.0.md) for more details.
# config.defer_generated_component_packs = false

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix broken relative link path.

From docs/guides/configuration.md, docs/release-notes/15.0.0.md resolves to docs/guides/docs/.... Use a root-relative or parent-relative path.

-  # See [15.0.0 Release Notes](docs/release-notes/15.0.0.md) for more details.
+  # See [15.0.0 Release Notes](/docs/release-notes/15.0.0.md) for more details.
+  # (If viewing on GitHub, ../release-notes/15.0.0.md also works.)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# DEPRECATED: Use `generated_component_packs_loading_strategy` instead.
# Migration: `defer_generated_component_packs: true``generated_component_packs_loading_strategy: :defer`
# Migration: `defer_generated_component_packs: false``generated_component_packs_loading_strategy: :sync`
# See [15.0.0 Release Notes](docs/release-notes/15.0.0.md) for more details.
# config.defer_generated_component_packs = false
# DEPRECATED: Use `generated_component_packs_loading_strategy` instead.
# Migration: `defer_generated_component_packs: true``generated_component_packs_loading_strategy: :defer`
# Migration: `defer_generated_component_packs: false``generated_component_packs_loading_strategy: :sync`
# See [15.0.0 Release Notes](/docs/release-notes/15.0.0.md) for more details.
# (If viewing on GitHub, ../release-notes/15.0.0.md also works.)
# config.defer_generated_component_packs = false
🤖 Prompt for AI Agents
In docs/guides/configuration.md around lines 223 to 228, the relative link
"docs/release-notes/15.0.0.md" incorrectly resolves to docs/guides/docs/...;
update the link to use either a root-relative path
(/docs/release-notes/15.0.0.md) or a parent-relative path
(../release-notes/15.0.0.md) so it correctly points to the release notes, and
verify the link renders correctly.

@justin808 justin808 merged commit d130c94 into master Sep 3, 2025
11 checks passed
@justin808 justin808 deleted the abanoubghadban/update-changelog branch September 3, 2025 19:40
justin808 pushed a commit that referenced this pull request Sep 4, 2025
…anges in version 15.0.0 (#1759)

* Update CHANGELOG with detailed migration instructions for breaking changes in version 15.0.0

* Replace performance comparison link with an image in release notes for version 15.0.0
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.

3 participants