
Research
Supply Chain Attack on Axios Pulls Malicious Dependency from npm
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.
react-router-typing
Advanced tools
react-router-typing is a helper library that makes react-router navigation type-safe. It allows type-safe routing using react-router's standard routing declarations.
react-router-typing uses the plain object-based routing of createBrowserRouter and requires react-router@6.4.0 or higher.
$ yarn add react-router-typing 'react-router-dom@^6.4.0'
The setting method differs depending on the version of TypeScript.
If the TypeScript used in your project is 4.9 or higher, use satisfies.
+import { AsRouteConfig, IRoutes, asBrowserRouter } from 'react-router-typing'
const routes = [
{
path: "/",
element: <HomePage />,
},
{
path: "/example",
element: <ExamplePage />,
},
{
path: "/nests",
element: (
<NestListPage />
),
children: [
{
path: ":nestId",
element: (
<NestDetailPage />
),
},
],
},
-]
+] as const satisfies IRoutes
+export type RouteConfig = AsRouteConfig<typeof routes>
-const router = createBrowserRouter(routes)
+const router = createBrowserRouter(asBrowserRouter(routes))
Place type-safe navigational utilities on any path.
import { generateUtils } from "react-router-typing"
import type { RouteConfig } from "./path/to/your-router-config"
export const { pagePath, pageMatch } = generateUtils<RouteConfig>()
+import { AsRouteConfig, IRoutes, asBrowserRouter, defineRoutes } from 'react-router-typing'
const routes = defineRoutes([
{
path: "/",
element: <HomePage />,
},
{
path: "/example",
element: <ExamplePage />,
},
{
path: "/nests",
element: (
<NestListPage />
),
children: [
{
path: ":nestId",
element: (
<NestDetailPage />
),
},
],
},
-]
+])
+export type RouteConfig = AsRouteConfig<typeof routes>
-const router = createBrowserRouter(routes)
+const router = createBrowserRouter(asBrowserRouter(routes))
For utilities, please refer to the settings in TS 4.9.
react-router uses a useNavigate hook and a Link component for navigation. The pagePath function can be used to specify a type-safe path to the destination.
export const Sample: React.FC = () => {
const navigate = useNavigate()
useEffect(() => {
if (Math.random() > 0.5) {
navigate(pagePath("/nests/:nestId", { nestId: "20" }))
}
}, [])
return <Link to={pagePath("/nests/:nestId", { nestId: "20" })}>Move</Link>
}
Specifying a non-existent path will result in a type error and input completion will work.

The react-router can accept a matched path parameter using the useMatch hook, which can be type-safe by specifying it with the pageMatch function, and can also be used with the
export const Sample: React.FC = () => {
const match = useMatch(pageMatch("/nests/:nestId"))
// :PathMatch<"nestId"> | null
return null
}
That's all for the configuration and the API provided by this library. The entire configuration can be seen in the example.
Welcome.
FAQs
Helper library to make React Router navigation type-safe
We found that react-router-typing demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.

Security News
TeamPCP is partnering with ransomware group Vect to turn open source supply chain attacks on tools like Trivy and LiteLLM into large-scale ransomware operations.