NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2128 most downloaded on npm
OpenTelemetry Jaeger propagator provides HTTP header propagation for systems that are using Jaeger HTTP header format.
Last release 1 months ago
31 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
159 releases · first in 2020
One column per quarter.
feat(context-async-hooks): implement attach() on AsyncLocalStorageContextManager #6845 @pichlermarc
attach() on AsyncLocalStorageContextManager #6845 @pichlermarc
AsyncLocalStorage.withScope() returning a native RunScope. On older Node.js, falls back to enterWith() with a manual disposable wrapper.service.instance.idattach() on AsyncLocalStorageContextManager #6845 @pichlermarc
AsyncLocalStorage.withScope() returning a native RunScope. On older Node.js, falls back to enterWith() with a manual disposable wrapper.Infinity in exponential histograms #7015 @mwearservice.instance.idNothing published for this version
The Jaeger propagator has been deprecated by the OpenTelemetry specification in favor of W3CTraceContextPropagator . This package will be removed in a…
@opentelemetry/propagator-jaeger package will be removed in SDK 3.x, planned for approximately September 2026. @pichlermarc
W3CTraceContextPropagator. This package will be removed in a future release.SimpleSpanProcessor.forceFlush() when a pending export fails #6771 @LarryHu0217TraceIdRatioBasedSampler #6890 @LarryHu0217The OpenCensus and OpenTracing compatibility requirements in the OpenTelemetry specification have been deprecated.
@opentelemetry/shim-opentracing package will be removed in SDK 3.x, planned for approximately September 2026.
PeriodicExportingMetricReader.forceFlush to prevent redundant concurrent export cycles. Concurrent calls to forceFlush will now await any ongoing export and reuse a fresh export cycle if one is started concurrently by another caller. This ensures the latest metrics are always exported efficiently without triggering duplicate collection and export cycles.BatchSpanProcessor constructor call signature has changed in "sdk-trace". For example, before new BatchSpanProcessor(exporter, { maxQueueSize: 1000 }), after new BatchSpanProcessor({ exporter, maxQueueSize: 1000 }). #6817SimpleSpanProcessor constructor call signature has changed in "sdk-trace". For example, before new SimpleSpanProcessor(exporter), after new SimpleSpanProcessor({ exporter, selfObsMeterProvider: ... }). #6504uber-trace-id / uberctx-* headers during extract @pichlermarcfeat(sdk-trace-base): pretty-print SpanImpl , Tracer , and BasicTracerProvider via util.inspect so they render through diag and console.log #6690 @mco
SpanImpl, Tracer, and BasicTracerProvider via util.inspect so they render through diag and console.log #6690 @mcollinahrTimeToSeconds #6449 @anuraagafix(core, api): defer trace state validation. Deprecate trace state implementation in api #6459 @david-luna
TraceState
set now returns the same TraceState instance if key/value are invalid or makes the while trace state invalid.unset now returns the same TraceState instance if key is not present.TraceStates has changed: when multiple keys with the same name are present, the most recent one will win.feat(sdk-logs): implement log creation metrics #6433 @anuraaga
fix(opentelemetry-instrumentation): improve _warnOnPreloadedModules function not to show warning logs when the module is not marked as loaded #6095 @r
_warnOnPreloadedModules function not to show warning logs when the module is not marked as loaded #6095 @rlj1202SpanOptions from API type to prevent drift #6478 @overbalanceattributePerEventCountLimit, attributePerLinkCountLimit, linkCountLimit, and attributeValueLengthLimit for event/link attributes #6479 @overbalanceimport type for type-only imports via ESLint #6467 @overbalanceSpan.{addEvent,addLink} performance #6516 @daniellockyer_warnOnPreloadedModules function not to show warning logs when the module is not marked as loaded #6095 @rlj1202SpanOptions from API type to prevent drift #6478 @overbalanceattributePerEventCountLimit, attributePerLinkCountLimit, linkCountLimit, and attributeValueLengthLimit for event/link attributes #6479 @overbalanceonCancelTask against terminal-state tasks to prevent infinite loop with rc-align (Ant Design) in React 16 dev mode #6512 @Renegade2345import type for type-only imports via ESLint #6467 @overbalanceSpan.{addEvent,addLink} performance #6516 @daniellockyerImportant: This fix is included in the "breaking changes" section because it can be breaking for some edge case usage of OTEL_RESOURCE_ATTRIBUTES:
OTEL_RESOURCE_ATTRIBUTES parsing to match spec changes (open-telemetry/opentelemetry-specification#4856) #6261 @jacksonweber
OTEL_RESOURCE_ATTRIBUTES:
export OTEL_RESOURCE_ATTRIBUTES=foo=bar,spam will now be fully ignored, because the spam entry is invalid (missing =). Per spec, any parsing error results in ignoring the entire environment variable.export OTEL_RESOURCE_ATTRIBUTES='wat=" spaces "' will now result in {"wat": "\" spaces \""} with the double-quotes included in the value. Before this change the implementation included brittle double-quoting to allow leading and trailing whitespace in the value. To support leading or trailing whitespace now, you must percent-encode the whitespace. Internal whitespace still works without encoding, e.g. export OTEL_RESOURCE_ATTRIBUTES='green=eggs and ham'.optimised flag in getElementXPath recursion #6335 @akkupratap323fix(opentelemetry-sdk-node): the custom value from env variable for service.instance.id should take priority over random uuid as backup #6345 @marylia
chore(context-async-hooks): Deprecate AsyncHooksContextManager #6298 @trentm
AsyncHooksContextManager #6298 @trentmfix(sdk-metrics): improve PeriodicExportingMetricReader() constructor input validation #6286 @cjihrig
feat(sdk-trace-base): implement on ending in span processor #6024 @majanjua-amzn
fix(core): avoid leaking Node.js types via unrefTimer() util #5986 @pichlermarc
unrefTimer() util #5986 @pichlermarcotperformance
otperformance.now() and otperformance.timeOrigin are not affected.performance implementation instead.feat(opentelemetry-resources): add schema url #5070 @c-ehrlich
startTime param to ExponentialHistogramAccumulation. This only impacted the closurescript compiler. #5763 @trentmstartTime param to ExponentialHistogramAccumulation. This only impacted the closurescript compiler. #5763 @trentmrefactor(core): migrate from deprecated semconv constants #5575 @alumni55748
Accessing resource attributes before async attributes settled warning when detecting resources #5546 @dyladan
sdk.start() as async #5617 @JacksonWeberparseKeyPairsIntoRecord() #5610 @cjihrigAccessing resource attributes before async attributes settled warning when detecting resources #5546 @dyladan
getNumberFromEnv should return number | undefined #5874 @shubham-vunetsdk.start() as async #5617 @JacksonWeberparseKeyPairsIntoRecord() #5610 @cjihrigparsePairKeyValue() #5885 @sivakumarscIf you accept MetricReader in your public interface, consider accepting the more general IMetricReader instead to avoid unintentional breaking changes
^18.19.0 || >=20.6.0. This means that support for Node.js 14 and 16 has been dropped.0.200.0 are compatible with this releaseparentSpanContext and remove parentSpanId from Span and ReadableSpan #5450 @JacksonWeber
Spans parentSpanId was replaced by parentSpanContext, to migrate to the new property, please replace span.parentSpanId -> span.parentSpanContext?.spanIdtype field on MetricDescriptor #5291 @chancancodeInstrumentDescriptor type; use MetricDescriptor instead #5277 @chancancode@opentelemetry/api peer dependency to 1.9.0 #5254 @chancancodeSpanAttributes with Attributes #5009 @david-lunaResourceAttributes with Attributes #5016 @david-lunaView and Aggregation in favor of ViewOptions and AggregationOption #4931 @pichlermarcnew Span constructor in favor of Tracer.startSpan API #5048 @david-lunaBasicTracerProvider.addSpanProcessor API in favor of constructor options. #5134 @david-lunaresource property private in BasicTracerProvider and remove getActiveSpanProcessor API. #5192 @david-lunaIMetricReader interface and use it over abstract class #5311
MeterProviderOptions now provides the more general IMetricReader type over MetricReaderMetricReader in your public interface, consider accepting the more general IMetricReader instead to avoid unintentional breaking changesBasicTracerProvider, the class offered multiple methods to facilitate the creation of exporters and auto-pairing with SpanProcessors.
SpanProcessors to the base class constructor when extending_registeredExporters has been removed_getSpanExporter has been removed_buildExporterFromEnv has been removedIdGenerator and RandomIdGenerator #5309 @pichlermarcInstrumentationLibrary #5308 @pichlermarc
InstrumentationScope insteadInstrumentationLibrary with InstrumentationScope #5308 @pichlermarc
Tracer.instrumentationLibrary -> Tracer.instrumentationScopeReadableSpan.instrumentationLibrary -> ReadableSpan.instrumentationScope
ReadableSpanReadableSpan.instrumentationScope over ReadableSpan.instrumentationLibrary #5308 @pichlermarcReadableSpan.instrumentationScope over ReadableSpan.instrumentationLibrary #5308 @pichlermarc5.0.4 #5145 @david-luna
typescript@<5.0.4typescript in minor releases. We will only drop support for versions that are older than 2 years.AlwaysOnSampler has moved to @opentelemetry/sdk-trace-baseAlwaysOffSampler has moved to @opentelemetry/sdk-trace-baseParentBasedSampler has moved to @opentelemetry/sdk-trace-baseTraceIdRatioSampler has moved to @opentelemetry/sdk-trace-baseattributes objectDetectedResource plain objects instead of new Resource()BasicTracerProvider#register().
OTEL_PROPAGATORS or window.OTEL_PROPAGATORS anymore, please pass the propagator to NodeTracerProvider#register() instead.BasicTracerProvider#register() will now fall back to defaults (tracecontext and baggage)NodeTracerProvider#register().
OTEL_PROPAGATORS anymore, please pass the propagator to NodeTracerProvider#register() instead.NodeTracerProvider#register() will now fall back to the defaults (tracecontext and baggage)NodeSDK from @opentelemetry/sdk-node.WebTracerProvider#register().
window.OTEL_PROPAGATORS anymore, please pass the propagator to WebTracerProvider#register() instead.WebTracerProvider#register() will now fall back to defaults (tracecontext and baggage)EXPORTER_FACTORY is not used anymore and has been removedPROPAGATOR_FACTORY is not used anymore and has been removedForceFlushState was intended for internal use and has been removedTracer class was unintentionally exported and has been removed
Tracer, please use BasicTracerProvider#getTracer(), NodeTracerProvider#getTracer() or WebTracerProvider#getTracer()Tracer, please use the Tracer type from @opentelemetry/api^18.19.0 || >=20.6.0. Support for Node.js 14, 16, and early minor versions of 18 and 20 have been dropped. This applies to all packages except the 'api' and 'semantic-conventions' packages. #5395 @trentm@opentelemetry/resource in favor of @opentelemetry/opentelemetry-browser-detector #5420VERSION was an internal constant that was unintentionally exported. It has been removed without replacement.isWrapped has been removed in favor of isWrapped from @opentelemetry/instrumentationShimWrapped has been removed in favor of ShimWrapped from @opentelemetry/instrumentationhexToBase64 was a utility function that is not used by the SDK anymore. It has been removed without replacement.hexToBinary was a utility function that now internal to @opentelemetry/otlp-tranformer. It has been removed without replacement.baggageUtils.getKeyParis was an internal utility function that was unintentionally exported. It has been removed without replacement.baggageUtils.serializeKeyPairs was an internal utility function that was unintentionally exported. It has been removed without replacement.baggageUtils.parseKeyPairsIntoRecord, has been removed in favor of parseKeyPairsIntoRecordbaggageUtils.parsePairKeyValue was an internal utility function that was unintentionally exported. It has been removed without replacement.TimeOriginLegacy has been removed without replacement.isAttributeKey was an internal utility function that was unintentionally exported. It has been removed without replacement.window.OTEL_* is now not supported anymore, please pass configuration options to constructors instead.window.OTEL_* is now not supported anymore, please pass configuration options to constructors instead.Resource class to ResourceImpl and makes it package-privateIResource interface to ResourceresourceFromAttributes to create a Resource from a DetectedAttributes objectdefaultResource to create a default resource #5467 @pichlermarcemptyResource to create an empty resource #5467 @pichlermarcwindow.OTEL_* is now not supported anymore
envDetector in browser environments, please migrate to manually creating a resource.ParentBasedAlwaysOnSampler over AlwaysOnSampler when bogus data is supplied to OTEL_TRACES_SAMPLER
getEnv(), getEnvWithoutDefaults() #5481 @pichlermarc
getEnv() has been replaced by getStringFromEnv(), getNumberFromEnv(), getBooleanFromEnv(), getStringListFromEnv()
getStringFromEnv("OTEL_FOO") ?? "my-default")getEnvWithoutDefaults() has been replaced by getStringFromEnv(), getNumberFromEnv(), getBooleanFromEnv(), getStringListFromEnv()DEFAULT_ENVIRONMENT has been removed, please inline any defaults from now on
ENVIRONMENT has been removed without replacementRAW_ENVIRONMENT has been removed without replacementparseEnvironment has been removed without replacementBasicTracerProvider#register() to improve tree-shaking #5503 @pichlermarc
BasicTracerProvider#register() has been removed
propagation.setGlobalPropagator() from @opentelemetry/apicontext.setGlobalContextManager() from @opentelemetry/api@opentelemetry/api, @opentelemetry/api-logs, @opentelemetry/api-events, and @opentelemetry/semantic-conventions #5456 @david-luna
DEFAULT_ATTRIBUTE_VALUE_LENTGHT_LIMIT has been removed, please use Infinity insteadDEFAULT_ATTRIBUTE_VALUE_COUNT_LIMIT has been removed, please use 128 insteadDEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT has been removed, please use 128 insteadDEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT has been removed, please use 128 insteadWebTracerProvider constructor now does not throw anymore when contextManager or propagator are passed as extra options to the constructordiagLogLevelFromString utility #5475 @pichlermarcurl.parse from node:url #5390 @chancancodePeriodicExportingMetricReader when there are no metrics to export. #5288 @jacksonweberInstrumentDescriptor type now extends MetricDescriptor; moved public InstrumentType type enum into ./src/export/MetricData.ts #5277Gauge and MetricAdvice workaround types in favor of the upstream @opentelemetry/api types #5254 @chancancodeBasicTracerProvider._registeredSpanProcessors private property. #5134 @david-lunaBasicTracerProvider.activeSpanProcessor private property. #5211 @david-lunamodule compiler option to node16. #5347 @david-lunasemver package with internal semantic versioning check implementation to get rid of semver package initialization overhead especially in the AWS Lambda environment during coldstart #5305 @serkan-ozal@opentelemetry/semantic-conventions dep to allow better de-duplication in installs #5439 @trentmNothing published for this version
Nothing published for this version
Nothing published for this version
fix(sdk-metrics): do not export from PeriodicExportingMetricReader when there are no metrics to export. #5288 @jacksonweber
feat(sdk-metrics): PeriodicExportingMetricReader now flushes pending tasks at shutdown #5242
feat(sdk-metrics): Add support for aggregation cardinality limit with a default limit of 2000. This limit can be customized via views #5128
feat(sdk-metrics, sdk-trace): add mergeResourceWithDefaults flag, which allows opting-out of resources getting merged with the default resource #4617
feat(sdk-metrics, sdk-trace): add mergeResourceWithDefaults flag, which allows opting-out of resources getting merged with the default resource #4617
true (no change in behavior)false will become the default behavior in the next major version in order to comply with specification requirementsfeat(sdk-trace-base): add spanProcessors property in TracerConfig interface. #5138 @david-luna
PeriodicExportingMetricReader when async resource attributes have not yet settled #5119 @pichlermarcfeat: add processors for adding session.id attribute to spans and logs #4972
status.message on Span#setStatus() #4999 @pichlermarcPeriodicExportingMetricReader #5006 @jj22ee@opentelemetry/propagator-aws-xray is now located in open-telemetry/opentelemetry-js-contrib@opentelemetry/propagator-aws-xray-lambda is now located in open-telemetry/opentelemetry-js-contrib@opentelemetry/api dependency min version to 1.3.0 in examples, experimental/packages, integration-tests and selenium-tests
#4992MetricsAttributes with Attributes #5021 @david-lunaSpanAttributes and MetricsAttributes with Attributes #5023 @david-lunanew Span in tests #5035 @david-lunaHTTP_REQUEST_METHOD_VALUE_POST), and METRIC_{name} for metrics. Exported names from previous versions are deprecated.
ATTR_{name} for attributes (e.g. ATTR_HTTP_REQUEST_METHOD), {name}_VALUE_{value} for enumeration values (e.g. HTTP_REQUEST_METHOD_VALUE_POST), and METRIC_{name} for metrics. Exported names from previous versions are deprecated.@opentelemetry/semantic-conventions for stable semantic conventions. Import @opentelemetry/semantic-conventions/incubating for all semantic conventions, stable and unstable.shimmer types to 1.2.0 #4865 @lforstgetEnv function #4799 @danstarnsrefactor(examples): added usage of @opentelemetry/semantic-conventions and @opentelemetry/resources to the examples in examples/opentelemetry-web for
refactor(resources): update deprecated semconv to use exported strings #4755 @JamieDanielson
fix(core): align inconsistent behavior of getEnv() and getEnvWithoutDefaults() when a process polyfill is used #4648 @pichlermarc
getEnv() and getEnvWithoutDefaults() when a process polyfill is used #4648 @pichlermarc
getEnvWithoutDefaults() would use process.env if it was defined when running in a browser, while getEnv() would always use _globalThis. Now both use _globalThis when running in a browser.@opentelemetry/resourcesgetEnv() and getEnvWithoutDefaults() when a process polyfill is used #4648 @pichlermarc
getEnvWithoutDefaults() would use process.env if it was defined when running in a browser, while getEnv() would always use _globalThis. Now both use _globalThis when running in a browser.@opentelemetry/resourcesfeat(sdk-trace-base): log resource attributes in ConsoleSpanExporter #4605 @pichlermarc
service.instance.id as random UUID. #4608 @maryliagservice.instance.id as random UUID. #4608 @maryliaggetEnv() and getEnvWithoutDefaults() when a process polyfill is used #4648 @pichlermarc
getEnvWithoutDefaults() would use process.env if it was defined when running in a browser, while getEnv() would always use _globalThis. Now both use _globalThis when running in a browser.perf(sdk-trace-base): do not allocate arrays if resource has no pending async attributes #4576 @Samuron
feat(sdk-metrics): allow single bucket histograms #4456 @pichlermarc
NaN value recordings in Histograms #4455 @pichlermarc
NaN on a histogram would result in the sum of bucket count values not matching the overall countMeter.createHistogram() with the advice explicitBucketBoundaries: [] would throwzone.js affected by https://github.com/angular/angular/issues/53507 would be pulled ininit() method public #4418NaN value recordings in Histograms #4455 @pichlermarc
NaN on a histogram would result in the sum of bucket count values not matching the overall countMeter.createHistogram() with the advice explicitBucketBoundaries: [] would throwzone.js affected by https://github.com/angular/angular/issues/53507 would be pulled indeprecates MeterProvider.addMetricReader() please use the constructor option readers instead.
MeterProvider.addMetricReader() please use the constructor option readers instead.feat(sdk-trace-base): improve log messages when dropping span events #4223 @mkubliniak
feat: add node 20 support #4336 @dyladan
fix(sdk-metrics): hand-roll MetricAdvice type as older API versions do not include it #4260
feat(metrics): prototype experimental advice support #3876 @legendecas
fix(sdk-trace-base): BatchSpanProcessor flushes when maxExportBatchSize is reached #3958 @nordfjord
maxExportBatchSize is reached #3958 @nordfjordMetricReader instances are registered to a MeterProviderThis feature was an unintentional breaking change introduced with API 1.5.0
…which introduced an unintentional breaking change. This change was rolled back in https://github.com/open-telemetry/opentelemetry-js/releases/tag/v1.1…
[!WARNING] This release widened the range of the API peer dependency to include
@opentelemetry/api@1.5.x, which introduced an unintentional breaking change. This change was rolled back in https://github.com/open-telemetry/opentelemetry-js/releases/tag/v1.17.0.
fix(core): stop rounding to nearest int in hrTimeTo*seconds() functions #4014 @aabmass
Revert "feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914)" #4011 @dyladan
fix(opentelemetry-exporter-prometheus): Update default PrometheusExporter to not append a timestamp to match the text based exposition format #3961 @J
feat(SpanExpoter): Add optional forceFlush to SpanExporter interface #3753 @sgracias1 @JacksonWeber
feat(core): add environment variables for OTLP log exporters. #3712 @llc1123
feat(tracing): log span name and IDs when span end is called multiple times #3716
feat(sdk-metrics): add exponential histogram support #3505, #3506 @mwear
parseUrl() respect document.baseURI #3670 @domasx2parseUrl() respect document.baseURI #3670 @domasx2fix(resource): make properties for async resource resolution optional #3677 @pichlermarc
feat(resource): create sync resource with some attributes that resolve asynchronously #3460 @samimusallam
fix: avoid grpc types dependency #3551 @flarna
feat(instrumentation-grpc): set net.peer.name and net.peer.port on client spans #3430
service.nametelemetry.sdk.nametelemetry.sdk.languagetelemetry.sdk.versionservice.nametelemetry.sdk.nametelemetry.sdk.languagetelemetry.sdk.version@opentelemetry/api-metrics has been merged into @opentelemetry/api and deprecated
@opentelemetry/sdk-metrics has been promoted to stable@opentelemetry/api-metrics has been merged into @opentelemetry/api and deprecatedfix(sdk-trace-base): make span start times resistant to hrtime clock drift #3129
fix(sdk-trace-base): make span start times resistant to hrtime clock drift #3129
fix(sdk-trace-base): validate maxExportBatchSize in BatchSpanProcessorBase #3232
perf(opentelemetry-core): improve hexToBase64 performance #3178
@opentelemetry/api #3177 @dyladanonce can be removed using removeListener
#3133@opentelemetry/api #3177 @dyladanonce can be removed using removeListener
#3133feat(sdk-trace-base): Improve extensibility of BasicTracerProvider #3023 @Rauno56
fix(resources): fix browser compatibility for host and os detectors #3004 @legendecas
fix(resources): fix browser compatibility for host and os detectors #3004 @legendecas
chore: remove unused InstrumentationConfig#path #2944 @flarna
fix: sanitize attributes inputs #2881 @legendecas
chore(deps): update actions/stale action to v5 by @renovate-bot in https://github.com/open-telemetry/opentelemetry-js/pull/2842
Full Changelog: https://github.com/open-telemetry/opentelemetry-js/compare/v1.1.0...v1.1.1
Your coding agent can read these notes before it upgrades. Set up the MCP server →