Skip to content

feat: use async render in RNTL v14#580

Merged
mdjastrzebski merged 10 commits into
mainfrom
feat/rntl-async-render
Jun 9, 2026
Merged

feat: use async render in RNTL v14#580
mdjastrzebski merged 10 commits into
mainfrom
feat/rntl-async-render

Conversation

@mdjastrzebski

@mdjastrzebski mdjastrzebski commented Nov 21, 2025

Copy link
Copy Markdown
Member

Summary

Use async render if available (RNTL v14).

Test plan


Note

Adopts RNTL renderAsync/cleanupAsync when available and updates measuring to await render/cleanup; comments out async effect tests.

  • Measure core:
    • Update packages/measure/src/measure-renders.tsx to await render(ui) and await cleanup().
    • Extend config with RenderAsync/CleanupAsync types in packages/measure/src/config.ts.
    • Resolve RNTL APIs to renderAsync/cleanupAsync if present, else fallback, in packages/measure/src/testing-library.ts.
  • Tests:
    • Comment out async macro/micro-task effect tests in packages/measure/src/__tests__/measure-renders.test.tsx.
  • Release:
    • Add changeset for a minor version of @callstack/reassure-measure.

Written by Cursor Bugbot for commit 3cf725d. This will update automatically on new commits. Configure here.

@github-actions

github-actions Bot commented Nov 21, 2025

Copy link
Copy Markdown
Contributor

Performance Comparison Report

  • Current: HEAD (5a67510) - 2026-06-09 15:48:52Z
  • Baseline: main (7999170) - 2026-06-09 15:48:07Z

Significant Changes To Duration

Show entries
Name Type Duration Count
<AsyncComponent />: 20 runs render 39.6 ms → 79.9 ms (+40.3 ms, +102.0%) 🔴🔴 4 → 4
ManyRenderIssues render 2.1 ms → 2.3 ms (+0.2 ms, +9.4%) 🔴 5 → 5
InitialRenders 3 render 1.7 ms → 1.9 ms (+0.2 ms, +11.1%) 🔴 4 → 4
RedundantUpdates render 1.0 ms → 1.2 ms (+0.1 ms, +13.4%) 🔴 2 → 2
`fib` function fib(30) function 49.7 ms → 35.7 ms (-14.0 ms, -28.1%) 🟢 1 → 1
`fib` function fib(30) async async function 49.9 ms → 35.8 ms (-14.1 ms, -28.2%) 🟢 1 → 1
`fib` function fib(31) async async function 80.2 ms → 58.0 ms (-22.2 ms, -27.7%) 🟢 1 → 1
`fib` function fib(31) function 80.1 ms → 57.9 ms (-22.2 ms, -27.8%) 🟢 1 → 1
`fib` function fib(32) async async function 129.8 ms → 93.9 ms (-35.9 ms, -27.7%) 🟢 1 → 1
`fib` function fib(32) function 130.3 ms → 93.5 ms (-36.8 ms, -28.2%) 🟢 1 → 1
Show details
Name Type Duration Count
<AsyncComponent />: 20 runs render Baseline
Mean: 39.6 ms
Stdev: 0.5 ms (1.3%)
Runs: 39.2 39.3 39.3 39.5 41.4 39.2 39.1 39.9 39.6 39.4 39.6 39.6 39.2 39.4 39.6 39.5 39.3 39.8
Warmup runs: 94.8
Removed outliers: 93.0 73.8

Current
Mean: 79.9 ms
Stdev: 24.4 ms (30.5%)
Runs: 51.8 52.5 104.4 104.4 83.6 52.3 51.9 110.2 104.2 83.5 52.2 52.0 104.9 104.3 88.4 53.0 52.6 104.3 104.0 83.3
Warmup runs: 82.9
Removed outliers: (none)
Baseline
Mean: 4
Stdev: 0 (0.0%)
Runs: 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
Render issues:
- Initial updates: 1

Current
Mean: 4
Stdev: 0 (0.0%)
Runs: 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
Render issues:
- Initial updates: 1
ManyRenderIssues render Baseline
Mean: 2.1 ms
Stdev: 0.0 ms (2.3%)
Runs: 2.0 2.0 2.1 2.2 2.1 2.1 2.1 2.1 2.0 2.1
Warmup runs: 2.1
Removed outliers: (none)

Current
Mean: 2.3 ms
Stdev: 0.0 ms (2.1%)
Runs: 2.2 2.2 2.2 2.3 2.2 2.3 2.3 2.3 2.3 2.3
Warmup runs: 2.2
Removed outliers: (none)
Baseline
Mean: 5
Stdev: 0 (0.0%)
Runs: 5 5 5 5 5 5 5 5 5 5
Render issues:
- Initial updates: 2
- Redundant updates: 2 (3, 4)

Current
Mean: 5
Stdev: 0 (0.0%)
Runs: 5 5 5 5 5 5 5 5 5 5
Render issues:
- Initial updates: 2
- Redundant updates: 2 (3, 4)
InitialRenders 3 render Baseline
Mean: 1.7 ms
Stdev: 0.0 ms (1.8%)
Runs: 1.7 1.7 1.7 1.7 1.7 1.7 1.7 1.7 1.7 1.7
Warmup runs: 1.7
Removed outliers: (none)

Current
Mean: 1.9 ms
Stdev: 0.0 ms (1.4%)
Runs: 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.8
Warmup runs: 1.9
Removed outliers: (none)
Baseline
Mean: 4
Stdev: 0 (0.0%)
Runs: 4 4 4 4 4 4 4 4 4 4
Render issues:
- Initial updates: 3

Current
Mean: 4
Stdev: 0 (0.0%)
Runs: 4 4 4 4 4 4 4 4 4 4
Render issues:
- Initial updates: 3
RedundantUpdates render Baseline
Mean: 1.0 ms
Stdev: 0.0 ms (3.0%)
Runs: 1.0 1.1 1.1 1.0 1.0 1.0 1.0 1.1 1.0 1.0
Warmup runs: 1.1
Removed outliers: (none)

Current
Mean: 1.2 ms
Stdev: 0.0 ms (2.0%)
Runs: 1.2 1.1 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2
Warmup runs: 1.1
Removed outliers: (none)
Baseline
Mean: 2
Stdev: 0 (0.0%)
Runs: 2 2 2 2 2 2 2 2 2 2
Render issues:
- Redundant updates: 1 (1)

Current
Mean: 2
Stdev: 0 (0.0%)
Runs: 2 2 2 2 2 2 2 2 2 2
Render issues:
- Redundant updates: 1 (1)
`fib` function fib(30) function Baseline
Mean: 49.7 ms
Stdev: 0.4 ms (0.8%)
Runs: 48.8 49.6 49.7 49.5 49.6 49.5 50.1 50.0 50.0 50.0
Warmup runs: 49.2
Removed outliers: (none)

Current
Mean: 35.7 ms
Stdev: 0.0 ms (0.0%)
Runs: 35.7 35.7 35.7 35.7 35.7 35.7 35.7 35.7
Warmup runs: 36.8
Removed outliers: 35.8 35.8
Baseline
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1

Current
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1
`fib` function fib(30) async async function Baseline
Mean: 49.9 ms
Stdev: 0.2 ms (0.5%)
Runs: 50.0 49.6 49.7 49.7 49.6 50.0 50.1 50.2 50.1 50.1
Warmup runs: 61.5
Removed outliers: (none)

Current
Mean: 35.8 ms
Stdev: 0.1 ms (0.2%)
Runs: 36.1 35.8 35.8 35.8 35.8 35.8 35.8 35.8 35.8 35.9
Warmup runs: 36.0
Removed outliers: (none)
Baseline
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1

Current
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1
`fib` function fib(31) async async function Baseline
Mean: 80.2 ms
Stdev: 0.5 ms (0.6%)
Runs: 80.1 79.1 80.2 80.3 80.4 80.7 80.6 80.4 79.7 80.2
Warmup runs: 79.6
Removed outliers: (none)

Current
Mean: 58.0 ms
Stdev: 0.1 ms (0.2%)
Runs: 57.9 57.9 57.9 57.9 58.2 58.2 57.9 57.9 57.9 57.9
Warmup runs: 58.5
Removed outliers: (none)
Baseline
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1

Current
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1
`fib` function fib(31) function Baseline
Mean: 80.1 ms
Stdev: 0.3 ms (0.4%)
Runs: 80.2 79.7 80.2 79.9 80.1 80.4 79.5 80.2 80.2 80.5
Warmup runs: 79.0
Removed outliers: (none)

Current
Mean: 57.9 ms
Stdev: 0.1 ms (0.2%)
Runs: 57.8 58.0 57.7 57.8 57.8 57.8 57.9 58.1 57.8 57.9
Warmup runs: 57.8
Removed outliers: (none)
Baseline
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1

Current
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1
`fib` function fib(32) async async function Baseline
Mean: 129.8 ms
Stdev: 0.1 ms (0.1%)
Runs: 129.7 129.9 129.7 129.8 129.7 129.7 129.8 129.8
Warmup runs: 128.2
Removed outliers: 128.2 128.2

Current
Mean: 93.9 ms
Stdev: 0.3 ms (0.3%)
Runs: 93.9 93.6 94.1 93.6 93.7 94.5 93.8 93.7 94.0 93.8
Warmup runs: 93.8
Removed outliers: (none)
Baseline
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1

Current
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1
`fib` function fib(32) function Baseline
Mean: 130.3 ms
Stdev: 1.1 ms (0.9%)
Runs: 128.3 128.3 129.9 130.1 130.6 131.2 131.0 131.3 131.2 131.0
Warmup runs: 130.0
Removed outliers: (none)

Current
Mean: 93.5 ms
Stdev: 0.1 ms (0.1%)
Runs: 93.6 93.6 93.6 93.6 93.5 93.5 93.6 93.5 93.5 93.5
Warmup runs: 93.5
Removed outliers: (none)
Baseline
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1

Current
Mean: 1
Stdev: 0 (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1

Meaningless Changes To Duration

Show entries
Name Type Duration Count
<AsyncComponent />: 10 runs render 70.3 ms → 84.7 ms (+14.4 ms, +20.5%) 🔴 4 → 4
Async Component render 111.4 ms → 136.5 ms (+25.1 ms, +22.6%) 🔴 7 → 7
InitialRenders 1 render 1.2 ms → 1.2 ms (+0.0 ms, +1.1%) 2 → 2
Show details
Name Type Duration Count
<AsyncComponent />: 10 runs render Baseline
Mean: 70.3 ms
Stdev: 26.3 ms (37.4%)
Runs: 93.4 74.3 39.6 39.1 92.9 92.7 74.4 39.8 49.3 107.0
Warmup runs: 104.8
Removed outliers: (none)

Current
Mean: 84.7 ms
Stdev: 23.4 ms (27.6%)
Runs: 95.1 97.0 52.2 103.8 103.7 83.1 52.0 51.9 103.9 104.1
Warmup runs: 1994.3
Removed outliers: (none)
Baseline
Mean: 4
Stdev: 0 (0.0%)
Runs: 4 4 4 4 4 4 4 4 4 4
Render issues:
- Initial updates: 1

Current
Mean: 4
Stdev: 0 (0.0%)
Runs: 4 4 4 4 4 4 4 4 4 4
Render issues:
- Initial updates: 1
Async Component render Baseline
Mean: 111.4 ms
Stdev: 34.9 ms (31.3%)
Runs: 111.5 79.0 158.0 99.0 91.7 159.2 84.2 104.5 158.6 68.2
Warmup runs: 182.4
Removed outliers: (none)

Current
Mean: 136.5 ms
Stdev: 36.0 ms (26.3%)
Runs: 130.9 133.0 185.0 103.4 131.1 184.8 89.4 145.9 172.2 89.6
Warmup runs: 215.3
Removed outliers: (none)
Baseline
Mean: 7
Stdev: 0 (0.0%)
Runs: 7 7 7 7 7 7 7 7 7 7
Render issues:
- Initial updates: 1

Current
Mean: 7
Stdev: 0 (0.0%)
Runs: 7 7 7 7 7 7 7 7 7 7
Render issues:
- Initial updates: 1
InitialRenders 1 render Baseline
Mean: 1.2 ms
Stdev: 0.3 ms (26.2%)
Runs: 2.0 1.3 1.1 1.4 1.2 1.0 1.0 1.0 1.0 1.0
Warmup runs: 1980.7
Removed outliers: (none)

Current
Mean: 1.2 ms
Stdev: 0.1 ms (6.9%)
Runs: 1.2 1.2 1.2 1.4 1.2 1.2 1.2 1.2 1.2 1.1
Warmup runs: 14.8
Removed outliers: (none)
Baseline
Mean: 2
Stdev: 0 (0.0%)
Runs: 2 2 2 2 2 2 2 2 2 2
Render issues:
- Initial updates: 1

Current
Mean: 2
Stdev: 0 (0.0%)
Runs: 2 2 2 2 2 2 2 2 2 2
Render issues:
- Initial updates: 1

Render Count Changes

There are no entries

Render Issues

Name Initial Updates Redundant Updates
<AsyncComponent />: 10 runs 1 🔴 -
<AsyncComponent />: 20 runs 1 🔴 -
InitialRenders 1 1 🔴 -
InitialRenders 3 3 🔴 -
RedundantUpdates - 1 (1) 🔴
ManyRenderIssues 2 🔴 2 (3, 4) 🔴
Async Component 1 🔴 -

Added Entries

There are no entries

Removed Entries

There are no entries

Generated by 🚫 dangerJS against 535f9c3

@mdjastrzebski mdjastrzebski force-pushed the feat/rntl-async-render branch from 3cf725d to 31f1ee5 Compare June 9, 2026 15:22
@mdjastrzebski mdjastrzebski changed the title feat: use RNTL renderAsync feat: use async render in RNTL v14 Jun 9, 2026
@mdjastrzebski mdjastrzebski merged commit 557da7e into main Jun 9, 2026
7 checks passed
@mdjastrzebski mdjastrzebski deleted the feat/rntl-async-render branch June 9, 2026 15:51
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.

1 participant