Next/13/Replace Next Router
Since Next.js 13.4, you can use the following hooks from the next/navigation
module:
useRouter
,useSearchParams
,usePathname
,useParams
.
These hooks replace the functionality available in the useRouter
hook in the next/hook
module, however, the behavior is distinct.
This codemod allows you to migrate the useRouter
hook to the new useRouter
hook imported from next/navigation
. This includes all usages of the useRouter
hook which may be replaced with useSearchParams
and usePathname
.
Example
Before
import { useRouter } from 'next/router';function Component() {const { query } = useRouter();const { a, b, c } = query;}
After
import { useParams, useSearchParams } from 'next/navigation';import { useCallback } from 'react';function Component() {const params = useParams();const searchParams = useSearchParams();const getParam = useCallback((p: string) => params?.[p] ?? searchParams?.get(p),[params, searchParams],);const a = getParam('a');const b = getParam('b');const c = getParam('c');}
Build custom codemods
Use AI-powered codemod studio and automate undifferentiated tasks for yourself, colleagues or the community