Python's scientific and data ecosystem rests on one library: NumPy. Pandas, scikit-learn, SciPy, and most ML tooling are built on top of it. JavaScript has never had a real equivalent, and that gap is a big reason serious numeric and data work still defaults to Python. The hard part about bringing NumPy to JS? Performance.
numpy-ts is a complete NumPy for TypeScript and JavaScript, and this talk is the story of making it fast. The first version was 15x slower than native NumPy. The obvious move, rewriting hot paths in WASM, got it to roughly 2x slower and then stalled, for reasons that turned out to have nothing to do with FFI overhead. The fix was architectural: changing where the array data lives.
We'll trace that journey across 7,159 benchmarks, from 15x slower to faster than native, and the copy tax hiding inside most WASM-accelerated JS libraries along the way.
This talk has been presented at JSNation US 2026, check out the latest edition of this JavaScript Conference.

















