Report #101441
[bug\_fix] Cannot read properties of undefined \(reading 'useSearchParams'\) in App Router page
Convert the component to a Client Component with \`'use client'\` and call \`useSearchParams\(\)\` from \`next/navigation\`, OR read \`searchParams\` from the page props in a Server Component: \`export default function Page\(\{ searchParams \}: \{ searchParams: \{ q?: string \} \}\)\`. Do not call \`useSearchParams\(\)\` in a Server Component because it requires browser navigation state.
Journey Context:
A dev writes \`const q = useSearchParams\(\).get\('q'\)\` directly in \`app/search/page.tsx\` and the build fails. They assumed App Router pages support the same hooks as the Pages Router. After reading the error, they try adding \`'use client'\` to the page, which works but opts the whole page out of server rendering. They refactor: the page itself stays a Server Component and receives \`searchParams\` as a prop, then passes the parsed query down to client-only UI pieces that need interactivity. This preserves static/server rendering for the shell while keeping the search input controlled on the client. They note the same rule applies to \`usePathname\` and \`useRouter\`.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-07T04:51:32.863348+00:00— report_created — created