# What changed in @effect/opentelemetry

> 40 changes in @effect/opentelemetry 0.59 to 4 from its official release notes, upgrade guides and advisories: 11 breaking, 4 new APIs and options. Each one cited. Sources checked 2026-11-14. HTML: https://unstale.sh/npm/@effect/opentelemetry/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @effect/opentelemetry 4

### Breaking changes

- OtlpTracer and OtelTracer leave successful spans, and spans failing without a reportable error, with status Unset instead of Ok. Queries and dashboards filtering on Ok should also match Unset. (4.1.3) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.3)
- NodeSdk is no longer re-exported from the package root; import it from this subpath to avoid requiring the optional Node SDK peer when importing the package. (4.1.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.0)
- WebSdk is no longer re-exported from the package root; import it from this subpath to avoid requiring the optional Web SDK peer when importing the package. (4.1.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.0)
- Node.js 22.19.0 is now the minimum required version for @effect/opentelemetry, up from 18. (4.1.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.0)
- Non-object failures no longer capture an internal stack frame; the stack is the message plus the span frame when available, affecting exported exception.stacktrace and Cause.pretty output. (4.0.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.2)
- Cumulative min and max are omitted from delta histogram points after the first export; first-export and cumulative extrema are unchanged. (4.0.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.2)
- HTTP span names, response error status, server addresses and ports align with OpenTelemetry conventions; header capture is opt-in and homogeneous primitive arrays export as array attributes. (4.0.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.2)
- Interrupt-only spans now use Unset and an effect.fiber.interrupted attribute instead of Ok, an Interrupted description, and the span.label and status.interrupted attributes. (4.0.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.2)
- The package uses the shared Effect v4 version and must be bumped to a matching v4 version alongside effect. (4.0.0) — [upgrade guide](https://github.com/Effect-TS/effect/blob/HEAD/MIGRATION.md)

### New APIs and options

- OTLP exporters can be configured with standard OpenTelemetry environment variables. (4.0.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.0)

### Behavior and default changes

- Reads OTEL_RESOURCE_ATTRIBUTES with Config.Record, allowing a structured config value as well as the environment variable format. (4.1.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.0)
- OpenTelemetry log records now receive the span context from the current Effect span, allowing backends to link logs to their traces. (4.0.5) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.5)
- Spans without an Effect parent can inherit active OpenTelemetry spans created outside Effect. (4.0.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.2)
- The integration's APIs are marked unstable, so they may receive new features and breaking changes in minor releases. (4.0.0) — [upgrade guide](https://github.com/Effect-TS/effect/blob/HEAD/MIGRATION.md)

### Fixes and other changes

- OtelTracer no longer overwrites a status set directly on the span when it succeeds or fails without a reportable error. (4.1.3) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.3)
- Keeps log record bodies typed as OpenTelemetry AnyValue when @opentelemetry/api 1.10 widens AttributeValue to unknown. (4.1.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.2)
- Percent-decodes OTEL_RESOURCE_ATTRIBUTES keys and values, discarding the variable with a warning when its encoding is invalid. (4.1.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.1.0)
- Calls and fiber activity that arrive after a span has ended no longer modify it, trigger SDK warnings, export it twice, or send DevTools events. (4.0.7) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.7)
- Successfully bound metric readers are shut down if a later reader fails to bind, preventing exports from leaking after the failed scope closes. (4.0.6) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.6)
- Parsing now keeps attribute values that contain = and skips entries with an empty key. (4.0.6) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.6)
- Exporters now drop delta state for series that are no longer registered, preventing stale series state from being retained. (4.0.6) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.6)
- The active parent span object is preserved when starting Effect spans, preventing SDKs such as Sentry from dropping child spans. (4.0.3) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.3)
- Histogram exporters retain all finite boundaries and overflow observations in OTLP, and emit a single +Inf bucket in Prometheus. (4.0.3) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.3)
- Parent trace and span IDs are preserved when an active OpenTelemetry span context exposes them through getters, such as dd-trace. (4.0.3) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.3)
- OTLP and @effect/opentelemetry logs, traces, and resources are aligned with OpenTelemetry conventions. (4.0.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.2)
- Modules and directly importable exports now have explicit stability tags; stable follows strict semver, while unstable APIs may receive breaking changes in minor releases. (4.0.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.2)
- `@effect/opentelemetry` aligns logs and spans with the OpenTelemetry specification. (4.0.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%404.0.0)

## @effect/opentelemetry 0.64

### Fixes and other changes

- Fixes duplicate service.name and service.version attributes when they are set in OTEL_RESOURCE_ATTRIBUTES. (0.64.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.64.2)
- Preserves OpenTelemetry trace propagation through unnamed Effect.fn and disabled spans by using the nearest propagated parent; Tracer.currentOtelSpan skips these spans. (0.64.1) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.64.1)

## @effect/opentelemetry 0.63

### Fixes and other changes

- Logs are now added to the first propagated span when Effect.fn adds a fake span for a stack frame. (0.63.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.63.0)

## @effect/opentelemetry 0.61

### Breaking changes

- Changed from an optional to a required peer dependency, fixing module resolution errors when importing from the main entry point. (0.61.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.61.0)
- Now requires an OtlpSerialization layer to be provided for the desired encoding format. (0.61.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.61.0)

### New APIs and options

- Provides an explicit layer for JSON encoding. (0.61.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.61.0)
- Provides a layer for Protobuf encoding. (0.61.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.61.0)
- Introduces a service for choosing JSON or Protobuf encoding for OTLP exporters. (0.61.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.61.0)

### Fixes and other changes

- Changed from an optional to a required peer dependency, fixing module resolution errors when importing from the main entry point. (0.61.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.61.0)
- Correctly handles the 2-argument overload with attributes instead of treating the attributes object as a TimeInput. (0.61.0) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.61.0)

## @effect/opentelemetry 0.59

### Fixes and other changes

- Fixes currentOtelSpan to work with both the official OpenTelemetry SDK and the lightweight OTLP module, returning an OpenTelemetry Span interface wrapper when using OTLP. (0.59.3) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.59.3)
- The peer dependency range for @opentelemetry/sdk-logs was widened, allowing a broader range of versions. (0.59.2) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.59.2)
- Bigints are converted to strings for OpenTelemetry attributes. (0.59.1) — [release notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/opentelemetry%400.59.1)
