From 3f269ab0bd62ec2a60c31fd6437665a079433940 Mon Sep 17 00:00:00 2001 From: xcqtnr Date: Sun, 1 Feb 2026 21:54:26 +0530 Subject: [PATCH] fix: prevent infinite loading loop on skills pageAdd isLoadingMore guard to IntersectionObserver useEffect to preventcontinuous WebSocket queries when user is idle at bottom of page.The observer now won't set up while a request is in progress, breakingthe infinite loop cycle.Fixes: Related to #89 --- src/routes/skills/index.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/skills/index.tsx b/src/routes/skills/index.tsx index bf0a2a6..c6f3f65 100644 --- a/src/routes/skills/index.tsx +++ b/src/routes/skills/index.tsx @@ -205,7 +205,8 @@ export function SkillsIndex() { }, [canLoadMore, hasQuery, isLoadingMore, loadMorePaginated]) useEffect(() => { - if (!canLoadMore || typeof IntersectionObserver === 'undefined') return + // Don't set up observer while loading to prevent infinite request loop + if (!canLoadMore || isLoadingMore || typeof IntersectionObserver === 'undefined') return const target = loadMoreRef.current if (!target) return const observer = new IntersectionObserver( @@ -218,7 +219,7 @@ export function SkillsIndex() { ) observer.observe(target) return () => observer.disconnect() - }, [canLoadMore, loadMore]) + }, [canLoadMore, isLoadingMore, loadMore]) return (