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

Astro

Version 5.16.15 ยท 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
1 2 17 193.24MB 156.01MB View
Metric Avg Min Max
Install 2.09s 1.99s 2.40s
Cold Build 2.12s 2.08s 2.23s
Warm Build 2.12s 2.10s 2.17s

Build output size: 0.03MB

Duplicate Dependencies

17 duplicate dependencies detected across this starter's node_modules.

View 17 duplicate dependencies
  • chokidar
    [duplicate dependency] chokidar has 2 installed versions:
    4.0.3 via the following 1 package(s) @astrojs/check@0.9.6
    5.0.0 via the following 1 package(s) unstorage@1.17.4
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • kleur
    [duplicate dependency] kleur has 2 installed versions:
    4.1.5 via the following 1 package(s) @astrojs/check@0.9.6
    3.0.3 via the following 1 package(s) prompts@2.4.2
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • yaml
    [duplicate dependency] yaml has 2 installed versions:
    2.8.2 via the following 2 package(s) vite@6.4.1, @astrojs/yaml2ts@0.2.2
    2.7.1 via the following 1 package(s) yaml-language-server@1.19.2
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 2.8.2 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • estree-walker
    [duplicate dependency] estree-walker has 2 installed versions:
    2.0.2 via the following 1 package(s) @rollup/pluginutils@5.3.0
    3.0.3 via the following 1 package(s) astro@5.16.15
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • picomatch
    [duplicate dependency] picomatch has 2 installed versions:
    4.0.3 via the following 5 package(s) @rollup/pluginutils@5.3.0, astro@5.16.15, fdir@6.5.0, tinyglobby@0.2.15, vite@6.4.1
    2.3.1 via the following 1 package(s) anymatch@3.1.3
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 4.0.3 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • request-light
    [duplicate dependency] request-light has 2 installed versions:
    0.7.0 via the following 1 package(s) @volar/language-server@2.4.28
    0.5.8 via the following 1 package(s) yaml-language-server@1.19.2
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • jsonc-parser
    [duplicate dependency] jsonc-parser has 2 installed versions:
    2.3.1 via the following 1 package(s) @vscode/emmet-helper@2.11.0
    3.3.1 via the following 1 package(s) vscode-json-languageservice@4.1.8
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • string-width
    [duplicate dependency] string-width has 2 installed versions:
    4.2.3 via the following 4 package(s) ansi-align@3.0.1, cliui@8.0.1, wrap-ansi@7.0.0, yargs@17.7.2
    7.2.0 via the following 3 package(s) boxen@8.0.1, widest-line@5.0.0, wrap-ansi@9.0.2
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 4.2.3 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • ansi-styles
    [duplicate dependency] ansi-styles has 2 installed versions:
    4.3.0 via the following 1 package(s) wrap-ansi@7.0.0
    6.2.3 via the following 1 package(s) wrap-ansi@9.0.2
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • wrap-ansi
    [duplicate dependency] wrap-ansi has 2 installed versions:
    9.0.2 via the following 1 package(s) boxen@8.0.1
    7.0.0 via the following 1 package(s) cliui@8.0.1
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • readdirp
    [duplicate dependency] readdirp has 2 installed versions:
    4.1.2 via the following 1 package(s) chokidar@4.0.3
    5.0.0 via the following 1 package(s) chokidar@5.0.0
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • strip-ansi
    [duplicate dependency] strip-ansi has 2 installed versions:
    6.0.1 via the following 3 package(s) string-width@4.2.3, cliui@8.0.1, wrap-ansi@7.0.0
    7.1.2 via the following 2 package(s) string-width@7.2.0, wrap-ansi@9.0.2
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 6.0.1 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • css-tree
    [duplicate dependency] css-tree has 2 installed versions:
    2.2.1 via the following 1 package(s) csso@5.0.5
    3.1.0 via the following 2 package(s) svgo@4.0.0, unifont@0.7.4
    ๐Ÿ’ก Suggestions
    - Consider standardizing on version 3.1.0 as this version is the most commonly used.
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • mdn-data
    [duplicate dependency] mdn-data has 2 installed versions:
    2.0.28 via the following 1 package(s) css-tree@2.2.1
    2.12.2 via the following 1 package(s) css-tree@3.1.0
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • entities
    [duplicate dependency] entities has 2 installed versions:
    4.5.0 via the following 1 package(s) dom-serializer@2.0.0
    6.0.1 via the following 1 package(s) parse5@7.3.0
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • emoji-regex
    [duplicate dependency] emoji-regex has 2 installed versions:
    8.0.0 via the following 1 package(s) string-width@4.2.3
    10.6.0 via the following 1 package(s) string-width@7.2.0
    ๐Ÿ’ก Suggestions
    - Consider upgrading consuming packages as this may resolve this duplicate version.
    
  • ansi-regex
    [duplicate dependency] ansi-regex has 2 installed versions:
    5.0.1 via the following 1 package(s) strip-ansi@6.0.1
    6.2.2 via the following 1 package(s) strip-ansi@7.1.2
    ๐Ÿ’ก 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
Astro 366 2.735ms 99.86kb 1x

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