Repository navigation
Package Size
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.
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.
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 |
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 -cFor 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.