What Remix Does
- Nested routing — file-based with nested layouts
- Server loaders — data fetched on server before render
- Actions — form POST handlers (works without JS)
- Forms —
<Form>component with native HTML semantics - Error boundaries — per-route error handling
- Optimistic UI — via
useFetcher - Edge deploy — Vercel, Cloudflare, Deno, Node
Architecture
File-system routing in app/routes/. Each route exports loader (server data), action (mutations), and default component (UI). Remix streams server responses and hydrates progressively. No client-side data fetching needed for initial render.
Self-Hosting
npm run build
npm start
# Docker
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["npm", "start"]Key Features
- Native Web Fetch API (Request/Response)
- Nested routes with layouts
- Server loaders & actions
- Progressive enhancement (forms work without JS)
- Streaming SSR with Suspense
- Multi-adapter deploy (Node/Deno/Cloudflare/Vercel)
- Automatic JS bundling per route
Comparison
| Framework | Routing | Data Fetching | SSR |
|---|---|---|---|
| Remix | Nested file-based | loader/action | Streaming |
| Next.js | App Router / Pages | Server Components / getSSP | Streaming |
| SvelteKit | File-based | load function | Streaming |
| Nuxt | File-based | useFetch | Streaming |
常见问题 FAQ
Q: Remix 和 Next.js 选哪个? A: 追求 Web 标准(Request/Response、Form)选 Remix;生态和 RSC 选 Next。2024 后 Remix v3 已合并到 React Router v7。
Q: 支持静态生成吗? A: 主要是 SSR,但可以用 prerender 插件做 SSG。
Q: 可以不用 JS 工作吗? A: 可以。Form + loader/action 原生支持无 JS fallback。
来源与致谢 Sources
- Docs: https://remix.run
- GitHub: https://github.com/remix-run/remix
- License: MIT