TanStack
OSS
ai
Overview
Sign in / Sign up
Open main menu
ai
GitHub
Overview
Runs
Analytics
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Succeeded
renovate/npm-vite-vulnerability
dcaa35a5 Merge d134331bdb6fbca6b5033bd93f0a9dd63e7a1b7b into 44454100e5825f948bab0ce52c57c80d70c0ebe7
by renovate[bot]
r
Succeeded
renovate/npm-vite-vulnerability
dcaa35a5 chore(deps): update dependency vite to v7.3.5 [security]
by renovate[bot]
r
Succeeded
renovate/npm-vite-vulnerability
fa886d14 chore(deps): update dependency vite to v7.3.5 [security]
by renovate[bot]
r
Succeeded
renovate/npm-vite-vulnerability
fa886d14 chore(deps): update dependency vite to v7.3.5 [security]
by renovate[bot]
r
Succeeded
experiment/use-chat-use-sync-external-store
9120e3a7 refactor(ai-react): rewrite useChat on useSyncExternalStore Treat ChatClient as the external store it already is instead of mirroring its seven state channels into React via useState + onXChange callbacks. A small hook-local store wraps the client: every onXChange funnels into one emit() that rebuilds a cached snapshot and notifies subscribers, and useSyncExternalStore owns the subscription lifecycle from there. Removed as a result: - 7x useState -> 1 useSyncExternalStore snapshot - the activeClientRef "is this still the active client?" guard on every callback - the setTimeout(0) cleanup-deferral dance - messagesRef / isFirstMountRef and the post-mount message resync effect - 6x useCallback (actions are bound once in the store) - 3x useMemo for structured output -> one pure selectStructuredOutput() useEffect 4 -> 3 (lifecycle, options-sync, live-subscription — all genuine "sync an external imperative system" effects). useRef 4 -> 1 (latest-options). The `as unknown as UseChatReturn` cast is also gone: the schema-conditional return is expressed as a function overload (public refined signature + always-present implementation signature), so the body type-checks without a cast and callers still see the conditional partial/final surface. Behavior-preserving: all 128 ai-react unit + type tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
by Tom Beckenham
T
Succeeded
experiment/use-chat-use-sync-external-store
9120e3a7 Merge b5ec6e0920f03eaa1e11f0953fafafef14f80291 into 0fce6f1f8c68ef7effd1213bdf91da1239030a17
by Tom Beckenham
T
Previous page
Previous
Next
Next page