# React Router Template Dep Bump

> Update pinned react-router and @react-router package versions in the remix-run/react-router-templates repo, refresh the pnpm lockfile, and verify with the Playwright suite in .tests.

- Skill: `remix-run/react-router-template-dep-bump` (Agent Skill)
- Install (CLI): `npx skillmds@latest add remix-run/react-router-template-dep-bump`
- Raw SKILL.md: https://api.skillmd.com/api/skills/remix-run/react-router-template-dep-bump/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: remix-run (https://skillmd.com/u/remix-run)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/remix-run/react-router-template-dep-bump

---


# React Router Template Dep Bump

Use this when updating React Router dependencies in `react-router-templates`.

Run these commands from the repo root.

## 1. Confirm the current pins

```sh
rg -n '(@react-router/[^@\" ]+@|react-router@|"(?:react-router|@react-router/[^"]+)"\s*:)' . \
  --glob '!**/node_modules/**' \
  --glob '!pnpm-lock.yaml' \
  --glob '!deno.lock'
```

This repo has both Node and Deno templates. Do not limit the search to
`package.json` files: the Deno template pins React Router packages in
`deno/deno.jsonc`, including both task commands such as
`deno run -A npm:@react-router/dev@x.y.z ...` and import-map entries such as
`"react-router": "npm:react-router@x.y.z"`.

## 2. Resolve the latest published React Router versions

```sh
pnpm view react-router version
pnpm view <currently-used-@react-router-package> version
```

Run the second command once for each `@react-router/*` package currently used
in the template pins from step 1. Use the shared latest version across that
family when they match.

## 3. Update the pinned versions in every affected template

Update all matching pins for `react-router` and every currently used
`@react-router/*` dependency:

- `package.json` entries in Node-based templates
- `deno/deno.jsonc` task command pins and import-map entries

Check the touched files with:

```sh
git diff --name-only
```

## 4. Refresh the lockfile

```sh
pnpm install
```

If `deno/deno.jsonc` changed, also refresh Deno's local install/lock metadata:

```sh
deno install
```

`deno/deno.lock` is intentionally untracked in this repo. Do not add it unless
the repository starts tracking it separately.

## 5. Run the Playwright tests

Install the browser if needed:

```sh
pnpm --dir .tests playwright install chromium
```

Then run the suite:

```sh
pnpm --dir .tests test
```

If Chromium fails to launch with a macOS sandbox error like `MachPortRendezvousServer ... Permission denied`, rerun the same test command outside the sandbox or with elevated permissions.

## 6. Sanity check the diff

```sh
git status --short
git diff --stat
```

Expected result:
- template `package.json` files and `deno/deno.jsonc` updated to one React
  Router version
- `pnpm-lock.yaml` refreshed
- `deno/deno.lock` not added unless it was already tracked
- `pnpm --dir .tests test` passes

## 7. Report other outdated packages

After the React Router bump is complete and tests pass, run:

```sh
pnpm outdated -r --format json
```

Reply with the remaining outdated packages grouped by update type:
- major
- minor
- patch

Then ask whether the user wants to update any of those packages next.

