This repository is a collection of packages for use with Remix or any web framework you choose.
Each package in this repository has a single responsibility; it does one thing well.
To maximize interoperability between packages, we build on web standards. Where standards are missing or incomplete, we augment them in unobtrusive ways to minimize the chance of incompatibility.
What exactly we mean by "web standards"? It means we use:
- The Web Streams API instead of Node.js streams
Uint8Array
instead of Node.jsBuffer
s- The Web Crypto API instead of the Node.js crypto library
Blob
andFile
instead of some bespoke runtime-specific API
You get the idea. The benefit of writing JavaScript like this is that it's portable between various runtimes. Unless explicitly noted, all packages in this repository work on any JavaScript runtime you might be using: Node.js, Bun, Deno, Cloudflare Workers, etc.
The goal is that these packages should be useful for anyone who is building for the web. If you're using Remix, we've designed it from the start to work with web standards. If you're using some other framework, you should easily be able to integrate these tools into your workflow as well without going full-blown Remix. If you're building your own framework, we hope you'll be able to build on this foundation as well.
We currently publish the following packages:
- file-storage: Key/value storage for JavaScript
File
objects - form-data-parser: A
request.formData()
wrapper with streaming file upload handling - headers: A toolkit for working with HTTP headers in JavaScript
- lazy-file: Lazy, streaming
Blob
s andFile
s for JavaScript - multipart-parser: Fast, efficient parser for multipart streams
- node-fetch-server: Build HTTP servers for Node.js using the web fetch API
See LICENSE