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