Skip to content

Clean up renderer dummy teardown follow-ups#3698

Merged
justin808 merged 1 commit into
mainfrom
fix/3689-dummy-renderer-props-cleanup
Jun 6, 2026
Merged

Clean up renderer dummy teardown follow-ups#3698
justin808 merged 1 commit into
mainfrom
fix/3689-dummy-renderer-props-cleanup

Conversation

@justin808

@justin808 justin808 commented Jun 6, 2026

Copy link
Copy Markdown
Member

Summary

  • Document the Pro dummy app's @loadable/component Promise-returning loadableReady() version assumption.
  • Stop mutating props.prerender in the legacy React 16 dummy Redux startup path.

Closes #3689.

Validation

  • gh issue view 3689 --repo shakacode/react_on_rails --json number,title,state,author,body,comments,labels,createdAt,updatedAt
  • gh search issues --repo shakacode/react_on_rails "delete props.prerender" (only Renderer dummy teardown follow-ups from PR #3585 review #3689 found)
  • pnpm exec prettier --check react_on_rails/spec/dummy/client/app-react16/startup/ReduxApp.client.jsx react_on_rails/spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx react_on_rails_pro/spec/dummy/client/app/loadable/loadable-client.imports-loadable.jsx
  • pnpm exec eslint react_on_rails/spec/dummy/client/app-react16/startup/ReduxApp.client.jsx react_on_rails/spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx react_on_rails_pro/spec/dummy/client/app/loadable/loadable-client.imports-loadable.jsx
  • git diff --cached --check
  • script/ci-changes-detector origin/main fix/3689-dummy-renderer-props-cleanup

Note: bundle exec rubocop was run per repo policy but failed on unrelated existing/generated files outside this PR's diff, including react_on_rails/spec/react_on_rails/dummy-for-generators/* and react_on_rails/spike/3313_prism_gemfile_rewriter/*.


Note

Low Risk
Test/dummy client startup changes only; no production auth, data, or core library behavior.

Overview
Follow-up cleanup for dummy renderer teardown (#3689).

ReduxApp.client.jsx no longer mutates incoming props by deleting prerender. It destructures prerender into componentProps and passes only componentProps into composeInitialState, avoiding param reassignment and eslint suppressions.

ReduxSharedStoreApp.client.jsx drops the same delete props.prerender pattern (it only needed prerender for hydrate vs render).

loadable-client.imports-loadable.jsx adds a comment documenting the Pro dummy’s @loadable/component version floor (≥5.12.0) for the Promise-returning loadableReady() API used for teardown on navigation.

Reviewed by Cursor Bugbot for commit 60afe44. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • Refactor
    • Improved internal prop handling to prevent unintended mutations in Redux startup functions.
    • Updated documentation comments for better code clarity.

@coderabbitai

coderabbitai Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Complex PR? Review this PR in Change Stack to move by importance, not file order.

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0a6fe88e-9ab4-44e1-8aa1-d60f1cd9cd80

📥 Commits

Reviewing files that changed from the base of the PR and between f8c4678 and 60afe44.

📒 Files selected for processing (3)
  • react_on_rails/spec/dummy/client/app-react16/startup/ReduxApp.client.jsx
  • react_on_rails/spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx
  • react_on_rails_pro/spec/dummy/client/app/loadable/loadable-client.imports-loadable.jsx
💤 Files with no reviewable changes (1)
  • react_on_rails/spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx

Walkthrough

This PR refactors React 16 and Pro dummy app startup files to eliminate prop mutations and improve version documentation. The Redux startup functions now destructure props instead of deleting properties, and the loadable client documentation explicitly records version constraints.

Changes

Dummy app fixture cleanup

Layer / File(s) Summary
Redux startup props destructuring
react_on_rails/spec/dummy/client/app-react16/startup/ReduxApp.client.jsx, react_on_rails/spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx
prerender is destructured from props upfront; the composeInitialState call receives only component props without mutation; props.prerender deletion and eslint disables are removed.
Loadable component documentation
react_on_rails_pro/spec/dummy/client/app/loadable/loadable-client.imports-loadable.jsx
Comments document the required @loadable/component version range (^5.16.3) and confirm the resolved version supports the Promise-returning loadableReady API.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Possibly related PRs

  • shakacode/react_on_rails#3585: The main PR that introduced teardown logic for the React 16 dummy Redux renderer startup; this PR addresses follow-up cleanup items from the review of that PR.

Suggested labels

review-needed, enhancement, documentation, P3

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly reflects the main objectives of the PR: cleaning up dummy renderer teardown follow-ups from PR #3585, addressing the specific mutation and documentation improvements.
Linked Issues check ✅ Passed The PR fully addresses both coding requirements from issue #3689: removed props mutation in Redux startup files and added explicit documentation of @loadable/component Promise API assumptions.
Out of Scope Changes check ✅ Passed All changes are directly aligned with the two follow-up objectives from issue #3689: no unrelated modifications were introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/3689-dummy-renderer-props-cleanup

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps

greptile-apps Bot commented Jun 6, 2026

Copy link
Copy Markdown

Greptile Summary

This PR makes two targeted cleanups to the React 16 dummy app startup paths and adds a version-constraint comment to the Pro loadable dummy.

  • ReduxApp.client.jsx: Replaces the delete props.prerender mutation with a destructuring rest pattern (const { prerender, ...componentProps } = props), then passes componentProps to composeInitialState — functionally equivalent but no longer mutates the incoming props object.
  • ReduxSharedStoreApp.client.jsx: Removes the same delete props.prerender mutation; since props is never forwarded to the store or any component in this file, the removal has no behavioral effect.
  • loadable-client.imports-loadable.jsx: Adds two comment lines pinning the minimum @loadable/component version (>=5.12.0) needed for the Promise-returning loadableReady() API, referencing the package.json range and resolved lockfile version.

Confidence Score: 5/5

All three files are dummy/spec app startup code; the changes are narrowly scoped and straightforward to verify.

The props-mutation removal in ReduxApp.client.jsx is mechanically correct — destructuring rest produces a new object without prerender, which is exactly what composeInitialState should receive. In ReduxSharedStoreApp.client.jsx, props is not passed anywhere after extraction, so removing the mutation is a no-op in terms of behavior. The comment addition in the Pro loadable file is documentation-only. No production paths are touched.

No files require special attention.

Important Files Changed

Filename Overview
react_on_rails/spec/dummy/client/app-react16/startup/ReduxApp.client.jsx Removes delete props.prerender mutation; uses destructuring rest (...componentProps) to pass props without prerender to composeInitialState.
react_on_rails/spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx Removes delete props.prerender mutation; props is not forwarded to any store or component call in this file, so removal is safe.
react_on_rails_pro/spec/dummy/client/app/loadable/loadable-client.imports-loadable.jsx Adds two comment lines documenting the minimum @loadable/component version (>=5.12.0) required for the Promise-returning loadableReady() API.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["renderer fn(props, railsContext, domNodeId)"] --> B["Destructure: { prerender, ...componentProps } = props"]
    B --> C["render = prerender ? hydrate : render"]
    B --> D["composeInitialState(componentProps, railsContext)"]
    D --> E["createStore(reducer, combinedProps, middleware)"]
    E --> F["renderApp → render(element, domNode)"]
    F --> G["return { teardown: () => unmountComponentAtNode(domNode) }"]

    subgraph "Before (mutation)"
        X1["const { prerender } = props"]
        X2["delete props.prerender  ❌ mutates caller's object"]
        X3["composeInitialState(props, railsContext)"]
        X1 --> X2 --> X3
    end

    subgraph "After (immutable)"
        Y1["const { prerender, ...componentProps } = props"]
        Y2["composeInitialState(componentProps, railsContext)  ✅"]
        Y1 --> Y2
    end
Loading

Reviews (1): Last reviewed commit: "Clean up renderer dummy teardown follow-..." | Re-trigger Greptile

@claude

claude Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Code Review

Overview

A clean, well-scoped cleanup (4 additions, 6 deletions across 3 test/dummy files). No production library code is touched.

  • ReduxApp.client.jsx — replaces the delete props.prerender mutation with rest-destructuring ({ prerender, ...componentProps }), eliminates the ESLint suppression, and passes the correct componentProps object downstream.
  • ReduxSharedStoreApp.client.jsx — drops the now-unnecessary delete props.prerender (props is never forwarded here; the store is fetched via ReactOnRails.getStore, so the mutation was always gratuitous).
  • loadable-client.imports-loadable.jsx — documents the @loadable/component >= 5.12.0 version floor for the Promise-returning loadableReady() API.

Findings

Correctness — correct

The rest-destructuring fix in ReduxApp.client.jsx is functionally equivalent to the old delete-then-pass pattern, because composeInitialState.ts spreads through propsForReduxState and does not touch prerender itself. The caller's object is no longer mutated.

Incomplete sweep — flagging for a follow-up, out of scope for this PR

Two similar delete props.prerender patterns remain in the Pro package dummy:

  • react_on_rails_pro/spec/dummy/client/app/stores/SharedReduxStore.jsx:14
  • react_on_rails_pro/spec/dummy/client/app/ror-auto-load-components/ReduxApp.server.jsx:26

Both still carry the // eslint-disable-next-line no-param-reassign suppression. A follow-up issue to apply the same rest-destructuring pattern there would complete the sweep.

Comment freshness — minor nit (see inline)

The added comment in loadable-client.imports-loadable.jsx includes the current lockfile resolution (5.16.7), which will silently become stale after the next pnpm update. Dropping the lockfile snapshot from the comment and keeping only the floor and the package.json range would make it maintenance-free.


Risk assessment

Low. All changes are in test/dummy startup files. No library behaviour, no auth, no data path. Safe to merge as-is; the Pro-package cleanup is a suitable follow-up.

// (which resolves to a teardown wrapper) lets React on Rails unmount this root on Turbo/Turbolinks
// navigation or same-id node replacement instead of leaking it. The callback form would discard it.
// Keep this Pro dummy dependency at @loadable/component >= 5.12.0; package.json requests ^5.16.3
// and the lockfile resolves 5.16.7, both of which support the Promise-returning loadableReady API.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The lockfile-resolved version (5.16.7) will silently become stale after any pnpm update. Dropping it and keeping only the floor and the package.json range makes this comment maintenance-free:

Suggested change
// and the lockfile resolves 5.16.7, both of which support the Promise-returning loadableReady API.
// Keep this Pro dummy dependency at @loadable/component >= 5.12.0; package.json requests ^5.16.3,
// which supports the Promise-returning loadableReady API.

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Core Benchmark Summary

Benchmark RPS p50(ms) p90(ms) Status
/: Core 3.57 ▲27.6% (2.8) 2237.72 ▼17.2% (2703.24) 2871.06 ▼19.8% (3581.82) 200=116
/client_side_hello_world: Core 503.15 ▼23.7% (659.55) 11.52 ▲25.6% (9.17) 15.76 ▼28.5% (22.04) 200=15201
/client_side_rescript_hello_world: Core 761.35 ▲11.9% (680.09) 7.95 ▼13.1% (9.15) 13.49 ▼36.6% (21.28) 200=23003
/client_side_hello_world_shared_store: Core 711.16 ▲12.0% (634.78) 9.18 ▼5.9% (9.76) 18.46 ▼17.9% (22.48) 200=21485
/client_side_hello_world_shared_store_controller: Core 682.21 ▲9.0% (625.78) 8.75 ▼11.1% (9.85) 22.33 ▼3.6% (23.16) 200=20611
/client_side_hello_world_shared_store_defer: Core 672.54 ▲5.2% (639.05) 9.08 ▼8.1% (9.88) 19.39 ▼11.8% (21.98) 200=20320
/server_side_hello_world_shared_store: Core 15.36 ▲27.9% (12.01) 589.29 ▼10.3% (656.92) 732.9 ▼12.2% (834.29) 200=471
/server_side_hello_world_shared_store_controller: Core 13.01 ▲8.4% (12.0) 454.22 ▼28.0% (631.18) 520.48 ▼37.6% (834.04) 200=402
/server_side_hello_world_shared_store_defer: Core 12.78 ▲7.1% (11.93) 371.7 ▼41.3% (633.28) 521.09 ▼39.1% (855.65) 200=399
/server_side_hello_world: Core 31.34 ▲28.8% (24.33) 206.53 ▼33.7% (311.28) 302.13 ▼22.5% (390.02) 200=955
/server_side_hello_world_hooks: Core 25.7 ▲5.9% (24.26) 175.8 ▼43.9% (313.45) 249.97 ▼36.3% (392.71) 200=786
/server_side_hello_world_props: Core 31.07 ▲29.2% (24.04) 269.65 ▼16.3% (322.32) 314.11 ▼19.4% (389.65) 200=948
/client_side_log_throw: Core 751.98 ▲13.8% (661.0) 8.5 ▼10.8% (9.53) 21.1 ▲8.1% (19.52) 200=22713
/server_side_log_throw: Core 25.83 ▲8.6% (23.78) 229.43 ▼30.3% (329.11) 302.48 ▼24.1% (398.45) 200=786
/server_side_log_throw_plain_js: Core 30.85 ▲28.0% (24.11) 272.93 ▼12.1% (310.57) 319.02 ▼19.2% (394.81) 200=938
/server_side_log_throw_raise: Core 31.09 ▲28.7% (24.17) 267.74 ▼14.2% (312.03) 318.84 ▼18.9% (392.94) 3xx=946
/server_side_log_throw_raise_invoker: Core 862.51 ▲10.9% (777.78) 7.58 ▼11.2% (8.54) 17.75 ▲8.8% (16.32) 200=26054
/server_side_hello_world_es5: Core 31.22 ▲31.8% (23.69) 269.37 ▼14.6% (315.56) 313.57 ▼20.5% (394.31) 200=952
/server_side_redux_app: Core 29.98 ▲27.2% (23.57) 278.69 ▼15.1% (328.34) 331.37 ▼17.3% (400.81) 200=911
/server_side_hello_world_with_options: Core 31.44 ▲29.8% (24.23) 266.15 ▼16.0% (316.68) 313.72 ▼19.8% (391.41) 200=956
/server_side_redux_app_cached: Core 489.83 ▼24.0% (644.56) 11.83 ▲14.1% (10.36) 22.56 ▲22.8% (18.37) 200=14799
/client_side_manual_render: Core 707.97 ▲3.1% (686.97) 8.8 ▼5.7% (9.33) 18.38 ▼4.3% (19.2) 200=21389
/render_js: Core 33.47 ▲33.1% (25.15) 247.85 ▼18.1% (302.56) 289.55 ▼22.8% (374.83) 200=1019
/react_router: Core 29.25 ▲28.1% (22.83) 285.82 ▼17.1% (344.91) 337.79 ▼17.8% (411.04) 200=890
/pure_component: Core 31.87 ▲28.5% (24.81) 266.79 ▼15.7% (316.44) 307.47 ▼22.1% (394.53) 200=969
/css_modules_images_fonts_example: Core 31.31 ▲30.6% (23.97) 267.22 ▼14.8% (313.77) 314.73 ▼20.1% (394.04) 200=953
/turbolinks_cache_disabled: Core 751.35 ▲11.6% (673.22) 8.79 ▼7.3% (9.48) 17.41 ▼9.6% (19.25) 200=22699
/rendered_html: Core 31.55 ▲32.1% (23.88) 188.43 ▼41.4% (321.7) 303.35 ▼22.9% (393.22) 200=966
/xhr_refresh: Core 12.78 ▲2.0% (12.52) 465.93 ▼23.7% (610.52) 537.6 ▼35.3% (831.17) 200=396
/react_helmet: Core 30.67 ▲27.9% (23.99) 269.05 ▼16.2% (321.02) 326.88 ▼18.3% (399.94) 200=934
/broken_app: Core 30.68 ▲28.6% (23.85) 269.71 ▼15.6% (319.41) 319.88 ▼18.5% (392.4) 200=935
/image_example: Core 24.67 ▲4.9% (23.51) 245.41 ▼23.8% (321.88) 330.67 ▼16.2% (394.43) 200=753
/turbo_frame_tag_hello_world: Core 822.78 ▲13.2% (726.79) 8.13 ▼7.3% (8.77) 15.58 ▼12.8% (17.88) 200=24857
/manual_render_test: Core 760.26 ▲13.2% (671.54) 8.76 ▼6.4% (9.36) 17.36 ▼11.2% (19.55) 200=22963

▲/▼ non-zero change vs baseline · 0.0% exact/near-zero match · 🔴 significant regression · 🟢 significant improvement (tracked measures) · (n) = baseline

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Pro (shard 2/2) Benchmark Summary

Benchmark RPS p50(ms) p90(ms) Status
/empty: Pro 1356.39 ▲10.6% (1226.59) 4.49 ▼24.3% (5.93) 7.75 ▼13.2% (8.93) 200=40973
/ssr_shell_error: Pro 327.72 ▼0.2% (328.33) 17.8 ▼19.6% (22.13) 34.26 ▼2.8% (35.24) 200=9903
/ssr_sync_error: Pro 391.44 ▲20.3% (325.28) 19.63 ▼10.8% (22.0) 30.28 ▼18.3% (37.07) 200=11833
/rsc_component_error: Pro 388.04 ▲19.1% (325.76) 22.64 ▲0.9% (22.44) 31.42 ▼12.3% (35.82) 200=11723
/non_existing_stream_react_component: Pro 346.05 ▲3.3% (335.13) 13.57 ▼35.9% (21.18) 19.75 ▼42.4% (34.29) 200=10525
/server_side_redux_app_cached: Pro 436.01 ▲20.0% (363.48) 18.33 ▼12.1% (20.85) 28.79 ▼11.2% (32.42) 200=13174
/loadable: Pro 370.31 ▲24.0% (298.67) 8.5 🟢 65.5% (24.66) 28.78 ▼19.6% (35.8) 200=11266
/apollo_graphql: Pro 167.61 ▲20.3% (139.31) 43.45 ▼15.6% (51.47) 71.28 ▼16.7% (85.52) 200=5068
/console_logs_in_async_server: Pro 2.75 ▼15.1% (3.24) 2122.05 0.0% (2121.98) 2149.55 ▼1.6% (2184.37) 200=94
/stream_error_demo: Pro 325.7 ▲1.2% (321.71) 14.42 ▼34.7% (22.09) 20.93 ▼41.8% (35.99) 200=9908
/stream_async_components: Pro 387.51 ▲19.4% (324.5) 14.6 ▼35.2% (22.53) 27.32 ▼26.4% (37.1) 200=11787
/rsc_posts_page_over_http: Pro 380.82 ▲18.4% (321.56) 23.22 ▲2.5% (22.65) 32.16 ▼10.1% (35.79) 200=11434
/rsc_echo_props: Pro 264.46 ▲17.0% (226.01) 30.34 ▼8.6% (33.18) 44.65 ▼9.8% (49.51) 200=7995
/async_on_server_sync_on_client_client_render: Pro 408.42 ▲17.5% (347.69) 18.77 ▼10.1% (20.87) 31.19 ▼8.5% (34.11) 200=12343
/server_router_client_render: Pro 399.42 ▲15.3% (346.28) 15.92 ▼24.1% (20.97) 26.49 ▼17.7% (32.19) 200=12071
/unwrapped_rsc_route_stream_render: Pro 389.97 ▲16.7% (334.15) 18.87 ▼10.9% (21.19) 31.2 ▼15.6% (36.97) 200=11783
/async_render_function_returns_component: Pro 363.03 ▲11.4% (326.01) 6.8 ▼68.1% (21.33) 18.61 ▼46.4% (34.74) 200=11046
/native_metadata: Pro 322.18 ▼2.0% (328.89) 18.17 ▼18.7% (22.34) 30.82 ▼12.1% (35.06) 200=9735
/hybrid_metadata_streaming: Pro 387.46 ▲17.7% (329.16) 8.58 ▼61.3% (22.16) 26.6 ▼28.7% (37.3) 200=11787
/cache_demo: Pro 380.17 ▲18.8% (320.03) 16.62 ▼27.2% (22.84) 28.22 ▼25.8% (38.03) 200=11489
/client_side_hello_world_shared_store: Pro 399.94 ▲22.3% (326.91) 14.02 ▼36.2% (21.98) 25.93 ▼23.7% (33.97) 200=12164
/client_side_hello_world_shared_store_defer: Pro 389.1 ▲18.7% (327.82) 14.44 ▼35.4% (22.34) 26.66 ▼22.2% (34.27) 200=11836
/server_side_hello_world_shared_store_controller: Pro 326.08 ▲19.2% (273.53) 24.39 ▼8.0% (26.52) 34.71 ▼14.5% (40.57) 200=9855
/server_side_hello_world: Pro 383.54 ▲20.1% (319.32) 20.41 ▼9.1% (22.45) 29.73 ▼15.6% (35.23) 200=11589
/client_side_log_throw: Pro 360.48 ▼1.0% (364.2) 16.13 ▼20.6% (20.32) 22.1 ▼28.1% (30.75) 200=10893
/server_side_log_throw_plain_js: Pro 360.21 ▼1.7% (366.37) 16.2 ▼18.4% (19.85) 32.73 ▲4.2% (31.41) 200=10886
/server_side_log_throw_raise_invoker: Pro 475.38 ▲19.3% (398.6) 11.72 ▼32.5% (17.36) 22.28 ▼20.5% (28.04) 200=14366
/server_side_redux_app: Pro 319.09 ▼1.1% (322.65) 18.28 ▼18.3% (22.37) 43.49 ▲23.5% (35.21) 200=9642
/server_side_redux_app_cached: Pro 350.46 ▼3.6% (363.48) 16.63 ▼20.2% (20.85) 24.82 ▼23.4% (32.42) 200=10590
/render_js: Pro 374.13 ▲2.2% (366.24) 12.78 ▼35.9% (19.95) 18.29 ▼43.4% (32.31) 200=11382
/pure_component: Pro 397.49 ▲21.3% (327.78) 16.01 ▼27.5% (22.09) 26.47 ▼29.8% (37.69) 200=12013
/turbolinks_cache_disabled: Pro 430.59 ▲19.8% (359.29) 17.81 ▼11.1% (20.03) 28.76 ▼8.5% (31.44) 200=13011
/xhr_refresh: Pro 342.19 ▲24.5% (274.83) 23.49 ▼10.4% (26.22) 36.9 ▼4.3% (38.56) 200=10340
/broken_app: Pro 327.74 ▼3.5% (339.55) 17.81 ▼18.4% (21.82) 38.09 ▲7.1% (35.56) 200=9904
/server_render_with_timeout: Pro 398.93 ▲18.3% (337.1) 19.9 ▼9.5% (21.98) 28.35 ▼15.2% (33.42) 200=12051

▲/▼ non-zero change vs baseline · 0.0% exact/near-zero match · 🔴 significant regression · 🟢 significant improvement (tracked measures) · (n) = baseline

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Pro (shard 1/2) Benchmark Summary

Benchmark RPS p50(ms) p90(ms) Status
/: Pro 178.91 ▲2.0% (175.43) 49.74 ▲18.4% (42.0) 62.13 ▼1.0% (62.74) 200=5407
/error_scenarios_hub: Pro 365.27 ▲4.3% (350.04) 21.23 ▲5.3% (20.16) 31.04 ▼1.2% (31.41) 200=11038
/ssr_async_error: Pro 343.77 ▲4.0% (330.6) 22.75 ▲9.5% (20.78) 36.88 ▲8.4% (34.03) 200=10388
/ssr_async_prop_error: Pro 336.04 ▲4.4% (322.01) 22.96 ▲3.7% (22.14) 35.03 ▼4.7% (36.75) 200=10156
/non_existing_react_component: Pro 364.47 ▲6.7% (341.73) 21.87 ▲7.1% (20.42) 34.06 ▼3.4% (35.25) 200=11012
/non_existing_rsc_payload: Pro 380.04 ▲6.6% (356.63) 23.03 ▲13.4% (20.31) 31.6 ▼11.6% (35.74) 200=11480
/cached_react_helmet: Pro 386.14 ▲5.2% (366.99) 20.43 ▲4.1% (19.62) 29.48 ▼3.4% (30.53) 200=11667
/cached_redux_component: Pro 394.4 ▲2.8% (383.49) 22.38 ▲16.5% (19.22) 29.73 ▼5.7% (31.52) 200=11840
/lazy_apollo_graphql: Pro 136.84 ▼8.6% (149.69) 43.35 ▼10.6% (48.5) 76.75 ▼5.3% (81.05) 200=4136
/redis_receiver: Pro 96.66 ▲11.1% (86.98) 83.44 ▲22.3% (68.22) 146.02 ▼0.1% (146.23) 200=2885,3xx=36
/stream_shell_error_demo: Pro 350.08 ▲6.2% (329.75) 22.23 ▲7.4% (20.7) 33.42 ▼3.8% (34.75) 200=10583
/test_incremental_rendering: Pro 308.21 ▼8.3% (335.94) 15.11 ▼29.2% (21.35) 21.75 ▼40.0% (36.24) 200=9375
/rsc_posts_page_over_redis: Pro 92.17 ▼12.2% (104.93) 64.16 ▲1.6% (63.15) 111.11 ▲1.7% (109.24) 200=2788
/async_on_server_sync_on_client: Pro 268.48 ▼14.2% (312.81) 21.4 ▼4.5% (22.4) 26.85 ▼33.6% (40.42) 200=8116
/server_router: Pro 337.56 ▲3.0% (327.81) 23.28 ▲8.7% (21.41) 37.27 ▲6.4% (35.03) 200=10200
/unwrapped_rsc_route_client_render: Pro 384.08 ▲2.6% (374.4) 19.8 ▲0.1% (19.78) 29.91 ▼2.4% (30.66) 200=11607
/async_render_function_returns_string: Pro 352.84 ▲4.4% (338.01) 24.65 ▲18.3% (20.83) 33.63 ▼0.9% (33.94) 200=10666
/async_components_demo: Pro 221.26 ▲9.6% (201.96) 38.25 ▲4.3% (36.67) 52.32 ▲1.0% (51.78) 200=6688
/stream_native_metadata: Pro 355.27 ▲7.0% (331.98) 22.37 ▲5.9% (21.12) 35.04 ▲0.3% (34.93) 200=10732
/rsc_native_metadata: Pro 339.13 ▲4.9% (323.4) 18.4 ▼18.2% (22.5) 31.49 ▼11.8% (35.72) 200=10249
/client_side_hello_world: Pro 383.16 ▲7.5% (356.39) 16.49 ▼17.0% (19.88) 27.04 ▼12.0% (30.73) 200=11580
/client_side_hello_world_shared_store_controller: Pro 361.66 ▲7.2% (337.47) 21.36 ▲1.0% (21.15) 31.17 ▼3.9% (32.42) 200=10930
/server_side_hello_world_shared_store: Pro 300.6 ▲5.4% (285.27) 26.7 ▲3.1% (25.89) 36.49 ▼5.7% (38.69) 200=9085
/server_side_hello_world_shared_store_defer: Pro 293.79 ▲2.4% (286.77) 27.27 ▲4.4% (26.12) 41.28 ▲10.0% (37.53) 200=8821
/server_side_hello_world_hooks: Pro 318.33 ▼7.7% (345.02) 23.48 ▲12.4% (20.9) 37.38 ▲5.5% (35.44) 200=9622
/server_side_log_throw: Pro 256.34 ▼24.8% (340.65) 22.74 ▲5.1% (21.64) 46.69 ▲34.9% (34.6) 200=7748
/server_side_log_throw_raise: Pro 611.36 ▼5.2% (644.85) 12.78 ▲12.4% (11.37) 18.94 ▲3.2% (18.36) 3xx=18470
/server_side_hello_world_es5: Pro 312.6 ▼7.5% (337.88) 20.34 ▼5.1% (21.43) 33.06 ▼4.0% (34.44) 200=9448
/server_side_hello_world_with_options: Pro 311.77 ▼5.8% (331.01) 20.34 ▼6.6% (21.77) 33.26 ▼2.0% (33.94) 200=9433
/client_side_manual_render: Pro 339.52 ▼6.6% (363.33) 25.55 ▲30.5% (19.58) 35.03 ▲14.5% (30.59) 200=10258
/react_router: Pro 385.88 ▼1.1% (390.24) 17.7 ▼0.4% (17.77) 31.76 ▲7.5% (29.56) 200=11664
/css_modules_images_fonts_example: Pro 337.8 ▲0.4% (336.42) 23.57 ▲9.0% (21.63) 35.77 ▲6.6% (33.56) 200=10143
/rendered_html: Pro 350.01 ▲3.4% (338.45) 22.46 ▲5.5% (21.29) 32.55 ▼1.5% (33.06) 200=10575
/react_helmet: Pro 328.8 ▼0.7% (331.06) 26.28 ▲17.4% (22.38) 35.6 ▲6.9% (33.3) 200=9932
/image_example: Pro 343.35 ▲5.8% (324.6) 23.4 ▲4.3% (22.44) 34.83 0.0% (34.85) 200=10373
/posts_page: Pro 83.58 ▼86.4% (615.2) 103.25 ▲226.4% (31.63) 130.21 ▲192.7% (44.48) 200=2528

▲/▼ non-zero change vs baseline · 0.0% exact/near-zero match · 🔴 significant regression · 🟢 significant improvement (tracked measures) · (n) = baseline

@justin808 justin808 merged commit 0e64f29 into main Jun 6, 2026
44 checks passed
@justin808 justin808 deleted the fix/3689-dummy-renderer-props-cleanup branch June 6, 2026 10:37
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.

Renderer dummy teardown follow-ups from PR #3585 review

1 participant