The Wire · Showcase
VERCEL-PY STANDARDIZES ON TYPESCRIPT SDK PAYLOADS, WORKFLOW ENGINE SHIPS QUICKJS VM
By RepoJournal · Filed · About Vercel
Python SDK workflows now speak the same wire format as TypeScript, eliminating serialization friction across the stack while the workflow engine ships inline step execution and WASM caching.
The vercel-py SDK achieved full payload interoperability with @workflow/core [1], replacing JSON serialization with devalue format so a Python workflow reads identically to one the TypeScript SDK started. This is a breaking change: workflows now take keyword arguments only and wire format shifts from `b"json"` to `b"devl"` [2]. Meanwhile, the workflow engine shipped QuickJS VM inline step execution [3], keeping the suspended WASM engine alive per invocation and dispatching durable side effects for each suspension, cutting latency by eliminating cold starts. The engine also now carries Hook retention deadlines across the QuickJS boundary [4] and requires `runId` on correlation ID lookups [5], tightening semantic guarantees. Across vercel/flags, a coordinated 6-release wave renamed Edge Config to Global Config throughout the SDK adapter ecosystem [6] [7], updating Statsig, Reflag, PostHog, and LaunchDarkly integrations. On the Next.js front, Turbopack fixed a production-only runtime emission bug where async-module machinery could be stripped from shared chunks [8], and addressed worker thread cleanup to prevent orphaned plugin isolates from blocking garbage collection [9]. The AI SDK fixed tool history validation that was rejecting valid follow-up messages after aborted tools [10], added FLUX 3 video model support to Black Forest Labs [11], and corrected streaming tool call handling for gateways that emit sparse or reused indexes [12].
One email a day. Unsubscribe in one click.
Keep up with Vercel in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Update vercel-py workflows to keyword-argument syntax and plan for wire format migration vercel/vercel-py [plan]
- → Test Turbopack async-module chunks in production-like conditions before next.js release vercel/next.js [immediate]
- → Migrate flags integrations to @flags-sdk/global-config and update environment variable references vercel/flags [plan]
- → Evaluate QuickJS VM engine for your workflow performance profile vercel/workflow [monitor]
References
- [1] workflow: make payloads interchangeable with the TypeScript SDK ↗ vercel/vercel-py
- [2] workflow: make payloads interchangeable with the TypeScript SDK (#224) vercel/vercel-py
- [3] QuickJS engine: inline step execution + WASM module caching (#3049) vercel/workflow
- [4] fix(core): preserve Hook retention in QuickJS ↗ vercel/workflow
- [5] [world] Require a runId on listByCorrelationId ↗ vercel/workflow
- [6] flags@4.3.0 ↗ vercel/flags
- [7] @flags-sdk/statsig@0.3.0 ↗ vercel/flags
- [8] Turbopack: don't strip async-module runtime from shared runtime chunks ↗ vercel/next.js
- [9] Turbopack: terminate failed plugin worker threads (#96592) vercel/next.js
- [10] fix: prevent aborted tool history from blocking follow-up messages (#18433) vercel/ai
- [11] feat(black-forest-labs): add video model support (FLUX 3) ↗ vercel/ai
- [12] fix: handle streamed tool calls with irregular or missing indexes ↗ vercel/ai