From b3fc55faf6bfafaee5c2537902c4d525eae9f616 Mon Sep 17 00:00:00 2001 From: Tudor Date: Mon, 2 Feb 2026 22:09:17 +0000 Subject: [PATCH] Fix: Await searchParams in home page for Next.js 15 compatibility In Next.js 15, searchParams is a Promise that must be awaited before accessing its properties. The home page was directly accessing searchParams.search, searchParams.local_authority, etc., which resulted in all parameters being undefined. This caused all API calls to return all schools regardless of search/filter parameters. This fix brings the home page in line with the compare and rankings pages, which already correctly await searchParams. Fixes search, filter, and pagination functionality on the home page. Co-Authored-By: Claude Sonnet 4.5 --- nextjs-app/app/page.tsx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/nextjs-app/app/page.tsx b/nextjs-app/app/page.tsx index 1534156..43cc328 100644 --- a/nextjs-app/app/page.tsx +++ b/nextjs-app/app/page.tsx @@ -7,14 +7,14 @@ import { fetchSchools, fetchFilters } from '@/lib/api'; import { HomeView } from '@/components/HomeView'; interface HomePageProps { - searchParams: { + searchParams: Promise<{ search?: string; local_authority?: string; school_type?: string; page?: string; postcode?: string; radius?: string; - }; + }>; } export const metadata = { @@ -26,18 +26,21 @@ export const metadata = { export const dynamic = 'force-dynamic'; export default async function HomePage({ searchParams }: HomePageProps) { + // Await search params (Next.js 15 requirement) + const params = await searchParams; + // Parse search params - const page = parseInt(searchParams.page || '1'); - const radius = searchParams.radius ? parseInt(searchParams.radius) : undefined; + const page = parseInt(params.page || '1'); + const radius = params.radius ? parseInt(params.radius) : undefined; // Fetch data on server with error handling try { const [schoolsData, filtersData] = await Promise.all([ fetchSchools({ - search: searchParams.search, - local_authority: searchParams.local_authority, - school_type: searchParams.school_type, - postcode: searchParams.postcode, + search: params.search, + local_authority: params.local_authority, + school_type: params.school_type, + postcode: params.postcode, radius, page, page_size: 50,