<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>asyncwaiter</title>
    <link>https://asyncwaiter.com</link>
    <atom:link href="https://asyncwaiter.com/feed.xml" rel="self" type="application/rss+xml" />
    <description>Fail more. Learn more.</description>
    <language>ko-KR</language>
    <lastBuildDate>Mon, 19 Oct 2026 15:10:00 GMT</lastBuildDate>
    
        <item>
          <title><![CDATA[렌더링 경계[2]: typeof window는 그래프를 모른다]]></title>
          <link>https://asyncwaiter.com/2026/10/build-graph-separation</link>
          <guid>https://asyncwaiter.com/2026/10/build-graph-separation</guid>
          <pubDate>Mon, 19 Oct 2026 15:10:00 GMT</pubDate>
          <description><![CDATA[SSR이 살아나자 getLocale is not supported in Client Components 에러가 드러났다. typeof window 분기는 서버인지 브라우저인지만 알 뿐, 지금 코드가 rsc 번들인지 ssr 번들인지는 모른다. Turbopack이 rsc, ssr, client 세 그래프를 어떻게 가르는지 소스로 따라가고, 라이브러리가 exports 조건으로 그래프별 파일을 고르게 두는 원리를 실험으로 확인한 뒤, server-only로 경계를 빌드 타임에 긋는 쪽을 택했다.]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[debugging]]></category>
        </item>
      
        <item>
          <title><![CDATA[ReactQuery의 staleTime: 0은 정말 0일까? 왜?]]></title>
          <link>https://asyncwaiter.com/2026/10/react-query-stale-time-zero</link>
          <guid>https://asyncwaiter.com/2026/10/react-query-stale-time-zero</guid>
          <pubDate>Sat, 03 Oct 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[prefetch하고 hydrate까지 했는데 queryFn이 두 번 호출됐다. 지난 글에서는 staleTime이 0이라서라고 설명했는데, 이 설명은 옳지 못했다. Suspense 모드에서 staleTime은 최소 1,000ms로 보정된다. 왜 최소값이 필요한지, 이 시간 차는 어디서 재는지, 내 실험에서 1초를 넘긴 건 무엇이었는지를 React Query와 React 내부 코드로 따라가 봤다. 핵심은 suspend된 렌더가 아무것도 남기지 않는다는 점이었다. 그리고 같은 코드라도 실행 환경에 따라 흐르는 시간은 달라진다.]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[state-management]]></category><category><![CDATA[tanstack-query]]></category><category><![CDATA[debugging]]></category>
        </item>
      
        <item>
          <title><![CDATA[렌더링 경계[1]: Server Functions cannot be called during initial render]]></title>
          <link>https://asyncwaiter.com/2026/10/rendering-boundary-server-functions</link>
          <guid>https://asyncwaiter.com/2026/10/rendering-boundary-server-functions</guid>
          <pubDate>Thu, 01 Oct 2026 11:00:00 GMT</pubDate>
          <description><![CDATA[DataDog에 주 3,000건씩 쌓이던 에러를 추적했다. useSuspenseQuery가 커밋 전 렌더 단계에서 queryFn을 실행하고, 그 안에 Server Function이 들어 있던 것이 원인이었다. useQuery로 바꾸라는 조언 대신 use server 파일에서 읽기 함수를 분리해 에러를 0건으로 만들었지만, 같은 샌드박스에서 30회를 측정하자 요청은 60회가 나왔다. 서버와 브라우저의 queryClient가 다르기 때문이었다.]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[debugging]]></category><category><![CDATA[tanstack-query]]></category>
        </item>
      
  </channel>
</rss>