이번 소식
TanStack DB 0.14.0이 2026년 10월 14일 12:13:33 KST에 공개됐습니다. 앱에서 데이터를 조회하고 변화에 맞춰 결과를 갱신하는 개발 도구입니다. 이번 버전은 같은 쿼리를 여러 클라이언트 범위에서 재사용할 수 있도록 확장하고, SQLite 연결부와 로딩 상태도 손봤습니다.
달라진 점
쿼리는 어떤 데이터를 가져올지 적어 둔 조회 정의입니다. 이제 DbClient 밖에서 Collection 디스크립터로 쿼리를 만들거나 확장해도 데이터 소스를 즉시 묶지 않습니다. 디스크립터는 실제 컬렉션을 연결하기 위한 정의이며, 클라이언트가 그 쿼리를 사용하는 시점에 연결됩니다.
따라서 원래의 연결 전 쿼리를 서로 다른 React Provider 범위나 서버 사전 로딩에서 재사용할 수 있습니다. 이미 준비된 쿼리는 특정 클라이언트에 연결된 스냅샷이므로, 여러 클라이언트에 돌려 쓸 때에는 원래의 미연결 쿼리를 유지해야 합니다.
어떤 점이 달라지나요?
진행형 Electric 컬렉션을 이용하는 실시간 쿼리는 필요한 스냅샷이 로드되면 준비 상태가 됩니다. 이전에는 해당 쿼리의 행이 있어도 백그라운드 전체 동기화를 기다릴 수 있었습니다. preload(), isReady, useLiveSuspenseQuery를 쓰는 화면에서 확인할 변경입니다.
toArrayWhenReady()와 stateWhenReady()도 preload()와 같은 준비 시점에 완료됩니다. 단순히 컬렉션에 행이 생겼다는 이유만으로 쿼리 준비보다 먼저 결과를 반환하던 동작을 바꾼 것입니다.
사용 전 확인할 점
직접 내부 표현을 다루는 확장 코드는 새 DescriptorRef를 확인해야 합니다. IR.From을 순회하는 코드는 descriptorRef 분기를 처리해야 합니다.
하위 SQLite 어댑터의 데이터 작업에는 명시적인 eager 대상 또는 캐시 사용 권한에 연결된 관리 대상을 넘겨야 합니다. 이 경계에서 단순 컬렉션 ID만 넘기던 호출은 더 이상 동작하지 않으며, 관련 정보는 Electron IPC 프로토콜 v6에도 전달됩니다. 일반 화면 코드와 직접 어댑터를 구현한 코드를 구분해 점검할 부분입니다.
집계 쿼리에서도 결과를 묵묵히 누락하던 일부 동작이 오류로 바뀝니다. groupBy 없이 집계와 일반 소스 필드를 섞으면 해당 일반 필드가 undefined가 되는 대신 오류가 발생하므로, 그 필드를 집계하거나 groupBy에 넣어야 합니다. 업데이트 전에는 쿼리 재사용 방식과 로딩·집계 결과가 달라지는 화면을 확인하세요.
새 글 받아보기
RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.