Skip to content
PluginStats

@tanstack/ai-utils weekly downloads statistics

By tanstack (52 listings) · npm · AI SDKs

Shared TypeScript utilities for TanStack AI provider adapters and runtime packages.

View on npm Fresh · Oct 18, 2026

@tanstack/ai-utils has 514,221 recorded weekly downloads on npm, an increase of 92.0% over the past 30 days, ranking #268 of 2,322 tracked listings.

Weekly downloads
514,221
Official API · Oct 18, 2026
7-day growth
-3.7%
-19.9K weekly downloads
30-day growth
+92.0%
+246.5K weekly downloads
90-day growth
+302%
+386.4K weekly downloads
Rank
#268
Among tracked npm listings

About @tanstack/ai-utils

<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://tanstack.com/api/readme/ai.png?theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://tanstack.com/api/readme/ai.png" /> <img src="https://tanstack.com/api/readme/ai.png" alt="TanStack AI" width="900" /> </picture> </div> <br />

@tanstack/ai-utils

Shared TypeScript utilities for TanStack AI provider adapters and runtime packages.

This is an internal dependency of the provider adapters (@tanstack/ai-openai, @tanstack/ai-anthropic, @tanstack/ai-gemini, …) and runtime packages. It has no dependencies of its own and no framework or provider code; you normally get it transitively rather than installing it yourself. It is documented here so adapter authors know what already exists before writing their own.

Installation

npm install @tanstack/ai-utils
# or
pnpm add @tanstack/ai-utils
# or
yarn add @tanstack/ai-utils

What's in it

ExportPurpose
generateId(prefix)Prefixed unique id: ${prefix}-${timestamp}-${random}, with the full base36 random portion kept for entropy.
getApiKeyFromEnv(name)Reads name from window.env (browser) or process.env (Node) and throws a clear error naming the variable when it is missing.
arrayBufferToBase64, base64ToArrayBuffer, base64ToUint8ArrayCross-runtime base64 helpers. Prefer the native Uint8Array.toBase64() / fromBase64() when available, then Node's Buffer, then atob / btoa.
transformNullsToUndefined(value)Recursively strips every null from JSON-shaped structured output so .optional() fields round-trip through Zod. Schema-blind.
undoNullWidening(value, map?)Strips only the nulls that strict-mode schema widening synthesized, using the NullWideningMap recorded by the widening pass. .nullable() fields keep their nulls.
Ids and API keys
import { generateId, getApiKeyFromEnv } from '@tanstack/ai-utils'

const runId = generateId('run') // run-1758424800000-k3j9x2p1q
const apiKey = getApiKeyFromEnv('OPENAI_API_KEY') // throws if unset
Base64
import { arrayBufferToBase64, base64ToUint8Array } from '@tanstack/ai-utils'

const encoded = arrayBufferToBase64(await file.arrayBuffer())
const bytes = base64ToUint8Array(encoded)

Be cautious with large buffers on serverless and Workers runtimes: base64 multiplies the memory footprint by about 1.33× and can OOM the isolate.

Nulls in structured output

OpenAI-style strict schemas require optional fields to be widened to required + nullable, so the provider returns null for an absent optional. Validating that null against the original schema fails, because .optional() means T | undefined, not T | null.

  • undoNullWidening(value, map) is the precise fix: it consults the NullWideningMap built by convertSchemaForStructuredOutput in @tanstack/ai and drops only the nulls the widening pass introduced, so both optional and nullable fields round-trip. With no map, the value is returned untouched.
  • transformNullsToUndefined(value) is the schema-blind fallback: it strips every null, including ones a .nullable() field legitimately allows, and is meant for JSON.parse output only (class instances, Date, Map, Set are not preserved).

License

MIT

Description from the npm listing.

  • ai
  • ai-sdk
  • typescript
  • tanstack
  • utilities
  • adapter
  • provider-adapter

README badge

Show your rank in a README or on your website. The badge updates automatically.

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

@tanstack/ai-utils weekly downloads on npm, last 90 days: 514,221 weekly downloads as of Oct 18, 2026, +302% over 90 days.@tanstack/ai-utilsWeekly downloads on npm · Last 90 days514,221downloads / week+302% over 90 days0100K200K300K400K500K600K700KJul 20Aug 4Aug 19Sep 3Sep 18Oct 3Oct 18downloads / weekobservedarchived (Internet Archive)no observationsJul 22, 2026 – Oct 18, 2026 · 89 observations · Updated Oc…pluginstats.com
@tanstack/ai-utils weekly downloads on npm, last 90 days: 514,221 weekly downloads as of Oct 18, 2026, +302% over 90 days.

7/30/90-day growth

@tanstack/ai-utils weekly downloads growth on npm: -3.7% over 7 days, +92.0% over 30 days, +302% over 90 days.@tanstack/ai-utilsWeekly downloads growth on npm514,221downloads / week now7-day growth-19,918 weekly downloads-3.7%30-day growth+246,452 weekly downloads+92.0%90-day growth+386,392 weekly downloads+302%Growth vs. nearest observation to each baseline date · Updated Oct 18, 2026pluginstats.com
@tanstack/ai-utils weekly downloads growth on npm: -3.7% over 7 days, +92.0% over 30 days, +302% over 90 days.

Ranking history

@tanstack/ai-utils npm ranking history: currently #268 (by weekly downloads).@tanstack/ai-utilsnpm ranking · by weekly downloads · Last 90 days#268current rank#266#268#270#272#274#276#278Jul 22Aug 6Aug 21Sep 5Sep 20Oct 5Oct 20rankOct 18, 2026 – Oct 20, 2026 · 3 observations · Updated Oct 18, 2026pluginstats.com
@tanstack/ai-utils npm ranking history: currently #268 (by weekly downloads).

Listing placement

All npm2,320 listings · 116 pages · 1,162 shown · page 14, #8 (overall #268)
All npm: every listing in weekly downloads order

Listing placement

AI SDKs259 listings · 13 pages · page 1, #8 (overall #8)
AI SDKs: every listing in weekly downloads order

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (122)
Recent weekly downloads observations for @tanstack/ai-utils
Date (UTC)Weekly downloadsChange vs. previous
514,221+127.7K
386,496-83.5K
470,028+37.6K
432,400-131.6K
563,994-105.3K
669,2820
669,282+135.1K
534,139+43.2K
490,916+43.9K
447,001+51.7K
395,330+50.4K
344,908+24.5K
320,436-72K
392,395—

Similar npm AI SDKs plugins

All 20 @tanstack/ai-utils alternatives

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/@tanstack/ai-utils. First seen Oct 16, 2026; last successful collection Oct 20, 2026. See the methodology.