Show HN: PrinceJS – 19,200 req/s Bun framework in 2.8 kB (built by a 13yo) (princejs.vercel.app)
Hey HN,
I'm 13, from Nigeria, and I just released PrinceJS — the fastest web framework for Bun right now.
• 19,200 req/s (beats Hono/Elysia/Express) • 2.8 kB gzipped • Tree-shakable (cache, AI, email, cron, SSE, queue, test, static...) • Zero deps. Zero config.
Built in < 1 week. No team. Just me and Bun.
Try it: `bun add princejs` GitHub: https://github.com/MatthewTheCoder1218/princejs Docs: https://princejs.vercel.app
Brutal feedback welcome. What's missing?
– @Lil_Prince_1218
58 comments
[ 3.1 ms ] story [ 82.7 ms ] threadWould love to see the benchmarks checked into source control somewhere so folks can reproduce them.
Can't say I'm the biggest fan of the way the sample code types itself out character-by-character. Took a while for the longer samples to finish typing themselves out.
Are tweets 2800 characters now? (Genuine question, I haven't used the place in years.
Congrats on this, keep building more stuff!
https://princejs.com/
Also parsing the body on every request without the ability to change it could hurt performance (if you're going for performance that is as a primary factor).
I wonder if the trie-based routing is actually faster than Elysia in precompile mode set to enabled?
Overall, this is a nice wrapper on top of bun.serve, structured really well. Code is easy to read and understand. All the necessary little things taken care of.
The dev experience of maintaining this is probably a better selling point than performance.
interesting to dig deep into the bun runtime (it's in zig) to see how this remains efficient. it's a heap: https://github.com/oven-sh/bun/blob/509a97a43516fe4f6d4ff400...
of these: https://github.com/oven-sh/bun/blob/509a97a43516fe4f6d4ff400...
pretty cool clean and simple code for the framework (and bun).
A potential user would want to know: why is it faster? What's the compromise, if any. What specific quantifiable technical points make it faster than other libraries. Benchmarks and tests.
Overall the library feels like a polished open-source project, good attention to design and detail. Definitely valuable as part of a portfolio/resume. Keep going!
however, the author is benchmarking a route with an id param here, not a static route.
[1] https://github.com/uNetworking/uWebSockets/discussions/1415
Has "Prince" in his HN nick and framework name
I smell either a rat, or an incredibly meme-savvy kid who leaned into the joke.
Anyways, congrats and keep on hacking!
Next: tests + security fixes + reproducible benchmarks.
Thank you for making PrinceJS better.
— @Lil_Prince_1218 (13, Nigeria)
1. File size is a commonly highlighted metric for JS frameworks because of network transfer cost on the client side. For node/bun/deno frameworks, it isn't very relevant, especially the gzipped size.
2. In the benchmark, the number for all frameworks is quite low - I get closer to 80-100k req/s with Bun on my 3-year old machine. Might be worth using a standard VM size in a cloud provider to make it more meaningful.
3. "Cron" scheduling doesn't seem to belong in the library. This won't be very useful for real-world use cases, as soon as you have >1 node running a server you'll need some form of coordination. More size reduction :)