From dcf20644b3488597dd1022c7648744f1b87893bd Mon Sep 17 00:00:00 2001 From: Alexander Karan <47707063+AlexanderKaran@users.noreply.github.com> Date: Sat, 8 Aug 2026 08:49:28 +0800 Subject: [PATCH 1/4] Direct Deps --- .../src/components/DependencyCountText.astro | 6 +++ packages/docs/src/components/DepsChart.astro | 2 +- .../components/DuplicateDependencyChart.astro | 2 +- .../FrameworkDependencyCharts.astro | 43 +++++++++++++++++++ .../FrameworkDependencyStatsTable.astro | 29 +++++++++++++ .../FrameworkDependencyVersionCharts.astro | 32 ++++++++++++-- .../docs/src/components/ProdDepsChart.astro | 2 +- .../docs/src/content/docs/all-frameworks.mdx | 13 ++++++ packages/docs/src/content/docs/dev-time.mdx | 12 ++++++ packages/docs/src/lib/collections.ts | 35 +++++++++++++++ 10 files changed, 169 insertions(+), 7 deletions(-) create mode 100644 packages/docs/src/components/DependencyCountText.astro create mode 100644 packages/docs/src/components/FrameworkDependencyCharts.astro create mode 100644 packages/docs/src/components/FrameworkDependencyStatsTable.astro diff --git a/packages/docs/src/components/DependencyCountText.astro b/packages/docs/src/components/DependencyCountText.astro new file mode 100644 index 00000000..63ae0b8c --- /dev/null +++ b/packages/docs/src/components/DependencyCountText.astro @@ -0,0 +1,6 @@ + + +For dependency counts we start by looking at the dependencies for the meta-framework package directly, for example how many prod, dev and overall deps does `Nuxt` have. Then we look at dependencies again for the starter projects. +While we think looking at projects dependencies is more realistic like the `starter-*` projects as meta-frameworks rarely just run with meta-framework package it is also important to look at direct dependencies. + +This is the only tests in Dev Time Stats where we do this every other Dev Time Test is based on the Start Projects \ No newline at end of file diff --git a/packages/docs/src/components/DepsChart.astro b/packages/docs/src/components/DepsChart.astro index 684ab211..f9c273a8 100644 --- a/packages/docs/src/components/DepsChart.astro +++ b/packages/docs/src/components/DepsChart.astro @@ -16,7 +16,7 @@ const data = validEntries --- { + const value = framework.frameworkDependencies?.[metric] + if (typeof value !== 'number' || !Number.isFinite(value)) return [] + + return [ + { + name: framework.name, + value, + focused: framework.isFocused, + }, + ] + }) + .sort((a, b) => a.value - b.value || a.name.localeCompare(b.name)) +} +--- + + + + diff --git a/packages/docs/src/components/FrameworkDependencyStatsTable.astro b/packages/docs/src/components/FrameworkDependencyStatsTable.astro new file mode 100644 index 00000000..33cc19a6 --- /dev/null +++ b/packages/docs/src/components/FrameworkDependencyStatsTable.astro @@ -0,0 +1,29 @@ +--- +import { frameworkDepsStats } from '../lib/collections' +import { getFrameworkSlug } from '../lib/utils' +import StatsTable from './StatsTable.astro' + +const frameworkDepsColumns = [ + { + key: 'name', + header: 'Framework', + nameCell: true, + href: (row: Record) => + `/framework/${getFrameworkSlug(row.package as string)}`, + }, + { key: 'allDependencies', header: 'Deps' }, + { key: 'devDependencies', header: 'Dev' }, + { key: 'prodDependencies', header: 'Prod' }, + { + key: 'graph', + header: 'Graph', + href: (row: Record) => row.graphUrl as string, + }, +] +--- + + diff --git a/packages/docs/src/components/FrameworkDependencyVersionCharts.astro b/packages/docs/src/components/FrameworkDependencyVersionCharts.astro index cdeafa81..42203f16 100644 --- a/packages/docs/src/components/FrameworkDependencyVersionCharts.astro +++ b/packages/docs/src/components/FrameworkDependencyVersionCharts.astro @@ -1,4 +1,5 @@ --- +import DependencyCountText from './DependencyCountText.astro' import VersionLineChart from './VersionLineChart.astro' interface Props { @@ -8,29 +9,52 @@ interface Props { const { versions } = Astro.props --- + + + + + ## Dependency Counts Methodology: [Dependency Counts](/methodology/#dependency-counts). + + +### Meta-framework Direct Package Counts + + + + +### Starter Projects + diff --git a/packages/docs/src/content/docs/dev-time.mdx b/packages/docs/src/content/docs/dev-time.mdx index ad06a312..32a2824a 100644 --- a/packages/docs/src/content/docs/dev-time.mdx +++ b/packages/docs/src/content/docs/dev-time.mdx @@ -8,7 +8,10 @@ import BrowserBaselineTable from '../../components/BrowserBaselineTable.astro' import BuildSizeCharts from '../../components/BuildSizeCharts.astro' import CoreJsTable from '../../components/CoreJsTable.astro' import DependencyCharts from '../../components/DependencyCharts.astro' +import DependencyCountText from "../../components/DependencyCountText.astro" import DependencyStatsTable from '../../components/DependencyStatsTable.astro' +import FrameworkDependencyCharts from '../../components/FrameworkDependencyCharts.astro' +import FrameworkDependencyStatsTable from '../../components/FrameworkDependencyStatsTable.astro' import NodeModulesSizeCharts from '../../components/NodeModulesSizeCharts.astro' ## Setup @@ -21,6 +24,15 @@ Each starter project uses each meta-frameworks recommended setup via their CLI w Methodology: [Dependency Counts](/methodology/#dependency-counts). + + +### Meta-framework Direct Package Counts + + + + +### Starter Projects + diff --git a/packages/docs/src/lib/collections.ts b/packages/docs/src/lib/collections.ts index d1f288bb..fdc11b83 100644 --- a/packages/docs/src/lib/collections.ts +++ b/packages/docs/src/lib/collections.ts @@ -201,6 +201,41 @@ export const depsStats = starterStats.map((f) => ({ graph: 'View', })) +const frameworkPackageNames: Record = { + 'starter-astro': 'astro', + 'starter-mastro': '@mastrojs/mastro', + 'starter-next-js': 'next', + 'starter-nuxt': 'nuxt', + 'starter-react-router': '@react-router/dev', + 'starter-solid-start': '@solidjs/start', + 'starter-sveltekit': '@sveltejs/kit', + 'starter-tanstack-start-react': '@tanstack/react-start', +} + +export const frameworkDepsStats = starterStats.flatMap((f) => { + const dependencies = f.frameworkDependencies + const frameworkPackage = frameworkPackageNames[f.package] + if (dependencies == null || frameworkPackage == null) return [] + + const graphQuery = + f.frameworkVersion != null && f.frameworkVersion !== 'unknown' + ? `${frameworkPackage}@${f.frameworkVersion}` + : frameworkPackage + + return [ + { + name: f.name, + package: f.package, + isFocused: f.isFocused, + allDependencies: dependencies.allDependencies.toLocaleString(), + devDependencies: dependencies.devDependencies.toLocaleString(), + prodDependencies: dependencies.prodDependencies.toLocaleString(), + graph: 'View', + graphUrl: `https://npmgraph.js.org/?q=${encodeURIComponent(graphQuery)}`, + }, + ] +}) + export const buildInstallData = starterStats.map((f) => ({ name: f.name, package: f.package, From a4987148f83a6b0e862ed816293c2268df68acf3 Mon Sep 17 00:00:00 2001 From: Alexander Karan <47707063+AlexanderKaran@users.noreply.github.com> Date: Sat, 8 Aug 2026 09:18:20 +0800 Subject: [PATCH 2/4] Formatted --- .../docs/src/components/DependencyCountText.astro | 14 ++++++++------ packages/docs/src/content/docs/all-frameworks.mdx | 3 +-- packages/docs/src/content/docs/dev-time.mdx | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/docs/src/components/DependencyCountText.astro b/packages/docs/src/components/DependencyCountText.astro index 63ae0b8c..76ac1aa1 100644 --- a/packages/docs/src/components/DependencyCountText.astro +++ b/packages/docs/src/components/DependencyCountText.astro @@ -1,6 +1,8 @@ - - -For dependency counts we start by looking at the dependencies for the meta-framework package directly, for example how many prod, dev and overall deps does `Nuxt` have. Then we look at dependencies again for the starter projects. -While we think looking at projects dependencies is more realistic like the `starter-*` projects as meta-frameworks rarely just run with meta-framework package it is also important to look at direct dependencies. - -This is the only tests in Dev Time Stats where we do this every other Dev Time Test is based on the Start Projects \ No newline at end of file +For dependency counts we start by looking at the dependencies for the +meta-framework package directly, for example how many prod, dev and overall deps +does `Nuxt` have. Then we look at dependencies again for the starter projects. +While we think looking at projects dependencies is more realistic like the +`starter-*` projects as meta-frameworks rarely just run with meta-framework +package it is also important to look at direct dependencies. This is the only +tests in Dev Time Stats where we do this every other Dev Time Test is based on +the Start Projects diff --git a/packages/docs/src/content/docs/all-frameworks.mdx b/packages/docs/src/content/docs/all-frameworks.mdx index 5c466250..22094061 100644 --- a/packages/docs/src/content/docs/all-frameworks.mdx +++ b/packages/docs/src/content/docs/all-frameworks.mdx @@ -12,7 +12,7 @@ import CoreJsTable from '../../components/CoreJsTable.astro' import CoreWebVitalsCharts from '../../components/CoreWebVitalsCharts.astro' import CoreWebVitalsTable from '../../components/CoreWebVitalsTable.astro' import DependencyCharts from '../../components/DependencyCharts.astro' -import DependencyCountText from "../../components/DependencyCountText.astro" +import DependencyCountText from '../../components/DependencyCountText.astro' import DependencyStatsTable from '../../components/DependencyStatsTable.astro' import FrameworkDependencyCharts from '../../components/FrameworkDependencyCharts.astro' import FrameworkDependencyStatsTable from '../../components/FrameworkDependencyStatsTable.astro' @@ -25,7 +25,6 @@ import SSRLoadStatsTable from '../../components/SSRLoadStatsTable.astro' import SSRRequestThroughputCharts from '../../components/SSRRequestThroughputCharts.astro' import SSRRequestThroughputStatsTable from '../../components/SSRRequestThroughputStatsTable.astro' -
## Dependency Counts diff --git a/packages/docs/src/content/docs/dev-time.mdx b/packages/docs/src/content/docs/dev-time.mdx index 32a2824a..b9a433f9 100644 --- a/packages/docs/src/content/docs/dev-time.mdx +++ b/packages/docs/src/content/docs/dev-time.mdx @@ -8,7 +8,7 @@ import BrowserBaselineTable from '../../components/BrowserBaselineTable.astro' import BuildSizeCharts from '../../components/BuildSizeCharts.astro' import CoreJsTable from '../../components/CoreJsTable.astro' import DependencyCharts from '../../components/DependencyCharts.astro' -import DependencyCountText from "../../components/DependencyCountText.astro" +import DependencyCountText from '../../components/DependencyCountText.astro' import DependencyStatsTable from '../../components/DependencyStatsTable.astro' import FrameworkDependencyCharts from '../../components/FrameworkDependencyCharts.astro' import FrameworkDependencyStatsTable from '../../components/FrameworkDependencyStatsTable.astro' From ebf869680d3829e2f4e49160db7a08667087c28b Mon Sep 17 00:00:00 2001 From: Alexander Karan <47707063+AlexanderKaran@users.noreply.github.com> Date: Sun, 9 Aug 2026 07:10:20 +0800 Subject: [PATCH 3/4] Update DependencyCountText.astro Co-authored-by: James Garbutt <43081j@users.noreply.github.com> --- .../docs/src/components/DependencyCountText.astro | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/docs/src/components/DependencyCountText.astro b/packages/docs/src/components/DependencyCountText.astro index 76ac1aa1..224dad6e 100644 --- a/packages/docs/src/components/DependencyCountText.astro +++ b/packages/docs/src/components/DependencyCountText.astro @@ -1,8 +1,5 @@ -For dependency counts we start by looking at the dependencies for the -meta-framework package directly, for example how many prod, dev and overall deps -does `Nuxt` have. Then we look at dependencies again for the starter projects. -While we think looking at projects dependencies is more realistic like the -`starter-*` projects as meta-frameworks rarely just run with meta-framework -package it is also important to look at direct dependencies. This is the only -tests in Dev Time Stats where we do this every other Dev Time Test is based on -the Start Projects +For dependency counts, we start by looking at the dependencies for the +meta-framework package directly. For example, how many production, development and overall dependencies does `Nuxt` have? We then look at dependencies for the starter projects specifically. +Looking at a project's dependencies is more realistic (like the +`starter-*` projects) as meta-frameworks rarely just include the meta-framework +package alone. It is also important to look at direct dependencies. From a01669f8d6c7daf597dc2dca65287f0a4f6e9b41 Mon Sep 17 00:00:00 2001 From: Alexander Karan <47707063+AlexanderKaran@users.noreply.github.com> Date: Sun, 9 Aug 2026 07:43:03 +0800 Subject: [PATCH 4/4] Format --- packages/docs/src/components/DependencyCountText.astro | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/docs/src/components/DependencyCountText.astro b/packages/docs/src/components/DependencyCountText.astro index 224dad6e..cf29f9b4 100644 --- a/packages/docs/src/components/DependencyCountText.astro +++ b/packages/docs/src/components/DependencyCountText.astro @@ -1,5 +1,7 @@ For dependency counts, we start by looking at the dependencies for the -meta-framework package directly. For example, how many production, development and overall dependencies does `Nuxt` have? We then look at dependencies for the starter projects specifically. -Looking at a project's dependencies is more realistic (like the -`starter-*` projects) as meta-frameworks rarely just include the meta-framework -package alone. It is also important to look at direct dependencies. +meta-framework package directly. For example, how many production, development +and overall dependencies does `Nuxt` have? We then look at dependencies for the +starter projects specifically. Looking at a project's dependencies is more +realistic (like the `starter-*` projects) as meta-frameworks rarely just include +the meta-framework package alone. It is also important to look at direct +dependencies.