Dev Time Run Time e18e.dev Blog
โ† All frameworks

React Router

Version 7.10.1 ยท Measured 3/8/2026

Dev Time Performance

Measured using pnpm on GitHub Actions (ubuntu-latest, Node 24) based on the starter project set up by each framework's CLI.

Prod Deps Dev Deps Dup. Deps Size Size (Prod Only) Graph
6 8 9 106.86MB 17.27MB View
Metric Avg Min Max
Install 1.55s 1.52s 1.63s
Cold Build 2.73s 2.65s 2.83s
Warm Build 2.70s 2.67s 2.73s

Build output size: 0.38MB

Duplicate Dependencies

9 duplicate dependencies detected across this starter's node_modules.

View 9 duplicate dependencies
  • debug
    [duplicate dependency] debug has 2 installed versions:
    4.4.3 via the following 4 package(s) @babel/traverse@7.29.0, @babel/core@7.29.0, vite-node@3.2.4, vite-tsconfig-paths@5.1.4
    2.6.9 via the following 6 package(s) body-parser@1.20.4, express@4.22.1, finalhandler@1.3.2, send@0.19.2, compression@1.8.1, morgan@1.10.1
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 2.6.9 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • semver
    [duplicate dependency] semver has 2 installed versions:
    6.3.1 via the following 3 package(s) @babel/helper-compilation-targets@7.28.6, @babel/core@7.29.0, @babel/helper-create-class-features-plugin@7.28.6
    7.7.4 via the following 1 package(s) @react-router/dev@7.10.1
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 6.3.1 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • pathe
    [duplicate dependency] pathe has 2 installed versions:
    1.1.2 via the following 1 package(s) @react-router/dev@7.10.1
    2.0.3 via the following 2 package(s) pkg-types@2.3.0, vite-node@3.2.4
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 2.0.3 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • negotiator
    [duplicate dependency] negotiator has 2 installed versions:
    0.6.3 via the following 1 package(s) accepts@1.3.8
    0.6.4 via the following 1 package(s) compression@1.8.1
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • safe-buffer
    [duplicate dependency] safe-buffer has 2 installed versions:
    5.1.2 via the following 1 package(s) basic-auth@2.0.1
    5.2.1 via the following 3 package(s) content-disposition@0.5.4, express@4.22.1, compression@1.8.1
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 5.2.1 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • on-finished
    [duplicate dependency] on-finished has 2 installed versions:
    2.4.1 via the following 4 package(s) body-parser@1.20.4, finalhandler@1.3.2, express@4.22.1, send@0.19.2
    2.3.0 via the following 1 package(s) morgan@1.10.1
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 2.4.1 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • mime-db
    [duplicate dependency] mime-db has 2 installed versions:
    1.54.0 via the following 1 package(s) compressible@2.0.18
    1.52.0 via the following 1 package(s) mime-types@2.1.35
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • ms
    [duplicate dependency] ms has 2 installed versions:
    2.0.0 via the following 1 package(s) debug@2.6.9
    2.1.3 via the following 2 package(s) send@0.19.2, debug@4.4.3
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 2.1.3 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • cookie
    [duplicate dependency] cookie has 2 installed versions:
    0.7.2 via the following 1 package(s) express@4.22.1
    1.1.1 via the following 1 package(s) react-router@7.10.1
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    

Runtime Performance

SSR Performance

Measured on GitHub Actions (ubuntu-latest, Node 24) using custom SSR benchmark apps.

Framework Ops/sec Avg Latency Body Size Duplication
Baseline HTML 706 1.417ms 96.81kb 1x
React Router 64 15.528ms 211.14kb 2x

Methodology

  • Each framework renders a table of 1000 rows with two UUID columns
  • Mock HTTP requests bypass TCP overhead for accurate rendering measurement
  • Data is loaded asynchronously to simulate real-world data fetching
  • Duplication factor indicates how many times each UUID appears in the response (1x = optimal, 2x = includes hydration payload)
  • Benchmarks run for 10 seconds using tinybench
  • Astro, Nuxt, and SvelteKit handle Node.js HTTP requests natively. React Router, SolidStart, and TanStack Start use Web APIs internally, so benchmarks include the cost of their Node.js adapter layers (@react-router/node, h3, and srvx respectively)
  • Next.js defaults to React Server Components (RSC), a different rendering model than traditional SSR. To keep the comparison fair, Next.js uses "use client" to opt out of RSC and use traditional SSR + hydration like most of the other frameworks
  • Inspired by eknkc/ssr-benchmark