From 16f0e3005a03853f000daf8ae340a3611415fe07 Mon Sep 17 00:00:00 2001 From: Alexander Karan Date: Mon, 26 Jan 2026 08:19:02 +0800 Subject: [PATCH 1/3] Added build time --- .github/frameworks.json | 7 +++++++ .github/workflows/generate-stats.yml | 9 ++++++--- .gitignore | 3 +++ artifacts/install-time-next/install-time.txt | 1 - artifacts/install-time-nuxt/install-time.txt | 1 - artifacts/install-time-react-router/install-time.txt | 1 - artifacts/install-time-sveltekit/install-time.txt | 1 - artifacts/install-time-tanstack/install-time.txt | 1 - packages/docs/src/components/DependencyStats.astro | 8 +++++--- packages/docs/src/content/config.ts | 1 + packages/docs/src/content/stats/starter-astro.json | 1 + packages/docs/src/content/stats/starter-next-js.json | 1 + packages/docs/src/content/stats/starter-nuxt.json | 1 + .../docs/src/content/stats/starter-react-router.json | 1 + packages/docs/src/content/stats/starter-solid-start.json | 3 ++- packages/docs/src/content/stats/starter-sveltekit.json | 1 + .../src/content/stats/starter-tanstack-start-react.json | 1 + 17 files changed, 30 insertions(+), 12 deletions(-) delete mode 100644 artifacts/install-time-next/install-time.txt delete mode 100644 artifacts/install-time-nuxt/install-time.txt delete mode 100644 artifacts/install-time-react-router/install-time.txt delete mode 100644 artifacts/install-time-sveltekit/install-time.txt delete mode 100644 artifacts/install-time-tanstack/install-time.txt diff --git a/.github/frameworks.json b/.github/frameworks.json index 5958821..1128247 100644 --- a/.github/frameworks.json +++ b/.github/frameworks.json @@ -4,6 +4,7 @@ "displayName": "Next.js", "package": "starter-next-js", "buildScript": "build:next", + "buildOutputDir": ".next", "measurements": ["install", "build", "dependencies"] }, { @@ -11,6 +12,7 @@ "displayName": "React Router", "package": "starter-react-router", "buildScript": "build:react-router", + "buildOutputDir": "build", "measurements": ["install", "build", "dependencies"] }, { @@ -18,6 +20,7 @@ "displayName": "TanStack Start", "package": "starter-tanstack-start-react", "buildScript": "build:tanstack", + "buildOutputDir": ".output", "measurements": ["install", "build", "dependencies"] }, { @@ -25,6 +28,7 @@ "displayName": "Nuxt", "package": "starter-nuxt", "buildScript": "build:nuxt", + "buildOutputDir": ".output", "measurements": ["install", "build", "dependencies"] }, { @@ -32,6 +36,7 @@ "displayName": "SvelteKit", "package": "starter-sveltekit", "buildScript": "build:sveltekit", + "buildOutputDir": "build", "measurements": ["install", "build", "dependencies"] }, { @@ -39,6 +44,7 @@ "displayName": "Astro", "package": "starter-astro", "buildScript": "build:astro", + "buildOutputDir": "dist", "measurements": ["install", "build", "dependencies"] }, { @@ -46,6 +52,7 @@ "displayName": "SolidStart", "package": "starter-solid-start", "buildScript": "build:solid-start", + "buildOutputDir": ".output", "measurements": ["install", "build", "dependencies"] } ] diff --git a/.github/workflows/generate-stats.yml b/.github/workflows/generate-stats.yml index 8d584ea..fb237ae 100644 --- a/.github/workflows/generate-stats.yml +++ b/.github/workflows/generate-stats.yml @@ -120,8 +120,11 @@ jobs: END=$(date +%s%N) WARM=$((($END - $START) / 1000000)) - echo "${{ matrix.framework.displayName }} - Cold: ${COLD}ms, Warm: ${WARM}ms" - echo "{\"cold\": $COLD, \"warm\": $WARM}" > build-time.json + # Calculate build output size + BUILD_OUTPUT_SIZE=$(du -sb ${{ matrix.framework.buildOutputDir }} | cut -f1) + + echo "${{ matrix.framework.displayName }} - Cold: ${COLD}ms, Warm: ${WARM}ms, Build Output: ${BUILD_OUTPUT_SIZE} bytes" + echo "{\"cold\": $COLD, \"warm\": $WARM, \"buildOutputSize\": $BUILD_OUTPUT_SIZE}" > build-time.json - name: Upload build time result uses: actions/upload-artifact@v4 @@ -178,7 +181,7 @@ jobs: BUILD_FILE="artifacts/build-time-$NAME/build-time.json" if [[ -f "$BUILD_FILE" ]]; then - STATS=$(echo "$STATS" | jq --slurpfile build "$BUILD_FILE" '. + {coldBuildTimeMs: $build[0].cold, warmBuildTimeMs: $build[0].warm}') + STATS=$(echo "$STATS" | jq --slurpfile build "$BUILD_FILE" '. + {coldBuildTimeMs: $build[0].cold, warmBuildTimeMs: $build[0].warm, buildOutputSize: $build[0].buildOutputSize}') fi echo "$DISPLAY_NAME stats: $STATS" diff --git a/.gitignore b/.gitignore index 68ff45c..aca0a69 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,9 @@ Thumbs.db coverage/ .nyc_output/ +# CI artifacts +artifacts/ + # Misc *.tmp *.temp diff --git a/artifacts/install-time-next/install-time.txt b/artifacts/install-time-next/install-time.txt deleted file mode 100644 index add4431..0000000 --- a/artifacts/install-time-next/install-time.txt +++ /dev/null @@ -1 +0,0 @@ -6814 diff --git a/artifacts/install-time-nuxt/install-time.txt b/artifacts/install-time-nuxt/install-time.txt deleted file mode 100644 index b172970..0000000 --- a/artifacts/install-time-nuxt/install-time.txt +++ /dev/null @@ -1 +0,0 @@ -8061 diff --git a/artifacts/install-time-react-router/install-time.txt b/artifacts/install-time-react-router/install-time.txt deleted file mode 100644 index 91931d1..0000000 --- a/artifacts/install-time-react-router/install-time.txt +++ /dev/null @@ -1 +0,0 @@ -3031 diff --git a/artifacts/install-time-sveltekit/install-time.txt b/artifacts/install-time-sveltekit/install-time.txt deleted file mode 100644 index 8ee7f93..0000000 --- a/artifacts/install-time-sveltekit/install-time.txt +++ /dev/null @@ -1 +0,0 @@ -2606 diff --git a/artifacts/install-time-tanstack/install-time.txt b/artifacts/install-time-tanstack/install-time.txt deleted file mode 100644 index bed8263..0000000 --- a/artifacts/install-time-tanstack/install-time.txt +++ /dev/null @@ -1 +0,0 @@ -4255 diff --git a/packages/docs/src/components/DependencyStats.astro b/packages/docs/src/components/DependencyStats.astro index 495070f..e262728 100644 --- a/packages/docs/src/components/DependencyStats.astro +++ b/packages/docs/src/components/DependencyStats.astro @@ -30,14 +30,14 @@ function formatBytesToMB(bytes: number): string {

- All stats are taken from the basic starter kits each meta-framework - provides based on their current docs. + Stats are currently in active development and may change as we refine our + methodology and testing process.

Dev Time Performance

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

@@ -86,6 +86,7 @@ function formatBytesToMB(bytes: number): string { Install Cold Build Warm Build + Build Output @@ -96,6 +97,7 @@ function formatBytesToMB(bytes: number): string { {(framework.installTimeMs / 1000).toFixed(2)}s {(framework.coldBuildTimeMs / 1000).toFixed(2)}s {(framework.warmBuildTimeMs / 1000).toFixed(2)}s + {formatBytesToMB(framework.buildOutputSize)} )) } diff --git a/packages/docs/src/content/config.ts b/packages/docs/src/content/config.ts index a29888c..68fa470 100644 --- a/packages/docs/src/content/config.ts +++ b/packages/docs/src/content/config.ts @@ -11,6 +11,7 @@ const statsCollection = defineCollection({ installTimeMs: z.number(), coldBuildTimeMs: z.number(), warmBuildTimeMs: z.number(), + buildOutputSize: z.number(), nodeModulesSize: z.number(), nodeModulesSizeProdOnly: z.number(), timingMeasuredAt: z.string(), diff --git a/packages/docs/src/content/stats/starter-astro.json b/packages/docs/src/content/stats/starter-astro.json index 5947964..5d79738 100644 --- a/packages/docs/src/content/stats/starter-astro.json +++ b/packages/docs/src/content/stats/starter-astro.json @@ -9,6 +9,7 @@ "installTimeMs": 3396, "coldBuildTimeMs": 2405, "warmBuildTimeMs": 2060, + "buildOutputSize": 0, "nodeModulesSize": 130822051, "nodeModulesSizeProdOnly": 130799869 } diff --git a/packages/docs/src/content/stats/starter-next-js.json b/packages/docs/src/content/stats/starter-next-js.json index 2f6a15b..fddbf75 100644 --- a/packages/docs/src/content/stats/starter-next-js.json +++ b/packages/docs/src/content/stats/starter-next-js.json @@ -7,6 +7,7 @@ "installTimeMs": 7029, "coldBuildTimeMs": 7158, "warmBuildTimeMs": 6932, + "buildOutputSize": 0, "timingMeasuredAt": "2026-01-25T11:15:55Z", "runner": "ubuntu-latest", "nodeModulesSize": 525877392, diff --git a/packages/docs/src/content/stats/starter-nuxt.json b/packages/docs/src/content/stats/starter-nuxt.json index 7a1c73d..f64a86e 100644 --- a/packages/docs/src/content/stats/starter-nuxt.json +++ b/packages/docs/src/content/stats/starter-nuxt.json @@ -7,6 +7,7 @@ "installTimeMs": 6593, "coldBuildTimeMs": 6385, "warmBuildTimeMs": 5938, + "buildOutputSize": 0, "timingMeasuredAt": "2026-01-25T11:15:55Z", "runner": "ubuntu-latest", "nodeModulesSize": 160441140, diff --git a/packages/docs/src/content/stats/starter-react-router.json b/packages/docs/src/content/stats/starter-react-router.json index 2b1725a..6c652fb 100644 --- a/packages/docs/src/content/stats/starter-react-router.json +++ b/packages/docs/src/content/stats/starter-react-router.json @@ -7,6 +7,7 @@ "installTimeMs": 2903, "coldBuildTimeMs": 3152, "warmBuildTimeMs": 2701, + "buildOutputSize": 0, "timingMeasuredAt": "2026-01-25T11:15:55Z", "runner": "ubuntu-latest", "nodeModulesSize": 94085677, diff --git a/packages/docs/src/content/stats/starter-solid-start.json b/packages/docs/src/content/stats/starter-solid-start.json index 2ce65f0..0493cc9 100644 --- a/packages/docs/src/content/stats/starter-solid-start.json +++ b/packages/docs/src/content/stats/starter-solid-start.json @@ -10,5 +10,6 @@ "nodeModulesSize": 115065119, "nodeModulesSizeProdOnly": 115005343, "coldBuildTimeMs": 8759, - "warmBuildTimeMs": 8612 + "warmBuildTimeMs": 8612, + "buildOutputSize": 0 } diff --git a/packages/docs/src/content/stats/starter-sveltekit.json b/packages/docs/src/content/stats/starter-sveltekit.json index 3512db9..4538a13 100644 --- a/packages/docs/src/content/stats/starter-sveltekit.json +++ b/packages/docs/src/content/stats/starter-sveltekit.json @@ -7,6 +7,7 @@ "installTimeMs": 2749, "coldBuildTimeMs": 4673, "warmBuildTimeMs": 3798, + "buildOutputSize": 0, "timingMeasuredAt": "2026-01-25T11:15:55Z", "runner": "ubuntu-latest", "nodeModulesSize": 57337636, diff --git a/packages/docs/src/content/stats/starter-tanstack-start-react.json b/packages/docs/src/content/stats/starter-tanstack-start-react.json index 0df43dc..9ece1bc 100644 --- a/packages/docs/src/content/stats/starter-tanstack-start-react.json +++ b/packages/docs/src/content/stats/starter-tanstack-start-react.json @@ -7,6 +7,7 @@ "installTimeMs": 4766, "coldBuildTimeMs": 8268, "warmBuildTimeMs": 7802, + "buildOutputSize": 0, "timingMeasuredAt": "2026-01-25T11:15:55Z", "runner": "ubuntu-latest", "nodeModulesSize": 194597669, From a760d97ebf020b3bd6cd66797bb6fea4a2e0a85e Mon Sep 17 00:00:00 2001 From: Alexander Karan Date: Mon, 26 Jan 2026 08:21:55 +0800 Subject: [PATCH 2/3] Format --- packages/docs/src/components/DependencyStats.astro | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/docs/src/components/DependencyStats.astro b/packages/docs/src/components/DependencyStats.astro index e262728..37d5300 100644 --- a/packages/docs/src/components/DependencyStats.astro +++ b/packages/docs/src/components/DependencyStats.astro @@ -30,14 +30,15 @@ function formatBytesToMB(bytes: number): string {

- Stats are currently in active development and may change as we refine our - methodology and testing process. + Stats are currently in active development and may change as we refine + our methodology and testing process.

Dev Time Performance

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

From 6fd19924f980392260eefa9652de4a578ef48fd9 Mon Sep 17 00:00:00 2001 From: Alexander Karan <47707063+AlexanderKaran@users.noreply.github.com> Date: Mon, 26 Jan 2026 16:58:17 +0800 Subject: [PATCH 3/3] Update .gitignore Co-authored-by: James Garbutt <43081j@users.noreply.github.com> --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index aca0a69..e9abc58 100644 --- a/.gitignore +++ b/.gitignore @@ -66,7 +66,7 @@ coverage/ .nyc_output/ # CI artifacts -artifacts/ +/artifacts # Misc *.tmp