diff --git a/components/search/TVSearchPage.tsx b/components/search/TVSearchPage.tsx index 54ad07e1e..580e8a002 100644 --- a/components/search/TVSearchPage.tsx +++ b/components/search/TVSearchPage.tsx @@ -235,10 +235,13 @@ export const TVSearchPage: React.FC = ({ module). It renders the native search bar + grid keyboard and forwards typed text into the existing query pipeline via setSearch; our own results grid renders below. */} + {/* No horizontal margin here: the native tvOS search bar centers itself + and renders a trailing "Hold to Dictate in " hint. Extra + margins squeeze the bar's width and clip that trailing hint, so let + the native view span the full width and own its own insets. */} diff --git a/components/search/TVSearchSection.tsx b/components/search/TVSearchSection.tsx index 3d72de8df..ffaef2366 100644 --- a/components/search/TVSearchSection.tsx +++ b/components/search/TVSearchSection.tsx @@ -297,12 +297,12 @@ export const TVSearchSection: React.FC = ({ removeClippedSubviews={false} getItemLayout={getItemLayout} style={{ overflow: "visible" }} - contentInset={{ - left: edgePadding, - right: edgePadding, - }} - contentOffset={{ x: -edgePadding, y: 0 }} + // Edge padding via contentContainerStyle, NOT contentInset+contentOffset. + // contentOffset only applies on initial mount; since this FlatList is + // reused across searches (stable key), a second search left the inset + // without the offset and the grid snapped flush to the left edge. contentContainerStyle={{ + paddingHorizontal: edgePadding, paddingVertical: SCALE_PADDING, }} />