React tour library bundle sizes
Gzipped and minified production-build sizes for every major React product tour library — userTourKit, React Joyride, Shepherd.js, Driver.js, Intro.js, Onborda, and Reactour. Sourced from bundlephobia with a timestamped snapshot.
Measured · 9 packages · methodology
Smallest
Onborda
2.3 KB gzipped · v1.2.5
Largest
React Joyride
25.0 KB gzipped · v3.0.2
Sorted by gzipped size
| Package | Gzipped | Minified | Deps | Version | Source |
|---|---|---|---|---|---|
onborda | 2.3 KB | 6.8 KB | 0 | 1.2.5 | bundlephobia |
ours@tour-kit/core @tour-kit/core | 5.6 KB | 16.7 KB | 1 | 0.3.0 | bundlephobia |
driver.js | 5.9 KB | 20.0 KB | 0 | 1.4.0 | bundlephobia |
@reactour/tour | 7.0 KB | 20.0 KB | 3 | 3.8.0 | bundlephobia |
shepherd.js | 13.7 KB | 39.7 KB | 2 | 15.2.2 | bundlephobia |
ours@tour-kit/hints @tour-kit/hints | 15.1 KB | 41.4 KB | 4 | 0.4.1 | bundlephobia |
intro.js | 16.5 KB | 60.4 KB | 0 | 8.3.2 | bundlephobia |
ours@tour-kit/react @tour-kit/react | 22.0 KB | 62.7 KB | 4 | 0.4.1 | bundlephobia |
react-joyride | 25.0 KB | 73.1 KB | 10 | 3.0.2 | bundlephobia |
How these numbers were measured
Every row is pulled from bundlephobia.com's public API via a script committed alongside this page (scripts/fetch-bundle-sizes.ts). The raw JSON output is committed to the repository at content/benchmarks/bundle-sizes.json and re-fetched on a quarterly cadence. For the complete methodology — what counts as a bundle, how gzip is computed, and what we do when bundlephobia 404s a scoped package — see How We Test.
Caveats you should read
- Full-package vs tree-shaken. Bundlephobia reports the default-export size. A package that's heavily tree-shaken in real usage (userTourKit/hints especially, which ships many independent primitives) can measure much higher here than the subset you actually import. When you care about your real bundle cost, measure your production build with
size-limitornext build --profile, not this table. - Peer dependencies. React and React DOM are standard peer deps and are excluded from every measurement — otherwise every library would show a false +42 KB.
- Version drift. These numbers are frozen as of April 20, 2026. Competitor packages ship new versions frequently; if the table looks stale, the data file's
measuredAttimestamp is authoritative. - Feature parity is not equal. userTourKit and Shepherd.js include checklists, hints, analytics hooks, and announcement primitives in their builds. React Joyride is a single-purpose tour component. Compare features and size together — see our comparison articles for per-competitor context.
What this means in practice
If shaving every kilobyte matters (landing pages, marketing sites, mobile-first B2C), the single-purpose libraries at the top of the table — Onborda, @tour-kit/core, Driver.js — are the right starting point. If you need tours plus hints, checklists, announcements, and analytics in one install, the middle of the table (userTourKit, Shepherd.js) costs more but replaces multiple packages. When in doubt, run a proof-of-concept and measure your actual production build.
Related
- How we test — the methodology this benchmark follows.
- Editorial policy — why this page honestly lists our packages alongside competitors (including where our numbers look worse).
- Head-to-head comparisons — bundle size in context of features, licensing, and DX.