Skip to content

Commit 1c026a7

Browse files
tmp
1 parent 2146f52 commit 1c026a7

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

lib/react_on_rails/helper.rb

+15-12
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,14 @@ def react_component(component_name, options = {})
9292
end
9393

9494
def rsc_react_component(component_name, options = {})
95-
res = internal_rsc_react_component(component_name, options)
96-
s = ""
97-
res.each_chunk do |chunk|
98-
s += chunk
95+
rendering_fiber = Fiber.new do
96+
res = internal_rsc_react_component(component_name, options)
97+
res.each_chunk do |chunk|
98+
Fiber.yield chunk
99+
end
100+
Fiber.yield nil
99101
end
100-
s
102+
rendering_fiber
101103
end
102104

103105
def stream_react_component(component_name, options = {})
@@ -348,13 +350,14 @@ def load_pack_for_generated_component(react_component_name, render_options)
348350
return unless render_options.auto_load_bundle
349351

350352
ReactOnRails::PackerUtils.raise_nested_entries_disabled unless ReactOnRails::PackerUtils.nested_entries?
351-
if Rails.env.development?
352-
is_component_pack_present = File.exist?(generated_components_pack_path(react_component_name))
353-
raise_missing_autoloaded_bundle(react_component_name) unless is_component_pack_present
354-
end
355-
append_javascript_pack_tag("generated/#{react_component_name}",
356-
defer: ReactOnRails.configuration.defer_generated_component_packs)
357-
append_stylesheet_pack_tag("generated/#{react_component_name}")
353+
append_javascript_pack_tag("client-bundle")
354+
# if Rails.env.development?
355+
# is_component_pack_present = File.exist?(generated_components_pack_path(react_component_name))
356+
# raise_missing_autoloaded_bundle(react_component_name) unless is_component_pack_present
357+
# end
358+
# append_javascript_pack_tag("generated/#{react_component_name}",
359+
# defer: ReactOnRails.configuration.defer_generated_component_packs)
360+
# append_stylesheet_pack_tag("generated/#{react_component_name}")
358361
end
359362

360363
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity

node_package/src/ReactOnRailsRSC.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import type { ReactElement } from 'react';
22
// @ts-expect-error will define this module types later
33
import { renderToReadableStream } from 'react-server-dom-webpack/server.edge';
44
import { PassThrough } from 'stream';
5+
import fs from 'fs';
56

67
import { RenderParams } from './types';
78
import ComponentRegistry from './ComponentRegistry';
89
import createReactOutput from './createReactOutput';
910
import { isPromise, isServerRenderHash } from './isServerRenderResult';
10-
import handleError from './handleError';
1111
import ReactOnRails from './ReactOnRails';
1212

1313
(async () => {
@@ -26,6 +26,16 @@ const stringToStream = (str: string) => {
2626
return stream;
2727
};
2828

29+
const getBundleConfig = () => {
30+
const bundleConfig = JSON.parse(fs.readFileSync('./public/webpack/development/react-client-manifest.json', 'utf8'));
31+
// remove file:// from keys
32+
const newBundleConfig: { [key: string]: any } = {};
33+
for (const [key, value] of Object.entries(bundleConfig)) {
34+
newBundleConfig[key.replace('file://', '')] = value;
35+
}
36+
return newBundleConfig;
37+
}
38+
2939
ReactOnRails.serverRenderRSCReactComponent = (options: RenderParams) => {
3040
const { name, domNodeId, trace, props, railsContext, throwJsErrors } = options;
3141

@@ -52,7 +62,7 @@ See https://github.com/shakacode/react_on_rails#renderer-functions`);
5262
}
5363

5464
renderResult = new PassThrough();
55-
const streamReader = renderToReadableStream(reactRenderingResult as ReactElement).getReader();
65+
const streamReader = renderToReadableStream(reactRenderingResult, getBundleConfig()).getReader();
5666
const processStream = async () => {
5767
const { done, value } = await streamReader.read();
5868
if (done) {

0 commit comments

Comments
 (0)