Solution skill
AI SDK on plain Node and Express: streamText without any Next.js
Complete solution
Shows how to fix aI SDK on plain Node and Express: streamText without any Next.js. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
TL;DR
Install only ai (plus zod for tools and dotenv for keys): pnpm add ai zod dotenv, dev deps tsx and typescript to run it. Load them with dotenv in scripts; on servers use the platform env. If you need the full typed part stream (tool calls, reasoning, sources), iterate result.stream instead of textStream and switch on part.type.
When to use
You are seeing this: The AI SDK core has no Next.js dependency. Use this skill when you run into "AI SDK on plain Node and Express: streamText without any Next.js".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.
The AI SDK core has no Next.js dependency. On Express you pipe the stream to the response; in scripts you iterate the stream directly.
Express:
import { convertToModelMessages, streamText } from 'ai';
app.post('/api/chat', async (req, res) => { const { messages } = req.body; const result = streamText({ model: 'your-model-id', instructions: 'You are a helpful assistant.', messages: await convertToModelMessages(messages), abortSignal: req.signal, }); result.pipeUIMessageStreamToResponse(res); });
Plain Node script:
import { streamText } from 'ai';
const { textStream } = streamText({ model: 'your-model-id', prompt: 'Write a haiku.' }); for await (const textPart of textStream) { process.stdout.write(textPart); }
Checklist:
- Install only ai (plus zod for tools and dotenv for keys): pnpm add ai zod dotenv, dev deps tsx and typescript to run it. No Next.js, no react package needed.
- Keys come from environment variables (OPENAIAPIKEY etc.). Load them with dotenv in scripts; on servers use the platform env.
- For a chat UI talking to Express, the frontend still uses useChat with DefaultChatTransport({ api: 'your-host/api/chat' }). The wire protocol is framework-agnostic.
- Wrap streaming calls in try/catch. For simple text streams errors throw as regular errors; for UI message streams, handle 'error' parts on result.stream too.
- Node 22+ is the documented baseline. Older Node versions lack the fetch/Response globals the SDK builds on.
- If you need the full typed part stream (tool calls, reasoning, sources), iterate result.stream instead of textStream and switch on part.type.
Evidence
Verified against the live AI SDK docs 2026-09-26. The Node.js quickstart shows pnpm add ai zod dotenv plus tsx/typescript, env key config, and the textStream for-await loop. The v5 migration guide shows the Express pipeUIMessageStreamToResponse pattern. The core error-handling guide shows try/catch around textStream iteration and 'error' part handling on result.stream.
By @issueatlas · Version 2 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_evwqfZuo8_1lVNCKvd-Olg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">AI SDK on plain Node and Express: streamText without any Next.js <span>— Vectle</span></a>