PRE-1.0 · EXPERIMENTAL BUILD

the fast, batteries-included bundler for the web_

Built on C#/.NET with Ahead-of-Time compilation. No JIT to warm up, no runtime to install — netpack starts at native speed and stays there.

$ npm i -D netpack && npx netpack bundle .
view source →
$ hyperfine --warmup 3 'netpack' 'esbuild' 'rspack' 'vite'
small project · cold build
netpack
418ms
esbuild
670ms
rspack
913ms
vite
1.66s

mean of 10 runs · npx netpack bundle src/small/index.html --minify

.js.ts.css.png.html
n
bundle.jsstyles.cssindex.htmlassets/

one graph in, one optimized output — resolved, transformed and written in a single pass

$ cat FEATURES.md

zero-config

Same entry point as Vite or Parcel — an index.html, or a JS file directly.

AoT compiled

No JIT warmup, no runtime to install. Native startup, every time.

auto import maps

Importmap entries become externals automatically; shared deps get wired in for you.

watch mode

Watches your filesystem, rebuilds, reloads the browser — no config needed.

npm-native

Install through npm, pnpm or yarn like any other bundler in your toolchain.

.NET native

Drop it into an ASP.NET pipeline as a post-process or asset optimizer step.

$ man why-dotnet

Most bundlers reach for Rust or Go once JavaScript gets too slow. netpack bets on C#/.NET instead: with Ahead-of-Time compilation, the CLI starts at native speed with no runtime install and no JIT to warm up.

The payoff is a language that reads easier than Rust and does more than Go, while still outrunning plain JavaScript tooling — even with a garbage collector still in the loop.

huge ecosystem
NuGet + npm, both reachable
dev productivity
reads cleaner than Rust
memory safety
managed, GC'd runtime
near-native speed
AoT, no JIT to warm up