I've been building something called Fairyfly. It's a lightweight JavaScript runtime that uses QuickJS, and the whole idea is to simplify backend development.

Fairyfly comes as a single binary. It includes a bunch of stuff right out of the box: an HTTP server, fetch, WebSockets, SQLite, Postgres, Workers, and crypto. That means you can install it and have a server running immediately, without needing a framework or a pile of dependencies.

The runtime itself is written in about 24,000 lines of Zig. I focused on keeping memory usage low and startup times fast. Plus, the code is designed so developers can actually look at it and understand how it works.

It's still pretty new, so I'd really appreciate it if you'd try it out, see what breaks, and tell me what's missing or what could be better. Your feedback will help guide where Fairyfly goes next.

GitHub logo AbdElMajidOuhamane / ff

A lightweight JS, backend-focused JavaScript runtime built with Zig and powered by QuickJS. Designed for fast startup, low memory, and a small readable codebase.

Fairyfly logo

Fairyfly Runtime

CI Release License: MPL-2.0

A lightweight, backend-focused JavaScript runtime built with Zig and powered by QuickJS. Designed for fast startup, low memory and a small readable codebase.

138k req/sec · 0.66 ms p50 · 5 MB RSS on Apple silicon (8-thread wrk, 100 conn) Outperforms Node 23, Bun 1.4, and Deno 2 — and uses ~10× less memory. Reproduce: make build, serve the hello-world handler, then wrk -t8 -c100 -d10s http://127.0.0.1:3000/ (RSS sampled via ps -o rss=); see Performance.

Contents

  1. Documentation
  2. Installation
  3. Why Fairyfly
  4. Quick start
  5. Example tour
  6. API at a glance
  7. Performance
  8. Architecture
  9. Building from source
  10. CLI reference
  11. Limitations vs Node / browser
  12. License

Documentation

The full guide set lives in docs/ — 44 pages covering everything this README summarizes.

Section Contents
Getting started Introduction, installation, quickstart
Guides HTTP server, fetch, WebSocket, TLS, HTTP/2, Postgres packages, modules, workers, timers, testing, bytecode, environment, deploy
API reference Every global
…