# Contributor handoff — remix-run/react-router

> Canonical page: https://codevetter.com/unpack/react-router/agent-handoff

# Contributor handoff — remix-run/react-router

Scanned commit a6090382ed467b5a2d46c8de1a13b331f14959f8 (2026-09-30). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Use the pinned checkout and mode-specific source as the authority for future work. Tests and CI were inspected, not executed, and this inventory is bounded rather than exhaustive. Start edits at the runtime or tooling boundary responsible for the behavior, preserving generated artifacts and package conventions. Any future validation report must distinguish configured checks from commands actually run.
- Identify Declarative, Data, Framework, RSC Data, or RSC Framework scope before changing a feature. — [AGENTS.md#L15-33](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/AGENTS.md#L15-L33)
- For browser data behavior, first read createBrowserRouter, useSubmit, and startNavigation; they expose the constructor-to-request-to-state path. — [packages/react-router/lib/dom/lib.tsx#L647-664](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/dom/lib.tsx#L647-L664) [packages/react-router/lib/dom/lib.tsx#L2570-2615](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/dom/lib.tsx#L2570-L2615) [packages/react-router/lib/router/router.ts#L2029-2068](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/router/router.ts#L2029-L2068)
- For adapter work, inspect both platform conversion and the core runtime context check: initialContext must be a RouterContextProvider instance. — [packages/react-router-express/server.ts#L53-59](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-express/server.ts#L53-L59) [packages/react-router/lib/server-runtime/server.ts#L99-108](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/server-runtime/server.ts#L99-L108)
- Use the repository's Jest and Playwright scripts when execution is authorized; the inspected scripts and CI are configuration evidence, not passing results. — [package.json#L27-35](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/package.json#L27-L35) [.github/workflows/test-unit.yml#L58-71](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/.github/workflows/test-unit.yml#L58-L71) [.github/workflows/test-integration-run.yml#L50-58](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/.github/workflows/test-integration-run.yml#L50-L58)
- For fetcher mutations, preserve separate fetcher action data and page loaderData, including submitting/loading/idle transitions asserted in the inspected test. — [packages/react-router/__tests__/router/fetchers-test.ts#L275-303](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/__tests__/router/fetchers-test.ts#L275-L303)
- Generated API documentation and generated route types are not direct edit targets; modify JSDoc or generators instead. — [AGENTS.md#L107-113](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/AGENTS.md#L107-L113) [packages/react-router-dev/typegen/index.ts#L24-39](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-dev/typegen/index.ts#L24-L39)
- User-affecting changes require a package-local patch, minor, major, or unstable change file; existing unshipped change files should be updated rather than duplicated. — [AGENTS.md#L128-138](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/AGENTS.md#L128-L138)
- Do not assume older package requirements: this core manifest declares version 8.4.0, React peers >=19.2.7, and Node >=22.22.0. — [packages/react-router/package.json#L1-5](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/package.json#L1-L5) [packages/react-router/package.json#L112-119](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/package.json#L112-L119) [packages/react-router/package.json#L128-130](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/package.json#L128-L130)
- Preserve explicit client/server separation when editing framework transforms; the architecture decision requires server-export removal and errors for remaining .server imports. — [decisions/0010-splitting-up-client-and-server-code-in-vite.md#L77-90](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/decisions/0010-splitting-up-client-and-server-code-in-vite.md#L77-L90) [packages/react-router-dev/vite/plugin.ts#L2273-2284](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-dev/vite/plugin.ts#L2273-L2284)
- Choose mode-appropriate unit or integration validation, rebuild after package changes for integration work, and use Chromium unless explicitly directed otherwise. — [AGENTS.md#L46-82](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/AGENTS.md#L46-L82)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
