Benchmarks
Measured, and checked against the tools that define the answer
What the fix changes for rea
4 of 4original files rea names in a minified build that ships its source map
→
0after reaproof fix
Our web test app: four TypeScript files bundled with Bun 1.2.19. Measured with rea 6.4.0 on 2026-10-14; rea 6.5.0 gave the same counts on 2026-10-16. Minifying alone changed none of rea's counts.
Safe on archives built to cost you
A 1 MB archive whose one file states 1 MB and holds 1 GB is refused in 0.04 s with 55 MB of memory in use. Without that stop it used 2.1 GB.
A 137 kB archive that holds another many times over and lists twenty million files is done with after about a million of them, in about a second.
Nothing is unpacked to disk, and programs are read without running them.
Right answers on framework builds
| 22 test apps, six frameworks | 0.7.0 | 0.8.0 |
Leaks found, of 14 put in, with the .env file there (your machine) | 13 | 14 |
| The same, with the values in the environment instead (a CI job) | 11 | 14 |
| The same, with neither | 11 | 13 |
| Apps built right that were rated with a leak, of 8 | 4 | 0 |
| Apps with any false alarm, of 22 | 10 | 0 |
| Apps it could not check, of 22 | 1 | 0 |
Built on 2026-10-18 in Docker with Next.js 16.4.2, Vite 8.3.4, SvelteKit 3.1.0, Nuxt 4.6.2, Astro 7.4.0 and React Router 8.4.0, each built right, with source maps on, and with a server key handed to browser code. The false alarms of 0.7.0 came from reading server code, which does not ship. With neither a .env file nor the environment, a token of the app's own, in no vendor's format, cannot be told from any other value. How the apps were built
Same answer as the reference tool
| What is counted | On | Reaproof | Reference tool | Result |
| Android build left debuggable | Termux 0.118.3, debug build from its GitHub release | debuggable | aapt: debuggable | Same |
| Android classes that keep their names | Fossify Gallery 1.14.0 | 228 of 228 | dexdump: 228 | Same |
Names a default go build keeps | Our Go test program, for Linux | 2,519 | readelf: 2,519 functions and objects | Same |
Electron fuses that check app.asar | 16 Electron apps on the test Mac | 16 of 16 | @electron/fuses read | Same |
| Function names in WebAssembly | 12 modules on the test Mac | 12 of 12 | wabt wasm-objdump | Same |
| .NET types and methods | 5 .NET runtime assemblies, the largest with 41,416 methods | 5 of 5 | .NET's metadata reader | Same |
Swift and Objective-C names left after strip | Our macOS test program, Swift 6.3 | 44 · 42 · 22 · 20 | otool, same sections | Same |
Paths left out by .reaproofignore | 20 paths, 11 patterns | 17 | git check-ignore: 17 | Same |
| SARIF output | 7 targets | 7 of 7 valid | OASIS SARIF 2.1.0 schema | Same |
Speed on real builds
| Target | Size | Files read | Time |
| Our web test app | 6.3 kB | 3 | 0.04 s |
| Our Vite build with eight SDKs | 1.8 MB | 3 | 0.05 s |
ripgrep 15.2.0 for Windows, .zip | 1.8 MB | 14 | 0.07 s |
Fossify Gallery 1.14.0, .apk | 38.5 MB | 1,606 | 0.19 s |
Joplin 3.7.10, .apk | 177.1 MB | 1,162 | 0.63 s |
Electron Fiddle 0.39.0 for macOS, .zip | 117.8 MB | 366 | 1.32 s |
Median of three runs of reaproof <target> --json with 0.8.0 on 2026-10-18, on an Apple M4 Pro with Node 24.14.0, Node's own start included, in a shell with two variables named like a secret, which it compares with what ships. Size is the file or folder on disk. Details of every check are in the guide.