From eab0b4a7e9808e9e0b0b9486836173e2a87cd3b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?= <35082514+alezmad@users.noreply.github.com> Date: Sat, 24 Jan 2026 13:14:23 +0000 Subject: [PATCH] Fix: Maximum update depth exceeded in NewScrapePage Wrap handleJobsChange in useCallback to prevent infinite re-renders caused by onJobsChange dependency changing on every render. Co-Authored-By: Claude Opus 4.5 --- web/app/new/page.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/web/app/new/page.tsx b/web/app/new/page.tsx index 87f1303..63f648d 100644 --- a/web/app/new/page.tsx +++ b/web/app/new/page.tsx @@ -1,18 +1,19 @@ 'use client'; import { useRouter } from 'next/navigation'; +import { useCallback } from 'react'; import ScraperTest from '@/components/ScraperTest'; import { useJobs } from '@/contexts/JobsContext'; import { JobStatus } from '@/components/ScraperTest'; export default function NewScrapePage() { const router = useRouter(); - const { addJob, refreshJobs } = useJobs(); + const { addJob } = useJobs(); - const handleJobsChange = (jobs: JobStatus[]) => { - // Add new jobs to context + const handleJobsChange = useCallback((jobs: JobStatus[]) => { + // Add new jobs to context (addJob handles deduplication) jobs.forEach(job => addJob(job)); - }; + }, [addJob]); const handleSelectReviews = (reviews: unknown[], businessName: string, jobId: string) => { // Navigate to analytics page for this job