Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/frameworks.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,48 +4,55 @@
"displayName": "Next.js",
"package": "starter-next-js",
"buildScript": "build:next",
"buildOutputDir": ".next",
"measurements": ["install", "build", "dependencies"]
},
{
"name": "react-router",
"displayName": "React Router",
"package": "starter-react-router",
"buildScript": "build:react-router",
"buildOutputDir": "build",
"measurements": ["install", "build", "dependencies"]
},
{
"name": "tanstack",
"displayName": "TanStack Start",
"package": "starter-tanstack-start-react",
"buildScript": "build:tanstack",
"buildOutputDir": ".output",
"measurements": ["install", "build", "dependencies"]
},
{
"name": "nuxt",
"displayName": "Nuxt",
"package": "starter-nuxt",
"buildScript": "build:nuxt",
"buildOutputDir": ".output",
"measurements": ["install", "build", "dependencies"]
},
{
"name": "sveltekit",
"displayName": "SvelteKit",
"package": "starter-sveltekit",
"buildScript": "build:sveltekit",
"buildOutputDir": "build",
"measurements": ["install", "build", "dependencies"]
},
{
"name": "astro",
"displayName": "Astro",
"package": "starter-astro",
"buildScript": "build:astro",
"buildOutputDir": "dist",
"measurements": ["install", "build", "dependencies"]
},
{
"name": "solid-start",
"displayName": "SolidStart",
"package": "starter-solid-start",
"buildScript": "build:solid-start",
"buildOutputDir": ".output",
"measurements": ["install", "build", "dependencies"]
}
]
9 changes: 6 additions & 3 deletions .github/workflows/generate-stats.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ Thumbs.db
coverage/
.nyc_output/

# CI artifacts
/artifacts

# Misc
*.tmp
*.temp
Expand Down
1 change: 0 additions & 1 deletion artifacts/install-time-next/install-time.txt

This file was deleted.

1 change: 0 additions & 1 deletion artifacts/install-time-nuxt/install-time.txt

This file was deleted.

1 change: 0 additions & 1 deletion artifacts/install-time-react-router/install-time.txt

This file was deleted.

1 change: 0 additions & 1 deletion artifacts/install-time-sveltekit/install-time.txt

This file was deleted.

1 change: 0 additions & 1 deletion artifacts/install-time-tanstack/install-time.txt

This file was deleted.

9 changes: 6 additions & 3 deletions packages/docs/src/components/DependencyStats.astro
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ function formatBytesToMB(bytes: number): string {
</p>

<p class="description">
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.
</p>

<h2>Dev Time Performance</h2>

<p class="methodology">
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.
</p>

<div class="table-wrapper">
Expand Down Expand Up @@ -86,6 +87,7 @@ function formatBytesToMB(bytes: number): string {
<th scope="col">Install</th>
<th scope="col">Cold Build</th>
<th scope="col">Warm Build</th>
<th scope="col">Build Output</th>
</tr>
</thead>
<tbody>
Expand All @@ -96,6 +98,7 @@ function formatBytesToMB(bytes: number): string {
<td>{(framework.installTimeMs / 1000).toFixed(2)}s</td>
<td>{(framework.coldBuildTimeMs / 1000).toFixed(2)}s</td>
<td>{(framework.warmBuildTimeMs / 1000).toFixed(2)}s</td>
<td>{formatBytesToMB(framework.buildOutputSize)}</td>
</tr>
))
}
Expand Down
1 change: 1 addition & 0 deletions packages/docs/src/content/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down
1 change: 1 addition & 0 deletions packages/docs/src/content/stats/starter-astro.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"installTimeMs": 3396,
"coldBuildTimeMs": 2405,
"warmBuildTimeMs": 2060,
"buildOutputSize": 0,
"nodeModulesSize": 130822051,
"nodeModulesSizeProdOnly": 130799869
}
1 change: 1 addition & 0 deletions packages/docs/src/content/stats/starter-next-js.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"installTimeMs": 7029,
"coldBuildTimeMs": 7158,
"warmBuildTimeMs": 6932,
"buildOutputSize": 0,
"timingMeasuredAt": "2026-01-25T11:15:55Z",
"runner": "ubuntu-latest",
"nodeModulesSize": 525877392,
Expand Down
1 change: 1 addition & 0 deletions packages/docs/src/content/stats/starter-nuxt.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"installTimeMs": 6593,
"coldBuildTimeMs": 6385,
"warmBuildTimeMs": 5938,
"buildOutputSize": 0,
"timingMeasuredAt": "2026-01-25T11:15:55Z",
"runner": "ubuntu-latest",
"nodeModulesSize": 160441140,
Expand Down
1 change: 1 addition & 0 deletions packages/docs/src/content/stats/starter-react-router.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"installTimeMs": 2903,
"coldBuildTimeMs": 3152,
"warmBuildTimeMs": 2701,
"buildOutputSize": 0,
"timingMeasuredAt": "2026-01-25T11:15:55Z",
"runner": "ubuntu-latest",
"nodeModulesSize": 94085677,
Expand Down
3 changes: 2 additions & 1 deletion packages/docs/src/content/stats/starter-solid-start.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@
"nodeModulesSize": 115065119,
"nodeModulesSizeProdOnly": 115005343,
"coldBuildTimeMs": 8759,
"warmBuildTimeMs": 8612
"warmBuildTimeMs": 8612,
"buildOutputSize": 0
}
1 change: 1 addition & 0 deletions packages/docs/src/content/stats/starter-sveltekit.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"installTimeMs": 2749,
"coldBuildTimeMs": 4673,
"warmBuildTimeMs": 3798,
"buildOutputSize": 0,
"timingMeasuredAt": "2026-01-25T11:15:55Z",
"runner": "ubuntu-latest",
"nodeModulesSize": 57337636,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"installTimeMs": 4766,
"coldBuildTimeMs": 8268,
"warmBuildTimeMs": 7802,
"buildOutputSize": 0,
"timingMeasuredAt": "2026-01-25T11:15:55Z",
"runner": "ubuntu-latest",
"nodeModulesSize": 194597669,
Expand Down