This is the source repository for Remix 3. It is under active development.
We published a blog post earlier this year with some of our thoughts around Remix 3. It explains our philosophy for web development and why we think the time is right for something new. When working on Remix 3, we follow these principles:
Model-First Development. AI fundamentally shifts the human-computer interaction model for both user experience and developer workflows. Optimize the source code, documentation, tooling, and abstractions for LLMs. Additionally, develop abstractions for applications to use models in the product itself, not just as a tool to develop it.
Build on Web APIs. Sharing abstractions across the stack greatly reduces the amount of context switching, both for humans and machines. Build on the foundation of Web APIs and JavaScript because it is the only full stack ecosystem.
Religiously Runtime. Designing for bundlers/compilers/typegen (and any pre-runtime static analysis) leads to poor API design that eventually pollutes the entire system. All packages must be designed with no expectation of static analysis and all tests must run without bundling. Because browsers are involved, --import loaders for simple transformations like TypeScript and JSX are permissible.
Avoid Dependencies. Dependencies lock you into somebody else's roadmap. Choose them wisely, wrap them completely, and expect to replace most of them with our own package eventually. The goal is zero.
Demand Composition. Abstractions should be single-purpose and replaceable. A composable abstraction is easy to add and remove from an existing program. Every package must be useful and documented independent of any other context. New features should first be attempted as a new package. If impossible, attempt to break up the existing package to make it more composable. However, tightly coupled modules that almost always change together in both directions should be moved to the same package.
Distribute Cohesively. Extremely composable ecosystems are difficult to learn and use. Remix will be distributed as a single remix package for both distribution and documentation.
Goals
Although we recommend the remix package for ease of use, all packages that make up Remix should be usable standalone as well. This forces us to consider package boundaries and helps us define public interfaces that are portable and interoperable.
Blob and File instead of some bespoke runtime-specific API
The benefit is code that's not just reusable, but future-proof.
Packages
Most packages in this repository are standalone JavaScript/TypeScript tools. The remix package composes them under one umbrella for distribution and documentation.
assert: Node assert-compatible utilities for any JavaScript environment
assets: Fetch-based server for compiling browser JS/TS and CSS assets on demand
static-middleware: Middleware for serving static files from the filesystem
tar-parser: A fast, efficient parser for tar streams in any JavaScript environment
terminal: Terminal output utilities for JavaScript libraries and CLIs
test: A test framework for JavaScript and TypeScript projects
ui: View layer with reconciler, component model, and first-party UI components
ui-hmr: Hot module replacement runtime and transforms for Remix UI components
Installation
To try the current Remix beta, install the next dist-tag:
npm install remix@next
To create a new Remix app with the CLI, use npx remix@next new:
npx remix@next new my-remix-app
If you want to play around with the bleeding edge, we also build the latest main branch into a preview/main branch which can be installed directly with pnpm (version 9+):
Agents that are starting a Remix 3 app from this repository should use the remix app skill. The CLI prepack step copies this skill into the app template so generated apps can use the same guidance.
Contributing
We welcome contributions! If you'd like to contribute, please feel free to open an issue or submit a pull request. See CONTRIBUTING for more information.
Что это?Remix 3 — полноценный фреймворк для разработки фронтенда и бэкенда, построенный непосредственно на Web API (Streams, Fetch, Web Crypto), а не на абстракциях, привязанных к конкретным сборщикам. Распространяется как один зонтичный пакет 'remix', который состоит из множества самостоятельных инструментов на JS/TS.
Это один пакет или набор отдельных инструментов?Это монорепозиторий из множества пакетов, каждый из которых решает одну задачу и может использоваться отдельно (router, auth, session, cli, data-table, ui и др.). Они объединены в основной пакет 'remix' для удобного распространения.
Как создать новое приложение Remix?Выполните 'npx remix@next new' через CLI, чтобы создать новое приложение Remix 3, или установите dist-tag 'next', чтобы попробовать текущую бета-версию. Самые свежие сборки ветки main также публикуются в ветку preview/main, которую можно установить с помощью pnpm 9+.
Работает ли это только на Node.js?Нет. Пакеты Remix 3 построены на серверных Web API, поэтому они без проблем работают в Node.js, Bun, Deno, Cloudflare Workers и других средах выполнения JS. Для разработки самого репозитория требуется Node >=24.3.0.
Готов ли Remix 3 к использованию в продакшене?Пока нет. Это только бета-версия, доступная через dist-tag 'next'. Она всё ещё активно разрабатывается, поэтому API могут измениться.
Что означает Model-First Development для этого фреймворка?Это один из ключевых принципов проектирования Remix 3: оптимизировать исходный код, документацию и инструменты для LLM и создавать абстракции, которые позволяют приложениям напрямую использовать модели ИИ внутри продукта, а не только как инструмент для разработчика.
Включает ли Remix 3 собственную библиотеку UI?Да. Пакет 'ui' — это собственный слой представления Remix с реконсилером, моделью компонентов и собственными UI-компонентами, созданный независимо от React.
Что такое Agent Skill 'remix app', упомянутый в README?Это Agent Skill, который ИИ-агенты для написания кода должны использовать при создании нового приложения Remix 3 из этого репозитория. Шаг prepack в CLI копирует его в генерируемые шаблоны приложений, чтобы созданные приложения получали те же рекомендации.
Почему Remix избегает сборщиков и внешних зависимостей?Этим управляют два руководящих принципа. 'Religiously Runtime' означает, что ни один пакет не должен полагаться на сборщики, компиляторы или статический анализ. 'Avoid Dependencies' стремится к нулю сторонних зависимостей и оборачивает в собственные обёртки всё, без чего не обойтись.