unstale

npm / braintrust

braintrust

What changed in braintrust 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

8 breaking1 deprecations78 new APIs and options3 performance26 behavior and defaults16 tooling72 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

braintrust 3204 changes

Breaking changes 8

  • Changes the batch evals API into an API for evals with deferred AI provider calls.

    3.33.0release notes

  • Removes output from the dataset pipeline row type definition.

    3.16.0release notes

  • The @flue/runtime export wrapFlueContext was removed.

    3.15.0release notes

  • The @flue/runtime export wrapFlueSession was removed.

    3.15.0release notes

  • Rejects __proto__, constructor, and prototype keys to prevent prototype pollution from untrusted merge sources.

    3.12.0release notes

  • Rejects __proto__, constructor, and prototype keys to prevent prototype pollution from untrusted merge sources.

    3.12.0release notes

  • Adds the canonical Next.js setup utility in place of the webpack loader/plugin.

    3.12.0release notes

  • Built-in tools are now nested under sub-agents.

    3.10.0release notes

Deprecations 1

  • Deprecates the old bundler plugin aliases in favor of the new aliases.

    3.12.0release notes

New APIs and options 78

  • Workflow evals now support batch tasks and scorers.

    3.37.0release notes

  • Eval cancellation now stops scheduling trials, aborts the signal passed to task hooks, and waits for in-flight tasks and scorers to settle before rejecting. Pass hooks.signal to task APIs or check signal.aborted to stop work early.

    3.37.0release notes

  • Logger options now include _createInProjectGroup.

    3.36.0release notes

  • Helper types for pushing pre-processors are now exposed.

    3.36.0release notes

  • Add projectGroupName to create projects inside a project group.

    3.36.0release notes

  • Adds span provenance for Temporal and OpenAI Agents SDK.

    3.36.0release notes

  • Adds instrumentation for OpenAI multimodal APIs.

    3.35.0release notes

  • Adds hooks for exporting spans.

    3.35.0release notes

  • Adds AI SDK instrumentation for typesafe ai jev.

    3.34.0release notes

  • Adds instrumentation for @typesafe-ai/sdk, allowing developers to instrument its usage with Braintrust.

    3.34.0release notes

  • Adds utilities to push and preview custom views.

    3.33.0release notes

  • Adds instrumentation for Google GenAI multimodal embeddings.

    3.33.0release notes

  • Adds instrumentation for the LangGraph SDK.

    3.33.0release notes

  • Adds instrumentation for the OpenAI agents API.

    3.33.0release notes

  • Adds advanced filters to Trace.getSpans(), allowing developers to filter spans with more control.

    3.33.0release notes

  • Prompt templates support input audio content.

    3.32.0release notes

  • Tool IDs are tracked for AI SDK v6.

    3.31.0release notes

  • Adds instrumentation for the OpenAI Batch API.

    3.30.0release notes

  • initDataset() supports datasetId.

    3.29.0release notes

  • loadPrompt accepts an apiKey argument.

    3.29.0release notes

  • Instrumentation now supports Vercel AI SDK image generation.

    3.29.0release notes

  • An experimental batch evals API was added.

    3.28.0release notes

  • Voyage instrumentation was added.

    3.28.0release notes

  • Adds instrumentation for @cloudflare/think.

    3.27.0release notes

  • Adds support for flue v2.

    3.27.0release notes

  • Adds meta.eval.input to vitest-evals.

    3.27.0release notes

  • Adds instrumentation for ollama.

    3.27.0release notes

  • Adds instrumentation for agents.

    3.26.0release notes

  • Adds instrumentation for @cloudflare/ai-chat.

    3.26.0release notes

  • Adds instrumentation for @huggingface/transformers.

    3.26.0release notes

  • Support is added for v1 of the OpenRouter SDK.

    3.25.0release notes

  • Adds LangSmith tracing.

    3.23.0release notes

  • Adds a scorer that exposes helpers to evaluate agents.

    3.21.0release notes

  • Forwards and picks up the --sample N flag.

    3.21.0release notes

  • Adds an API for distributed tracing across service boundaries.

    3.21.0release notes

  • Adds an API for distributed tracing across service boundaries.

    3.21.0release notes

  • Adds a flag to toggle realtime mode in the span fetcher.

    3.21.0release notes

  • Adds braintrustFlueInstrumentation() to make manual instrumentation slightly cleaner.

    3.20.0release notes

  • Adds support for @anthropic-ai/bedrock-sdk.

    3.19.0release notes

  • Adds support for @aws-sdk/client-bedrock-runtime.

    3.19.0release notes

  • Adds support for manual instrumentation for flue v1.

    3.19.0release notes

  • Adds support for @strands-agents/sdk.

    3.19.0release notes

  • Adds AI SDK v7 support.

    3.18.0release notes

  • Adds instrumentation for the pi-coding-agent package.

    3.18.0release notes

  • Adds project-level classifier builder support for function push.

    3.18.0release notes

  • Adds Google GenAI instrumentation for the interactions API.

    3.18.0release notes

  • Inline eval cases can carry explicit origin metadata.

    3.18.0release notes

  • Installing braintrust exposes a bt command in node_modules/.bin that runs the prebuilt native binary for your platform.

    3.17.0release notes

  • invoke() now accepts overrides.

    3.16.0release notes

  • Exports LocalTrace for use by developers.

    3.16.0release notes

  • Adds an environment variable to control the caching location.

    3.14.0release notes

  • Adds auto-instrumentation for Mastra.

    3.14.0release notes

  • The dataset pipeline argument now includes the span id.

    3.13.0release notes

  • Dataset pipelines are available as an experimental feature.

    3.13.0release notes

  • Adds an entrypoint for CJS/TS patching.

    3.12.0release notes

  • Adds an esbuild bundler plugin alias.

    3.12.0release notes

  • Adds a Rollup bundler plugin alias.

    3.12.0release notes

  • Adds a Vite bundler plugin alias.

    3.12.0release notes

  • Adds a webpack bundler plugin alias.

    3.12.0release notes

  • Adds instrumentation for @flue/runtime.

    3.12.0release notes

  • Adds automatic instrumentation for LangChain.

    3.12.0release notes

  • Adds automatic instrumentation for LangGraph.

    3.12.0release notes

  • Adds automatic instrumentation for the OpenAI Agents SDK.

    3.12.0release notes

  • Adds instrumentation for Firebase genkit.

    3.11.0release notes

  • Captures multi-turn message APIs with a wrapper.

    3.11.0release notes

  • Captures reasoning for Groq reasoning models.

    3.11.0release notes

  • wrapVitest now supports projectId.

    3.11.0release notes

  • Thinking is now captured with Cohere.

    3.10.0release notes

  • Dataset versioning support was added, allowing developers to work with versioned datasets.

    3.10.0release notes

  • Experiment dataset filters are now included in experiment metadata.

    3.10.0release notes

  • Instrumentation was added for groq-sdk.

    3.10.0release notes

  • Adds cohere-ai instrumentation.

    3.9.0release notes

  • Adds per-input trialCount support to Eval().

    3.9.0release notes

  • Captures grounding metadata for Google GenAI.

    3.9.0release notes

  • Adds instrumentation for @huggingface/inference.

    3.9.0release notes

  • Adds reranking instrumentation for AI SDK and Openrouter SDK.

    3.9.0release notes

  • Tracks server tool use metrics for the Anthropic SDK.

    3.9.0release notes

  • Adds x-bt-use-gateway to the allowed CORS headers.

    3.9.0release notes

Performance 3

Behavior and default changes 26

  • Made @types/react an optional peer dependency so braintrust no longer installs React 18 types for every consumer, avoiding ReactNode type conflicts in React 19 projects.

    3.37.2release notes

  • Eve compatibility now includes versions 0.62 and 0.70.

    3.37.0release notes

  • Streams ending with response.incomplete or response.failed now log output and token metrics; response.failed also logs the error.

    3.37.0release notes

  • Eve turns are now nested under the caller's propagated trace context.

    3.37.0release notes

  • Span customizers are enhanced.

    3.36.0release notes

  • Zod v4 schemas are supported for eval parameters and function parameters.

    3.36.0release notes

  • Scorer results can be nameless.

    3.31.0release notes

  • The eval command applies auto instrumentation.

    3.29.0release notes

  • Instrumentation uses new eve instrumentation hooks.

    3.29.0release notes

  • The instrumentation name is recorded as part of span provenance.

    3.25.0release notes

  • Captures readable reasoning on the originating LLM span across workflow resumes.

    3.24.0release notes

  • Adds span origin provenance metadata to Braintrust and OpenTelemetry spans.

    3.24.0release notes

  • Eve session IDs are recorded on all spans.

    3.23.0release notes

  • Eve turns are tracked as individual traces.

    3.23.0release notes

  • Strands logs inline document, image, and video bytes as Braintrust attachments.

    3.23.0release notes

  • Parallel tool calls are captured in Eve LLM span output.

    3.23.0release notes

  • Mastra now records time_to_first_token for streaming.

    3.23.0release notes

  • Stops capturing message history in AI SDK tool spans.

    3.21.0release notes

  • When optional dependencies are skipped, a postinstall script downloads the matching binary from the npm registry as a fallback.

    3.17.0release notes

  • Node.js login now searches upwards recursively for .env.braintrust containing BRAINTRUST_API_KEY.

    3.13.0release notes

  • Adds exponential backoff between existing retry attempts.

    3.12.0release notes

  • Git metadata is not collected by default when organization-level git metadata settings are absent.

    3.12.0release notes

  • Allows tracing across multiple projects by removing the parent project ID restriction.

    3.12.0release notes

  • OpenRouter instrumentation now captures reasoning.

    3.11.0release notes

  • The supported patching range now includes google ADK 1.0.0.

    3.10.0release notes

  • Improves task lifecycle handling and lifecycle details in the claude-agent-sdk.

    3.9.0release notes

Tooling 16

  • Adds instrumentation for Google GenAI multimodal APIs.

    3.35.0release notes

  • Adds instrumentation for Groq audio APIs.

    3.35.0release notes

  • Instrumentation is added for @google/generative-ai.

    3.32.0release notes

  • Instrumentation is added for synchronous elevenlabs SDK APIs.

    3.32.0release notes

  • Adds instrumentation for anthropic.beta.sessions.

    3.27.0release notes

  • Auto instrumentation is updated to the current Pi Coding Agent SDK release.

    3.25.0release notes

  • Adds tracing support for HarnessAgent.

    3.24.0release notes

  • First-party eve instrumentation was added.

    3.22.0release notes

  • Adds instrumentation for Workflow Agent.

    3.21.0release notes

  • Adds a reporter for vitest-evals.

    3.19.0release notes

  • Adds instrumentation for Mistral classification and moderation APIs.

    3.11.0release notes

  • Adds instrumentation for @github/copilot-sdk.

    3.11.0release notes

  • Adds instrumentation for @openai/codex-sdk.

    3.11.0release notes

  • Instrumentation was added for @cursor/sdk.

    3.10.0release notes

  • Adds instrumentation for Google GenAI embedContent calls for text.

    3.9.0release notes

  • Adds instrumentation for the Anthropic SDK tool runner.

    3.9.0release notes

Fixes and other changes 72

  • The Vite integration now supports Vite 8 dependency optimization.

    3.37.1release notes

  • Claude token usage statistics are fixed.

    3.37.0release notes

  • Empty numeric environment variables are ignored instead of being read as 0.

    3.36.0release notes

  • Empty numeric environment variables are ignored instead of being read as 0.

    3.36.0release notes

  • Preserves LangChain model attribution.

    3.36.0release notes

  • Fixes reasoning_content handling for OpenAI-compatible responses.

    3.36.0release notes

  • Stops resending span metadata on end rows.

    3.36.0release notes

  • Fixes token metrics when using AI SDK middleware.

    3.35.0release notes

  • Prevents dataset snapshots from silently including deleted rows.

    3.35.0release notes

  • Keeps tool spans current during execution so nested spans attach to the tool span.

    3.35.0release notes

  • Captures provider managed tool calls.

    3.35.0release notes

  • Captures the right provider when using the Vercel AI gateway.

    3.35.0release notes

  • OpenAI batch instrumentation now supports Uint8Array and Buffer JSONL sources.

    3.34.0release notes

  • OpenAI batch instrumentation now supports the /v1/embeddings endpoint.

    3.34.0release notes

  • Prevents collisions when eval trials are upserted.

    3.33.0release notes

  • Fixes a race in OTEL trace context propagation.

    3.33.0release notes

  • Fixes LangChain Anthropic token metrics.

    3.31.0release notes

  • Injects the instrumentation hook on Next.js versions below 15.

    3.31.0release notes

  • Fixes instrumentation of streamFunction.

    3.30.0release notes

  • Instrumentation output preserves all streaming chat choices.

    3.29.0release notes

  • LangChain reasoning tokens are recorded as a metric.

    3.29.0release notes

  • Anthropic thinking tokens are recorded as a metric.

    3.29.0release notes

  • noTraceIO is no longer ignored when wrapTraced wraps plain functions.

    3.29.0release notes

  • The limit is enforced across paginated dataset fetches.

    3.28.0release notes

  • Per-call token and cost metrics are now calculated correctly in the Claude Agent SDK integration.

    3.28.0release notes

  • The scorer now receives id and tags.

    3.28.0release notes

  • Subagent tool spans are now correctly parented in the Claude Agent SDK integration.

    3.28.0release notes

  • Returns any to fix type compatibility.

    3.26.0release notes

  • Fixes token counting in Google ADK.

    3.26.0release notes

  • Fixes output token counting for the generate content API.

    3.26.0release notes

  • Fixes output token counting for the interactions API.

    3.26.0release notes

  • Captures the system prompt in Strands agent model span input.

    3.26.0release notes

  • Fixes eval hanging until its configured timeout resolves.

    3.25.0release notes

  • Preserves HarnessAgent trace context across suspended turns.

    3.25.0release notes

  • Emits canonical LangChain JS total token metrics.

    3.24.0release notes

  • Cleans up span metadata produced by the Claude Agent SDK integration.

    3.23.1release notes

  • Transient failures are retried for internal, read-only BTQL requests used to fetch datasets, objects, spans, and prompt versions.

    3.23.0release notes

  • Unresolved dynamic model fallbacks are no longer reported as model metadata.

    3.23.0release notes

  • Mastra span IDs are used as Braintrust row IDs so logFeedback attaches feedback to the correct row.

    3.22.0release notes

  • Closes parent spans using AI SDK 7 onEnd callbacks.

    3.21.0release notes

  • Fixes function invocations by stripping /v1/proxy from the functions endpoint.

    3.21.0release notes

  • Properly anchors the preview domain CORS regex.

    3.21.0release notes

  • Synthesizes AI SDK total token metrics from prompt and completion counts.

    3.21.0release notes

  • Keeps model child spans correctly parented for concurrent calls sharing a model instance.

    3.21.0release notes

  • Logs the Anthropic system message first in span input.

    3.19.0release notes

  • Fixes dataset row origin for evals and playgrounds.

    3.19.0release notes

  • Fixes subagent span nesting and input.

    3.18.0release notes

  • Eval summaries compare against the experiment’s explicit base experiment ID.

    3.18.0release notes

  • Fixes span nesting.

    3.18.0release notes

  • Validates inline row origin for evals.

    3.18.0release notes

  • Fixes TTFT in AI SDK v6.

    3.18.0release notes

  • Preserves multi-byte UTF-8 characters split across chunk boundaries in streams.

    3.16.0release notes

  • Fixes instrumentation wrapping for the Cohere v2 subclient.

    3.11.0release notes

  • Fixes Google ADK agent naming in instrumentation.

    3.11.0release notes

  • Prevents duplicate LLM spans when multiple SDK instances are loaded in the same process.

    3.11.0release notes

  • Cancels body consumption immediately for object store uploads.

    3.11.0release notes

  • Prevents OpenAI instrumentation from reading a request body more than once.

    3.11.0release notes

  • Marks callModel parent spans as tasks and avoids double-counting metrics.

    3.11.0release notes

  • File transforms are skipped when the transform id is undefined, avoiding processing them in that case.

    3.10.0release notes

  • The export map for bundler plugins was corrected.

    3.10.0release notes

  • Directory warnings now show the correct eval file extension.

    3.10.0release notes

  • Streamed tool calls are now captured for Hugging Face.

    3.10.0release notes

  • Reasoning capture in Mistral was corrected.

    3.10.0release notes

  • Sets AI SDK top-level api spans to type function.

    3.9.0release notes

  • Ends OpenAI Agents child spans when the trace ends.

    3.9.0release notes

  • Collects logprob and refusals output for OpenAI streaming APIs.

    3.9.0release notes

  • Restores prompt cache metrics for the AI SDK.

    3.9.0release notes

  • Collects logprob and refusals output for OpenAI streaming APIs.

    3.9.0release notes

  • Captures Anthropic server tool use inputs for streaming APIs.

    3.9.0release notes

  • Uses a sync channel for AI SDK CJS streamText and streamObject in v4+.

    3.9.0release notes

  • Uses a sync channel for AI SDK CJS streamText and streamObject in v4+.

    3.9.0release notes

  • Prevents tool spans from being dropped when spawning subagents in the claude-agent-sdk.

    3.9.0release notes