CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

remix-run/remix

Scanned commit 27bd7a4401 dated 2026-10-01 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/remix-run/remix ↗ · 2509 files · 12.7 MB

Welcome to Remix 3! This is the source repository for Remix 3.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (510s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

Remix 3 is a full-stack TypeScript framework assembled from focused packages and distributed through the generated `remix` umbrella package. It connects typed Fetch routing, middleware, streaming server rendering, browser hydration, asset compilation, authentication, persistence, and testing through Web APIs. This brief investigates commit 27bd7a4401594ec1acbe30ee3937518832270a30 through public tracked source; its inventory is bounded, and tests and CI were inspected, not executed.

System map

The repository separates portable framework packages from Node tooling, browser runtime code, example applications, and documentation generators. The `remix` distribution is generated from a canonical alias manifest rather than maintained as an independent implementation. The inspected application template starts a Node HTTP server, but routing and rendering boundaries use Web requests, responses, and streams. Storage is selected through interfaces and adapters rather than one repository-wide database.

Feature catalog

The primary users are application developers consuming framework APIs and CLI commands. Features include routing, server and browser UI, assets, authentication, database management, storage, and testing. The bookstore and social-auth applications expose concrete examples of these capabilities. This catalog covers inspected public surfaces and documented package families; it is not an exhaustive enumeration of every export or demo screen.

Data flow

HTTP input becomes a Web Request and request context before middleware and route dispatch. Component output becomes a byte stream carrying HTML and client-entry metadata, which the browser uses to activate components and frames. OAuth data crosses a session-backed redirect boundary before application-owned identity persistence. CLI inputs and configuration follow separate Node filesystem and process boundaries.

Behavior traces

The investigation followed three concrete flows across implementation boundaries: scaffolding, template startup/rendering/hydration, and external login with persistence. Additional traces explain frame reloads and asset inspection. These are ordered source walkthroughs, not observed executions. Failure branches are included where they materially change the result.

Testing signals

Tests and CI were inspected, not executed; no passing result or measured coverage is asserted. The sampled packages use the repository's own test framework with Playwright integration rather than establishing Vitest as the main runner. Source tests cover routing aborts, cookie defaults, asset policies/cache behavior, frame requests, and a fake-provider OAuth flow. Browser projects and integration job filters limit which environments a configured run exercises, and this inspection does not establish exhaustive coverage.

All 14 testing signals claims →

Risk map

The inspected security-sensitive boundaries include proxy-derived URLs, browser-accessible source, raw HTML, OAuth/session state, filesystem writes, and subprocess module loading. Several protections are explicit, including signed-session requirements, callback state checks, return-path normalization, and header reduction for cross-origin frames. Backend limitations and application configuration remain important to the security model. These are source observations and labeled hypotheses, not confirmed vulnerabilities or a complete security audit.

All 15 risk map claims →

Extension points

Composition is the main extension mechanism: factories, middleware, route installers, renderers, provider runtimes, and storage interfaces connect focused modules. The umbrella alias manifest controls public distribution wiring. CLI features use explicit command dispatch and structured JSON configuration. Browser extension hooks carry their own trust responsibilities.

Contributor handoff

Read the owning package and its actual runtime boundaries before editing generated surfaces or application examples. Tests and CI were inspected, not executed, and this bounded source investigation supplies no passing baseline. The requested environment-file entrypoint was intentionally not read under the user's prohibition on environment files and secrets. Future implementation work should preserve package boundaries, generated wiring, source-run tests, and public API documentation.

All 14 contributor handoff claims →

Languages

LanguageFilesShare of source
TypeScript170695%
JSON279docs/config
Markdown276docs/config
JavaScript855%
YAML31docs/config
CSS14docs/config
HTML13docs/config
SQL90%

Start reading here

Probable source entrypoint: packages/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

packages/ (1700 files)

Repository structure

Top-level pathFiles
packages/1700
demos/418
docs/242
scripts/50
.agents/33
.github/26
template/17
decisions/6

Docs found: AGENTS.mdCLAUDE.mdCONTRIBUTING.mdREADME.mddocs/api/README.mddocs/guides/README.mddocs/guides/app/actions/docs/chapters/01-start-here.mddocs/guides/app/actions/docs/chapters/02-routing-and-controllers.mddocs/guides/app/actions/docs/chapters/03-request-handling.mddocs/guides/app/actions/docs/chapters/04-rendering-ui.md

Package

package.json — remix-the-web, 7 declared dependencies.

@oxlint/pluginsoxc-parseroxfmtoxlintoxlint-tsgolintremixtypescript

CI & config entrypoints

Structural health signals

Average score 7.1/10 across 96 analyzed source files; 28 hotspots surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history