Every commit,
a ring of growth.
dendrobundle reads the webpack-stats and source-map-explorer output your CI already emits, then records what changed, by how much, and since which commit — like rings in a trunk. No agents, no client-side instrumentation, just the build stats you already generate.
free to start · no card · reads the stats your build already emits
- webpack-stats
- esbuild-metafile
- source-map-explorer
- rollup-stats
A 2.4 MB bundle costs 4.1 seconds
on a 3G phone. Every visitor. Every visit.
Speed is the metric your users actually feel — and bundle size is the biggest lever you control over it. dendrobundle keeps that lever in view on every build: one number, a ring that should tighten over time, and a check that fails the PR when it grows.
- example bundle
- 2.41 MB
- gzip on wire
- 780 KB
- parse + execute · M2
- 320 ms
- parse + execute · low-end Android
- 2.8 s
- TTI · 3G + low-end Android
- 4.1 s
- delta from a 200 KB target
- +580 KB · 3.7×
Features
One curl per build.
POST your build's stats JSON to /api/push. Token-scoped, idempotent, branch and commit tagged automatically from git refs in CI.
See what grew.
Compare any two snapshots — branches, deploys, releases. The table tells you which asset, which chunk, which byte count.
Fail the build.
Set per-project thresholds. PRs over budget get a red status check and the exact assets responsible.
Performance isn't a nice-to-have. The numbers say so.
- mobile abandonment
- 53%
- of visits abandon if load exceeds 3 seconds on mobile
- Google / SOASTA
- conversion drop
- 7%
- conversion lost for every 1-second delay in page load
- Aberdeen Group
- latency tax
- 1%
- revenue lost per 100 ms of added latency at Amazon scale
- Amazon internal (2006)
- annual revenue lost
- $2.6B
- in e-commerce revenue lost globally to slow load times each year
- Akamai / Forrester
Every second kills conversions.
The numbers are not subtle. Slow pages lose users before they ever reach your product — and bundle size is the biggest lever you control over it.
123%
increase in mobile bounce probability as load time grows from 1s to 10s.
Source: Google, 2017
Every millisecond
costs you.
- A 1-second delay reduces conversions by 7%.
- Akamai
- 53% of mobile users abandon sites that take over 3 seconds to load.
- Pages that load in 1s convert 3× better than pages that take 5s.
- Portent
Slow pages lose
search rankings too.
Google's Core Web Vitals include LCP, FID, and CLS — and bundle size is the biggest lever you control over LCP. Every kilobyte you ship delays paint.
- Google uses page speed as a ranking signal since 2010, Core Web Vitals since 2021.
- Google Search Central
- Top-ranking pages load 2.5× faster than pages on page 2.
- Backlinko
- Sites with good Core Web Vitals see 24% fewer page abandonments.
- Google CrUX data
before dendrobundle
needs improvement
untracked
poor
after dendrobundle
good
budgeted
good
// sites with good Core Web Vitals see 24% fewer page abandonments — Google CrUX data
Up and running in 60 seconds.
Sign up, create a project, get a push token. Wire it to CI with one curl call. No infrastructure to manage.
- free to start · no card required
- any CI pipeline works
- webpack · esbuild · source-map-explorer
- rollup · vite (via rollup-plugin-visualizer)
Want to see it first? Drop a stats file into the free bundle analyzer → — no signup, nothing uploaded.
# create a free account and a project # dendrobundle.com/register — no card required# create a push token # Dashboard, then Project Settings, API Tokens, New token bt_live_8f2a…c7e1 # save this; shown once# wire CI (github actions, drone, gitlab, jenkins — any) - run: npm run build - run: | curl -sS https://dendrobundle.com/api/push -H "Authorization: Bearer {{ secrets.BUNDLE_TOKEN }}" -d @dist/webpack-stats.json
Pricing
| perm | tier | size | $/mo | terms | action |
|---|---|---|---|---|---|
| community | 3 projects | 0 | free forever, 10 snapshots per project, no card | get started | |
| developer | 10 projects | 20 | + unlimited history, data export, email support | upgrade |
// no per-bundle metering. no "starting at". no sales calls unless you ask.