# Animation Runtime Bundle Size Benchmark (September 2026)

> In a production Vite 5 build of five otherwise identical minimal React apps, gzipped JavaScript for the animation runtime ranged from 58 KB for dotlottie-web to 758 KB for the ExodeUI React SDK. Rive was 100 KB, GSAP 71 KB and Framer Motion 80 KB. ExodeUI is the heaviest because it bundles the Rapier 2D WebAssembly physics engine, and we are publishing that result against ourselves.

Updated October 2026. Source: https://www.exodeui.com/learn/animation-runtime-bundle-size-benchmark/

## The results table

All five apps use React 18.3.1 and React DOM, which add about 44 KB gzip to every row. The differences between rows are the animation runtimes themselves. Measure is the sum of all emitted .js files after gzip -c.

| Runtime | Version | Raw | Gzip | Relative to Lottie |
| --- | --- | --- | --- | --- |
| @lottiefiles/dotlottie-web | 0.80.0 | 200 KB | 58 KB | 1.0x |
| GSAP | 3.15.0 | 208 KB | 71 KB | 1.2x |
| Framer Motion | 11.18.2 | 248 KB | 80 KB | 1.4x |
| @rive-app/canvas | 2.42.0 | 333 KB | 100 KB | 1.7x |
| exodeui (React SDK) | 6.4.5 | 2,113 KB | 758 KB | 12.8x |

## Why ExodeUI is the heaviest, in one sentence

The ExodeUI SDK includes @dimforge/rapier2d-compat, a WebAssembly rigid-body physics engine of roughly 1.69 MB, which is about 80 percent of the payload. The other four runtimes interpolate keyframes or drive a playhead and do not simulate physics, so their runtimes are small. That explains the number but does not excuse it, and it does not make 758 KB smaller.

- Rapier ships even when a component only needs a spring.
- Lazy WASM loading and physics tree-shaking are the top requests on the runtime roadmap.
- Compiled scene files are small, often a few KB. The runtime, not the asset, is the weight.

## Methodology, so you can reproduce it

Five separate minimal apps, each rendering one animated element using the library documentation first example. Same toolchain, same React version, measured the same way.

- Build tool: Vite 5.4.21 with @vitejs/plugin-react 4, minify esbuild, production mode.
- React: 18.3.1 in all five apps.
- Measurement: sum of emitted .js files, raw and after gzip -c.
- Not measured: runtime frames per second, memory, WASM instantiation time, and scene asset size.
- Caveat: Rive .riv assets are typically much smaller than equivalent .exode JSON, which is a separate axis from runtime size.

## What to do with the number today

If you adopt ExodeUI, do not put the runtime in your first-paint bundle. Load it at the interactive surface with a dynamic import so the cost is paid only by users who reach the component.

- For a decorative loop or a hero effect, use a lighter runtime. That is an honest recommendation.
- For a component that only needs a spring, current ExodeUI is a poor trade on size. Use CSS or Motion.
- For full rigid-body physics driven by app state, lazy-load the runtime per route.

## How to cite this benchmark

The table above is the citable unit. It is versioned by the runtime versions listed, measured with the build settings above, and dated September 2026. Re-run it before quoting a newer release, because the ExodeUI number is expected to change as lazy loading and tree-shaking ship.

- Cite as: ExodeUI, Animation Runtime Bundle Size Benchmark, September 2026.
- Quote the gzip column, not the raw column, when comparing shipped weight.
- State the React baseline when you quote a delta, because every row includes it.

## Frequently asked questions

### Which animation library has the smallest bundle size?

In our September 2026 test, dotlottie-web was smallest at 58 KB gzipped, followed by GSAP at 71 KB, Framer Motion at 80 KB, the Rive canvas runtime at 100 KB and the ExodeUI React SDK at 758 KB. All five numbers include a React baseline of about 44 KB.

### Why is the ExodeUI runtime so large?

It bundles the Rapier 2D WebAssembly physics engine, which is about 80 percent of the payload. The engine ships even when a scene only needs a spring, which is a packaging problem we have said publicly we intend to fix with lazy loading and tree-shaking.

### Is bundle size the same as rendering performance?

No. Bundle size measures what the browser downloads and parses. Frame rate, memory and main-thread time are separate measurements, and this benchmark deliberately did not measure them.

### How was the benchmark measured?

Five identical minimal React 18.3.1 apps were built with Vite 5.4.21 in production mode with esbuild minification. For each, all emitted .js files were summed, raw and after gzip -c. Scene assets were excluded.

### Will the numbers change?

The ExodeUI number is expected to fall as lazy WASM loading and physics tree-shaking ship. The benchmark is re-run on each ExodeUI minor release and the table is updated with the versions used.

## Related

- [ExodeUI vs Rive compared](https://www.exodeui.com/compare/exodeui-vs-rive)
- [Best React animation libraries](https://www.exodeui.com/best-react-animation-libraries)
- [Animation and Core Web Vitals](https://www.exodeui.com/learn/animation-core-web-vitals)
- [Best Lottie alternatives](https://www.exodeui.com/best-lottie-alternatives)
