A mature, well-documented flagship router with excellent docs but a monorepo structure that demands careful setup — solid for maintainers, steep for first-time newcomers.
last scored 2026-06-15
Readiness lenses
The same repo, two ways: how ready it is for an AI coding agent, and for a human newcomer. Switch lenses to see each one's score and checks.
How ready the repo is for an AI coding agent to read, build, and operate it.
24 of 35 checks passed across 6 categories.
Machine Orientation
5 checks passed3 problems found
- lowllms.txt present
An llms.txt is the emerging machine-orientation standard — a curated map for LLMs.
Fix: Add an llms.txt pointing at the key docs and entry points.
- lowTopics set
GitHub topics situate the repo's domain and stack for an agent at a glance.
Fix: Add a few GitHub topics describing the domain and stack.
- lowArchitecture doc
An ARCHITECTURE doc hands an agent the module map instead of making it infer one.
Fix: Add an ARCHITECTURE.md describing the major components and how they fit.
- README present — An agent reconstructs what the repo is and how to work in it from the README first.
- Agent instructions file — AGENTS.md / CLAUDE.md is the direct, machine-read channel for entry points and conventions.
- Agent instructions stay lean — A bloated instructions file burns context and measurably hurts more than it helps.
- Repository description set — The one-line description is the fastest orientation signal an agent reads.
- Contribution conventions are written down — A contributor guide is where an agent learns the branch, commit, and review conventions it must follow.
Reproducible Setup
3 checks passed3 problems found
- mediumContainer or dev-container
A Dockerfile / compose / devcontainer removes 'works on my machine' from setup.
Fix: Add a Dockerfile, a compose file, or a .devcontainer so the environment is declared, not assumed.
- lowEnv template present
A .env.example tells an agent which configuration keys it must supply to run.
Fix: Ship a .env.example listing every required key with placeholder values.
- lowDev container
A .devcontainer gives an agent a one-command, fully-declared environment.
Fix: Add a .devcontainer so the toolchain is declared, not assumed.
- Lockfile committed — Without a lockfile two clones can resolve different dependency trees — the build isn't reproducible.
- Runtime / toolchain pinned — An unpinned runtime makes an agent guess the version a clean environment needs.
- Version pins are exact — A floating pin (a bare major, or a range) still drifts between installs.
Code Navigability
1 check passed1 problem found
- lowTypeScript strict mode on
Strict typing gives an agent typed signatures to anchor an edit on, not guesses.
Fix: Turn on `strict` in tsconfig.json.
- Conventional source layout — A recognised src/ · lib/ · app/ layout lets an agent localise code without spelunking.
Verification Surface
6 checks passed1 problem found
- lowTask runner present
A Makefile / Taskfile / justfile gives an agent a single index of the project's commands.
Fix: Add a Makefile / Taskfile / justfile collecting the common commands.
- Tests present — Runnable tests are the ground truth an agent checks its own edits against.
- Test command defined — A `test` script is the documented, discoverable way to run the suite.
- Lint command defined — A linter an agent can run catches a class of mistakes before they ship.
- CI configured — Readable CI is the feedback loop an agent reads to know what 'green' means here.
- Typecheck command — A typecheck script lets an agent catch type errors before they ship.
- Build command — A documented build command is the discoverable way for an agent to produce artifacts.
Agent Safety
6 checks passed2 problems found
- medium.gitignore covers env files
An ignore rule for .env is what keeps the next careless commit from leaking secrets.
Fix: Add `.env` (and `.env.*`) to .gitignore.
- lowCODEOWNERS present
CODEOWNERS marks the 'don't touch without review' zones an agent should respect.
Fix: Add a CODEOWNERS file marking the sensitive paths.
- No committed .env — A tracked real .env hands secrets to anything — including an agent — that reads the repo.
- No exposed secrets — Secret-shaped literals in tracked files are a live credential leak.
- Automated dependency updates — Dependabot / Renovate keeps dependencies patched without a human in the loop.
- .gitignore present — A .gitignore is the first guard against an agent committing secrets or build junk.
- Security policy — A SECURITY.md is where an autonomous security agent reads this repo's rules before acting on it.
- License makes the code reusable — Without a license an agent cannot safely copy, redistribute, or vendor any of this code.
Context Economy
3 checks passed1 problem found
- lowGenerated / vendored files marked
A .gitattributes linguist marker tells tools (and agents) what to skip.
Fix: Mark generated/vendored paths in .gitattributes (linguist-generated / linguist-vendored).
- Dependencies not vendored in — A committed node_modules / vendor tree drowns the real signal an agent needs.
- Build output not committed — Generated dist/ · build/ output is noise an agent has to read past.
- No oversized source file — A single file in the hundreds of KB blows past an agent's effective context window.
How ready the repo is for a human newcomer to understand, set up, and contribute.
82 / 10018 of 25 checks passed across 6 categories.
First Impression
88Clear purpose and link to external docs, but the README is minimal and doesn't demo the thing newcomers actually want to see.
The README immediately establishes what React Router is ('multi-strategy router for React') and links to Getting Started guides and a homepage. However, it lacks a compelling code example or quick-start snippet that shows what routing looks like in practice. A newcomer seeing only badges, package names, and upgrade links won't know if this is the right tool without leaving the repo.
Getting Running
65Build commands are present but prerequisites, install steps, and dev setup are scattered across multiple files and external docs — not self-contained.
The package.json shows `pnpm` v9.10.0 is required (.npmrc + .nvmrc pinned), and `npm run build` works, but the root README doesn't explain how to clone, install, or run the monorepo. A newcomer must hunt through DEVELOPMENT.md and package READMEs to discover what `pnpm install && pnpm build` does or which packages are importable. No quick 'get a demo running' path.
Finding Your Way
84Excellent structure: 6 clearly named core packages, extensive API docs, and decision logs — but file tree is deep and module boundaries require reading multiple docs.
The README lists packages (react-router, @react-router/dev, etc.) with links to their folders; the decisions/ folder provides reasoning for major architectural choices. However, newcomers navigating how a route flows from browser to server, or where to find the core data-loading logic, would need to cross-reference docs rather than seeing it in one architecture diagram or overview in the root README.
Path to Contribute
75CONTRIBUTING.md delegates to external docs, and while issue templates and governance exist, there's no beginner-friendly onramp or labeled starter issues visible.
CONTRIBUTING.md merely points to docs/community/contributing.md (not shown in snapshot, so can't verify content). Issue templates (bug_report, documentation) are present, and .agents/ skills suggest automation for common tasks (fix-bug, implement-rfc), but no 'good first issue' labels or explicit dev workflow (run tests, submit PR) in the repo itself. A newcomer would struggle to know what 'good' looks like.
Signs of Life
90Very active: 56K stars, recent push (June 2026), robust CI/CD with multiple workflows, and 132 open issues suggest a maintained, well-staffed project.
The repository shows extensive GitHub Actions workflows (test, release, integration, preview, etc.), a CHANGELOG, and active development. The Remix backing and large star count indicate strong adoption and investment. However, without seeing PR/issue response times or contributor activity in the snapshot, this score reflects healthy signals (workflows, versioning, updates) rather than direct evidence of team responsiveness.
Open Door
88MIT license, CODE_OF_CONDUCT, security policy, and governance are all present — legally and socially sound, though help channels aren't obvious in the README.
The repository has LICENSE.md (MIT), CODE_OF_CONDUCT.md, SECURITY.md, and GOVERNANCE.md, establishing legal clarity and community norms. However, the README doesn't link to a discussion forum, Discord, or GitHub Discussions for newcomers stuck on setup. The CLAUDE.md and AGENTS.md files suggest sophisticated tooling but no human help contact in the root README.
First Impression
2 checks passed1 problem found
- lowTopics set
Topics situate the project's domain at a glance and help a newcomer find it.
Fix: Add a few GitHub topics describing the domain and stack.
- README present — The README is the first screen — with none, a newcomer has nothing to land on.
- Repository description set — The one-line description sets expectations before a newcomer even opens the README.
Getting Running
3 checks passed3 problems found
- mediumOne-command environment
A Dockerfile / compose / devcontainer turns a fiddly setup into one command.
Fix: Add a Dockerfile, a compose file, or a .devcontainer for a one-command setup.
- lowEnv template present
A .env.example shows a newcomer exactly which settings they must fill in to run it.
Fix: Ship a .env.example listing every required key with placeholder values.
- lowOne-click dev container
A .devcontainer lets a newcomer start in a cloud IDE with zero local setup.
Fix: Add a .devcontainer for a one-click, batteries-included environment.
- Lockfile committed — Without a lockfile a newcomer's install resolves differently and hits errors the docs don't mention.
- Prerequisite versions pinned — Unpinned prerequisites are the classic 'works on my machine' first-run failure.
- Versions pinned exactly — A floating version still drifts — a newcomer can hit a break the maintainer never saw.
Finding Your Way
2 checks passed1 problem found
- mediumArchitecture / overview doc
An overview hands a newcomer the map instead of making them reconstruct it.
Fix: Add an ARCHITECTURE.md (or a 'Project layout' README section) naming the key directories.
- Conventional source layout — A familiar src/ · lib/ · app/ layout lets a newcomer guess where things live.
- No oversized source file — A single thousand-line file is a wall a newcomer bounces off.
Path to Contribute
4 checks passed2 problems found
- lowPull-request template
A PR template tells a first-time contributor what a good change includes.
Fix: Add a PULL_REQUEST_TEMPLATE.md.
- lowTask runner
A Makefile / Taskfile gives a contributor a single index of the project's commands.
Fix: Add a Makefile / Taskfile collecting the common dev commands.
- CONTRIBUTING guide — A CONTRIBUTING guide is the difference between a guessed and a guided first PR.
- Issue templates — Issue templates show a newcomer how to file something useful — and that contributions are welcome.
- Test command defined — A documented test command lets a contributor check their change before opening a PR.
- Lint command — A linter lets a first-time contributor catch style issues before review.
Signs of Life
3 checks passed0 problems found
- Tests present — A test suite signals a project that's cared for, not abandoned.
- CI configured — Green CI on every change tells a newcomer the project is actively kept working.
- Automated dependency updates — Dependabot / Renovate activity is a visible heartbeat of ongoing maintenance.
Open Door
4 checks passed0 problems found
- License present — With no license the project isn't legally reusable — the door is shut however friendly the README.
- License is a standard one — A non-standard or custom license is a legal question mark a newcomer won't resolve.
- Code of conduct — A code of conduct states the social ground rules that make it safe to step in.
- Security policy — A SECURITY.md tells a newcomer how to report a problem responsibly.
Where the grip slips
- highGetting Running+18 pts if fixed
No entry point for newcomers to set up and run the monorepo locally
Root README and CONTRIBUTING.md don't explain how to clone the repo, install dependencies, build packages, or run tests or playground. A newcomer must infer 'pnpm install && pnpm build' or read DEVELOPMENT.md (not shown but likely exists). This adds friction and makes it unclear what state they're in after clone.
Fix: Add a 'Development Setup' section to the README: (1) Node version (>=20 per engines), (2) 'pnpm install', (3) 'pnpm build', (4) 'pnpm test' to verify. Link to DEVELOPMENT.md for advanced tasks. Ensure the root README is the single source of truth for 'getting started as a contributor.'
- mediumFirst Impression+12 pts if fixed
README missing quick-start code example and setup instructions
The README lists packages and links to external docs but shows no working code snippet (e.g., 'npm install react-router-dom' + a simple routing example). A newcomer doesn't see what they're building with, only badges and links. This forces them to leave the repo to understand the library.
Fix: Add a 'Quick Start' section to README with a minimal working example (e.g., a 3-component app using Routes/Route) and a copy-paste install + dev command (e.g., 'pnpm install && pnpm build' for the monorepo or 'npm install react-router-dom' for users).
- mediumPath To Contribute+10 pts if fixed
CONTRIBUTING.md is a dead-end stub
CONTRIBUTING.md only says 'Please see [our guide to contributing](docs/community/contributing.md).' This works if docs exist, but the snapshot doesn't show that file, and it forces a second click instead of answering common questions (how to run tests, submit a PR, naming conventions) in the repo root.
Fix: Expand CONTRIBUTING.md to include: (1) local dev setup (pnpm install && pnpm build), (2) how to run tests (pnpm test), (3) PR process (branch, commit conventions, PR template), (4) code style (prettier, eslint via npm scripts), (5) link to docs for detailed guidance. Make it self-contained for the first 80% of contributors.
- lowPath To Contribute+8 pts if fixed
No visible beginner-friendly issues or contributor labels
The snapshot lists 132 open issues but doesn't show labels like 'good-first-issue' or 'help-wanted' in the issue templates. This makes it impossible for a newcomer to find a safe, low-stake entry point to contribute without asking a maintainer.
Fix: Label issues with 'good-first-issue' for scope-bounded, well-documented tasks suitable for newcomers. Update CONTRIBUTING.md to link to these labels and describe what makes a task beginner-friendly (scope, tests, no architecture deep-dives). This is a GitHub triage task, not a code change.
- mediumFinding Your Way+8 pts if fixed
Architecture overview missing from README; monorepo structure not explained upfront
The README lists 6 packages with one-liners but doesn't explain the architecture: e.g., when would a user import from 'react-router' vs. '@react-router/node'? Why are there framework vs. library flavors? A newcomer sees a list of packages but not the decision tree or use cases.
Fix: Add an 'Architecture' or 'Which Package?' section to README: e.g., 'Use react-router-dom for browser-only SPAs, @react-router/dev for full-stack framework, @react-router/node for Node servers.' Link to docs/explanation for deeper dives. This turns a package list into a navigation guide.
- lowOpen Door+6 pts if fixed
README doesn't link to help channels (Discord, Discussions, Q&A)
The README links to Getting Started and external docs, but not to where newcomers should ask questions when stuck (GitHub Discussions, Discord, Stack Overflow, etc.). Newcomers are left guessing whether to file an issue or find a forum.
Fix: Add a 'Help & Community' section at the end of README: e.g., 'Have questions? Check the [docs](https://reactrouter.com), ask in [GitHub Discussions](link), or join our [Discord](link).' Even a simple note ('File an issue for bugs, use GitHub Discussions for questions') removes ambiguity.
Show your score
[](https://latch.fyi/remix-run/react-router)Share this analysis
https://latch.fyi/remix-run/react-routerFixed some issues? Re-analyze to measure your progress →
Copy the whole report
Grab the entire verdict in one go — a Markdown block for a README or an issue, plain text, or a prompt you can paste straight into an LLM.