# Extension points — remix-run/react-router

> Canonical page: https://codevetter.com/unpack/react-router/extension-points

# Extension points — 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.

Extension seams exist at route configuration, data execution, context injection, observability, persistence, and platform adaptation. Framework route exports provide a convention-based interface, while Data mode exposes explicit constructor options. Filesystem routing is an adapter over route configuration rather than the only route discovery model. Most seams are typed factory inputs or exports rather than a single global plugin registry.
- Browser router options accept dataStrategy, patchRoutesOnNavigation, getContext, and instrumentations. — [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)
- createRouter wraps mapRouteProperties with instrumentation-derived updates and selects a custom data strategy or defaultDataStrategyWithMiddleware. — [packages/react-router/lib/router/router.ts#L1052-1073](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/router/router.ts#L1052-L1073) [packages/react-router/lib/router/router.ts#L1087-1100](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/router/router.ts#L1087-L1100)
- @react-router/dev/routes exports route, index, layout, prefix, relative, and getAppDirectory helpers. — [packages/react-router-dev/routes.ts#L1-10](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-dev/routes.ts#L1-L10)
- The routes.ts architecture accepts exported route configuration arrays and deliberately places filesystem conventions in a separate package. — [decisions/0011-routes-ts.md#L45-73](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/decisions/0011-routes-ts.md#L45-L73)
- flatRoutes converts a convention-generated route manifest into RouteConfigEntry objects and exposes directory and ignore options. — [packages/react-router-fs-routes/index.ts#L18-44](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-fs-routes/index.ts#L18-L44)
- SessionIdStorageStrategy supplies readData, updateData, and deleteData, while createSessionStorage also receives createData and cookie configuration. — [packages/react-router/lib/server-runtime/sessions.ts#L250-267](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/server-runtime/sessions.ts#L250-L267) [packages/react-router/lib/server-runtime/sessions.ts#L281-290](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/server-runtime/sessions.ts#L281-L290)
- Express getLoadContext can incorporate middleware-generated platform values before invoking the core handler. — [packages/react-router-express/server.ts#L15-26](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-express/server.ts#L15-L26) [packages/react-router-express/server.ts#L53-57](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-express/server.ts#L53-L57)
- Server entry modules can supply handleError, handler instrumentation, and handleDataRequest response customization. — [packages/react-router/lib/server-runtime/server.ts#L69-81](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/server-runtime/server.ts#L69-L81) [packages/react-router/lib/server-runtime/server.ts#L235-249](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/lib/server-runtime/server.ts#L235-L249)
- Framework route export lists explicitly distinguish server execution hooks from client data hooks and rendering components. — [packages/react-router-dev/vite/plugin.ts#L140-156](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-dev/vite/plugin.ts#L140-L156)
- RSC and Cloudflare integrations compose with ordinary Vite plugins at playground configuration entrypoints. — [playground/rsc-vite-7-framework/vite.config.ts#L8-18](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/playground/rsc-vite-7-framework/vite.config.ts#L8-L18) [playground/vite-plugin-cloudflare/vite.config.ts#L26-35](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/playground/vite-plugin-cloudflare/vite.config.ts#L26-L35)

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)
