Skip to content

Package Size

Josselin Guillozet edited this page Oct 19, 2026 · 5 revisions

Target version: 7.0+

To deliver a cutting-edge product, we rely on many techniques that are at the forefront of modern web technologies, such as feature detection within the browser, and high quality image capture and encoding that go outside the remits of WebRTC.

That means a lot of code, binaries and models. Almost none of it reaches your application bundle.

Impact on your bundle

The SDK is an ES module with two entrypoints, and both are thin. Everything heavy is an asset fetched at runtime, so what your bundler pulls in is small and roughly fixed:

Entrypoint Raw Gzipped What it is
iProovMe.js 124 KB 45 KB The <iproov-me> element. Loads everything else on demand at runtime.
iProovSupport.js 66 KB 24 KB The standalone support checker, usable without loading iProovMe.js.

Measured on the published 7.0.0 package, which is what npm serves you.

If you have an app-size budget, these are the numbers that matter, and they are the reason we recommend loading the support checker in a separate chunk from the component: a page that only needs to know whether iProov will run does not have to pay for the component.

Runtime assets

The rest is served from the origin given by the assets_url attribute — our CDN by default, or your own host. It is fetched on demand, cached by the browser, and versioned by SDK release, so it is a one-time cost per user per version rather than part of your deploy.

The full published asset set for 7.0.0, gzipped:

Category Gzipped Notes
bin/ 1,154 KB Wasm binaries and the face-detection model
chunks/ 803 KB Split JavaScript, loaded as the claim progresses
fonts/ 493 KB Two faces in five formats; a browser downloads one format per face
images/ 191 KB Includes artwork only some flows use
workers/ 130 KB Face detection and encoding workers

A session does not download all of that. The set is deliberately over-published so the right variant exists for every browser: bin/ ships three TensorFlow.js Wasm backends and only one is fetched, whichever matches the device's SIMD support — face detection runs single-threaded, so the multithreaded build is never used. fonts/ ships .eot, .svg, .ttf, .woff and .woff2 of the same two faces, of which a browser takes one per face.

A typical session fetches roughly 2 MB gzipped, dominated by four files:

File Gzipped
bin/group1-shard1of1.bin 366 KB
bin/webm-wasm.wasm 321 KB
chunks/9.js 244 KB
bin/tfjs-backend-wasm-simd.wasm 130 KB

Measuring it yourself

These figures move between releases, so measure against the version you are shipping rather than trusting this page:

gzip -9 -c node_modules/@iproov/web-sdk/iProovMe.js | wc -c

For the runtime assets, load a claim with the network panel open and filter on your assets_url origin. That also shows you exactly which variants your target devices pick, which is the only reliable way to size the real download.

To learn more about serving these dependencies from your own origin, see Serving Assets.

Clone this wiki locally