Skip to main content

lazy-prefetch-pattern

Use the ChatJS React Query v5 lazy-prefetch pattern without blocking server rendering. Use when prefetching tRPC queries in Next.js Server Components or changing query dehydration and hydration behavior in apps/chat.

소스 정보

저장소
FranciscoMoretti/chat-js
최근 소스 활동
2026년 10월 19일 06:33
감지된 SKILL.md 언어
영어
스타
1,200
포크
122

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
lazy-prefetch-pattern
description
Use the ChatJS React Query v5 lazy-prefetch pattern without blocking server rendering. Use when prefetching tRPC queries in Next.js Server Components or changing query dehydration and hydration behavior in apps/chat.
# Lazy prefetch pattern Start optional server prefetches early without awaiting them so they can stream through React hydration without blocking rendering. - Import `preloadQuery` from `@/trpc/preload-query` and use the request-cached `getQueryClient()` from `@/trpc/server` for consumers beneath `HydrateClient`. - For normal queries, pass `queryClient.query(trpc.foo.bar.queryOptions(...))` to `preloadQuery`. For infinite queries, use `queryClient.infiniteQuery(trpc.foo.list.infiniteQueryOptions(...))`, including the procedure's cursor and `getNextPageParam` options. - Start optional preloads with `void preloadQuery(...)`. The helper handles caller-facing rejection; the cache retains query errors. An already-dehydrated pending promise can still reject. - Guard conditional preloads before invoking them. Imperative fetching does not honor `enabled: false` as a skip, and invoking `skipToken` options produces a missing-query-function error. - Preserve existing awaited settings preloads and deliberately isolated query clients. A custom `HydrationBoundary` must dehydrate the same client used for its preloads. ```tsx import { preloadQuery } from "@/trpc/preload-query"; import { getQueryClient, trpc } from "@/trpc/server"; const queryClient = getQueryClient(); void preloadQuery( queryClient.query(trpc.settings.getModelPreferences.queryOptions()) ); ``` Render the consumers beneath the matching hydration boundary. `query()` applies any `select` callback while the cache retains the raw result; selector failures are handled by `preloadQuery` too. This depends on `trpc/query-client.ts` dehydrating pending queries and using SuperJSON for serialization and hydration. Preserve those settings when using this pattern.
GitHub에서 보기