What is Remix?
Remix is a full-stack JavaScript web framework built entirely on web standards. It gives you everything you need to build a complete web application --- from handling incoming requests to rendering pages, querying databases, authenticating users, and more --- all in one cohesive toolkit.
Remix V3 is a complete rewrite designed for the modern web. It is currently in alpha, and this documentation covers the V3 release.
What is a "web framework"?
When you build a website, you need to handle a lot of tasks: figuring out which page to show based on the URL, reading data from a database, checking if a user is logged in, sending back HTML, handling form submissions, and so on. A web framework is a collection of tools and patterns that handles these common tasks for you, so you can focus on building your actual application instead of reinventing the wheel every time.
A Taste of Remix
Here is the smallest possible Remix application --- a server that responds with "Hello, world!" when you visit it in your browser:
import * as http from 'node:http'
import { createRequestListener } from 'remix/node-fetch-server'
import { createRouter } from 'remix/fetch-router'
let router = createRouter()
router.get('/', () => new Response('Hello, world!'))
let server = http.createServer(createRequestListener(router.fetch))
server.listen(3000, () => console.log('http://localhost:3000'))Even in this tiny example, you can see some of Remix's core ideas at work:
createRoutersets up routing --- the system that decides what code runs for each URL. Here,router.get('/')says "when someone visits the home page, run this function."new Responseis a standard Web API, not something Remix invented. Remix builds on the same APIs that browsers use natively.createRequestListenerbridges Remix's standard web interface to Node.js's built-in HTTP server, so your code works with the tools you already have.
What You Get
Remix is organized as a monorepo of 40 composable packages distributed together as a single remix package. You install one thing and get access to everything:
- Routing --- Define URL patterns and map them to handler functions. Supports dynamic segments (like
/users/:id), nested routes, and full TypeScript type safety. - Components and JSX --- Build HTML responses using JSX, a syntax that lets you write HTML-like code inside JavaScript. Remix includes its own lightweight component system --- no external UI library required.
- Database Toolkit --- A typed query builder for PostgreSQL, MySQL, and SQLite. Define your tables, run queries, and manage migrations with a single API.
- Authentication --- Built-in support for OAuth, OpenID Connect, and username/password login, with providers for Google, GitHub, Microsoft, and more.
- Sessions --- Store per-user data (like "is this person logged in?") across requests using cookies, Redis, Memcache, or your own storage.
- Middleware --- Small, composable functions that run before your route handlers. Use them for logging, authentication checks, CORS headers, compression, and more.
- File Handling --- Upload, parse, and store files. Includes support for multipart form data, S3-compatible storage, and lazy streaming for large files.
- Validation --- Parse and validate incoming data from forms, URL parameters, and JSON request bodies with clear error messages.
- Testing --- A built-in test runner and assertion library designed to work without any bundler or compiler step.
Runs Everywhere
Because Remix is built on web-standard APIs (like the Fetch API, Web Streams, and Web Crypto), it runs on any JavaScript runtime:
- Node.js --- The most popular server-side JavaScript runtime.
- Bun --- A fast, all-in-one JavaScript runtime and toolkit.
- Deno --- A secure runtime with built-in TypeScript support.
- Cloudflare Workers --- Run your code at the edge, close to your users, on Cloudflare's global network.
You write your code once, and it works across all of these platforms without changes.
Current Status
Alpha Software
Remix V3 is currently in alpha. APIs may change between releases, and some features are still being built. It is suitable for experimentation and side projects, but you should expect breaking changes before the stable release.
Next Steps
- Philosophy --- Understand the design principles behind Remix and why it's built the way it is.
- Why Remix? --- See how Remix compares to other approaches and why you might choose it.
- Getting Started --- Install Remix and build your first application.