How garnertb/nextjs-bundle-analysis-action works
This GitHub Action measures per-route client JavaScript from a Next.js build, compares the report with a trusted base-branch artifact, evaluates budgets, and publishes findings as a PR comment and job summary. The principal runtime is orchestrated by src/main.ts; src/cli.ts also exposes local measurement and report commands. The tree and excerpts establish the collector and baseline paths, but some delivery details are only partially sampled, so the graph omits uncertain internal wiring.
Main entry points: main.ts Action orchestrator · index.ts Report collection · artifact.ts Artifact transfer · compare.ts Report comparison
Components 27
Action runtime
- Action orchestrator
src/main.ts - Input parsing
src/inputs.ts - Optional build
src/main.ts
Bundle measurement
- Report collection
src/collectors/index.ts - Version and bundler
src/collectors/environment.ts - App Router routes
src/collectors/detect.ts - Pages Router routes
src/collectors/pages.ts - App manifest parsing
src/collectors/app-manifest.ts - Turbopack support
src/collectors/app-turbopack.ts - Route normalization
src/collectors/route-path.ts - Chunk size compression
src/collectors/compression.ts
Comparison and budgets
- Bundle report
src/collectors/types.ts - Report comparison
src/report/compare.ts - Threshold configuration
src/config.ts - Route budget rules
src/thresholds/budgets-file.ts - Threshold evaluation
src/thresholds/evaluate.ts - Markdown reporting
src/report/render.ts
GitHub delivery
- Baseline lookup
src/github/baseline.ts - Artifact transfer
src/github/artifact.ts - GitHub API adapter
src/github/api.ts - PR comment upsert
src/github/comment.ts - Finding annotations
src/github/annotate.ts - Job summary
src/github/summary.ts
Other components
- Workflow caller
- Next.js build output
- GitHub services
- Workflow artifacts
Connections 39
- Workflow caller → Action orchestrator: runs
- Action orchestrator → Input parsing: parses
- Action orchestrator → Optional build: optionally runs
- Optional build → Next.js build output: builds
- Action orchestrator → Report collection: collects
- Report collection → Next.js build output: reads
- Report collection → Version and bundler: detects
- Report collection → App Router routes: collects routes
- Report collection → Pages Router routes: collects routes
- App Router routes → App manifest parsing: reads manifests
- App Router routes → Turbopack support: supports
- Report collection → Route normalization: normalizes routes
- Report collection → Chunk size compression: measures files
- Report collection → Bundle report: produces
- Action orchestrator → Baseline lookup: finds baseline
- Baseline lookup → GitHub API adapter: queries runs
- Baseline lookup → Artifact transfer: downloads report
- Artifact transfer → GitHub services: accesses artifacts
- GitHub API adapter → GitHub services: calls API
- Artifact transfer → Bundle report: reads baseline
- Action orchestrator → Report comparison: compares reports
- Baseline lookup → Report comparison: compares fallback
- Bundle report → Report comparison: supplies measurements
- Action orchestrator → Threshold configuration: builds config
- Action orchestrator → Threshold evaluation: evaluates findings
- Threshold evaluation → Route budget rules: resolves overrides
- Report comparison → Threshold evaluation: supplies deltas
- Action orchestrator → Markdown reporting: renders report
- Report comparison → Markdown reporting: supplies comparison
- Threshold evaluation → Markdown reporting: supplies findings
- Action orchestrator → PR comment upsert: upserts comment
- PR comment upsert → GitHub API adapter: reads and writes
- Action orchestrator → Finding annotations: publishes findings
- Finding annotations → GitHub services: creates annotations
- Action orchestrator → Job summary: writes summary
- Job summary → GitHub services: writes job summary
- Action orchestrator → Artifact transfer: uploads report
- Artifact transfer → Workflow artifacts: stores report
- Workflow artifacts → Artifact transfer: provides baseline