From 35ac544cbae0ea609bead01daf55fe550f38b72d Mon Sep 17 00:00:00 2001 From: Matthew Sigal Date: Wed, 15 Jul 2026 10:11:57 -0700 Subject: [PATCH 1/2] fix: add catch fallback to getRandomItems API query on home page load This prevents slow database scans from timing out and crashing the entire home page loading sequence. --- packages/app/src/views/Browse/Browse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/views/Browse/Browse.js b/packages/app/src/views/Browse/Browse.js index d689b5a9..40c92bef 100644 --- a/packages/app/src/views/Browse/Browse.js +++ b/packages/app/src/views/Browse/Browse.js @@ -940,7 +940,7 @@ const Browse = ({ api.getResumeItems(), api.getNextUp(), api.getUserConfiguration().catch(() => null), - api.getRandomItems(settings.featuredContentType, settings.featuredItemCount), + api.getRandomItems(settings.featuredContentType, settings.featuredItemCount).catch(() => null), settings.mergeContinueWatchingNextUp ? api.getItems({ IncludeItemTypes: 'Episode', Filters: 'IsPlayed', From 98a36f2a688f703183b2afff21fe68a8777e173d Mon Sep 17 00:00:00 2001 From: Matthew Sigal Date: Wed, 15 Jul 2026 10:21:19 -0700 Subject: [PATCH 2/2] fix: resolve rowNode.contains is not a function TypeError on blur in ModernMediaRow --- packages/app/src/components/MediaRow/ModernMediaRow.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/app/src/components/MediaRow/ModernMediaRow.js b/packages/app/src/components/MediaRow/ModernMediaRow.js index 760826d4..d6dd8b4f 100644 --- a/packages/app/src/components/MediaRow/ModernMediaRow.js +++ b/packages/app/src/components/MediaRow/ModernMediaRow.js @@ -38,7 +38,7 @@ const ModernMediaRow = ({ const keyPrefix = rowId || title || rowIndex || ''; useEffect(() => { - const el = rowElementRef.current; + const el = document.querySelector(`[data-row-index="${rowIndex}"]`) || rowElementRef.current; registerRowRef?.(rowIndex, el); return () => registerRowRef?.(rowIndex, null); }, [rowIndex, registerRowRef]); @@ -100,10 +100,10 @@ const ModernMediaRow = ({ const handleBlur = useCallback((e) => { const nextTarget = e.relatedTarget; - const rowNode = rowElementRef.current; - if (rowNode && nextTarget && rowNode.contains(nextTarget)) return; + const rowNode = document.querySelector(`[data-row-index="${rowIndex}"]`) || rowElementRef.current; + if (rowNode && nextTarget && typeof rowNode.contains === 'function' && rowNode.contains(nextTarget)) return; setFocusedItemId(null); - }, []); + }, [rowIndex]); const handleFocusedChange = useCallback((itemId) => { setFocusedItemId(itemId || null);