Frequently asked questions

Are these official ports of the Node.js libraries?
No. They're independent re-implementations that mirror the original APIs and behaviour. They're not affiliated with or endorsed by the upstream Node.js projects. Each is MIT-licensed.
How compatible are they really?
Where a wire format exists, compatibility is verified against the real clients: Socket.IO interoperates with socket.io-client@4, Passport's JWTs verify against jsonwebtoken, and the WebSocket layer follows RFC 6455. API-level ports (Express, morgan, chalk) mirror the original semantics and are covered by tests.
What are the dependencies?
Almost none. Express, Passport, Socket.IO and morgan use only the Go standard library. chalk pulls in golang.org/x/term (for raw-mode prompts). There are no replace directives, so a plain go get works.
Which Go version do I need?
Go 1.23 or newer. CI tests each library on Go 1.23 and 1.24.
Can I use just one library?
Yes — each is a standalone Go module. Use Express on its own, or wire several together. They compose through the standard http.Handler interface.
Is it production-ready?
Treat them like any dependency: read the docs, run the tests, and pin your versions. Every package ships tests and CI enforces build + vet + test. The libraries prioritise faithful behaviour and a small, auditable codebase.
Where are the full API docs?
Each repository publishes a generated API reference on GitHub Pages (linked in every library tab here). The generator is a dependency-free go/doc tool committed in each repo under docs/gen.
How do I install a specific version?
Every library publishes semver releases automatically — the live version badge on each tab (and the home cards) reads the latest tag straight from GitHub. Pin to one with a version suffix, e.g. go get github.com/malcolmston/express@v0.1.0, or track the moving stable tag with @stable. Plain @latest always resolves to the newest release.
FAQ