@opentelemetry/sdk-metrics
3.0.0 · 20 Oct 2026Apache-2.038.4M / weekRepositoryHomepagenpmAtom feed
52 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
- 3.x · latest line
3.0.0
20 Oct 2026- breaking
sdk-trace-node: remove the
@opentelemetry/sdk-trace-nodepackage #7054 - breaking
shim-opentracing: remove the
@opentelemetry/shim-opentracingpackage - breaking
context-async-hooks: remove the unused class
AsyncHooksContextManager#7078
Summary
The minimum supported Node.js has been raised to
>=22.15.0. This means that support for Node.js 18 and 20 has been dropped.The public interface has changed
for notes on migrating to 3.x / 0.300.x see the upgrade guide
Only experimental versions
0.300.0are compatible with this release
:boom: Breaking Changes
- breaking
sdk-trace-node: remove the
@opentelemetry/sdk-trace-nodepackage #7054The sdk-trace-node package has been replaced by the
@opentelemetry/sdk-tracepackage.
See the 3.x migration guide for full migration instructions.
- breaking
shim-opentracing: remove the
@opentelemetry/shim-opentracingpackageIn the OpenTelemetry Specification v1.58.0 the OpenTracing compatibility requirements were deprecated. The JavaScript OpenTracing shim package will not receive any more releases after the current 2.11.0 release (source code for last release).
- breaking
context-async-hooks: remove the unused class
AsyncHooksContextManager#7078 - breaking
migrate package builds from
tsctotsdown, emitting dual CJS/ESM output from a singledist/directory and declaring anexportsmap on every package #6293Importing a package by its name is unaffected in both CommonJS and ESM, as is every subpath listed in its
exportsmap.Deep imports into the build output no longer resolve. An
exportsmap is an allowlist that Node.js and bundlers enforce, so specifiers such as@opentelemetry/core/build/src/...or@opentelemetry/core/build/esm/...now fail withERR_PACKAGE_PATH_NOT_EXPORTED. Rewriting them to the new file layout does not help — unlisted subpaths are rejected whether or not the file exists.The emitted files moved out of
build/src(CJS),build/esmandbuild/esnext(ESM) intodist/, using.cjs/.mjsextensions with matching.d.cts/.d.mtsdeclarations.<package>/package.jsonis no longer importable for the same reason. Read a package's version from your own dependency metadata, or useSDK_INFOfrom@opentelemetry/corefor the SDK version.The non-standard
esnextentry point has been removed; tools that preferred it fall back tomodule(ESM) ormain(CJS).Packages that ship separate Node.js and browser implementations export them under explicit subpaths, for example
@opentelemetry/core/platform. If you depend on something that is only reachable through a deep import, please open an issue so it can be considered for the public API.
- breaking
core: remove deprecated
getTimeOrigin,otperformance,_globalThis, andunrefTimerfrom@opentelemetry/core#7053getTimeOrigin()— useperformance.timeOrigindirectly.otperformance— use the globalperformanceobject directly._globalThis— useglobalThisdirectly.unrefTimer(timer)— calltimer.unref()directly in your own code.
- breaking
sdk-trace: remove deprecated
TracerProviderOptions.forceFlushTimeoutMillis#7057Pass
timeoutMillistoprovider.forceFlush({ timeoutMillis })instead. The default timeout is 30000ms.
- breaking
propagator-jaeger: remove
@opentelemetry/propagator-jaegerpackage #7077The Jaeger propagator is deprecated by the OpenTelemetry specification in favour of
W3CTraceContextPropagator. UseW3CTraceContextPropagatorfrom@opentelemetry/coreinstead.See the 3.x migration guide for full instructions.
- breaking
exporter-jaeger: remove
@opentelemetry/exporter-jaegerpackageThe Jaeger exporter has been removed. Jaeger has deprecated its custom Thrift collection protocols in favor of standard OpenTelemetry Protocol (OTLP). Use standard OTLP exporters instead.
See the 3.x migration guide for full instructions.
- breaking
bump minimum node.js version to >=22.15.0
- breaking
sdk-trace-base, sdk-trace-web: remove the
@opentelemetry/sdk-trace-baseand@opentelemetry/sdk-trace-webpackages #7117The sdk-trace-base, sdk-trace-web, and sdk-trace-node packages have been replaced by the
@opentelemetry/sdk-tracepackage.
See the 3.x migration guide for full migration instructions.
- breaking
replace the
browserfield inpackage.jsonwith#platformsubpath imports #7141Resolvers with the
nodecondition load the Node.js build; all others load the browser build. Bundlers withoutimportssupport fail; see the migration guide.webpack needs 5.54 or later. Parcel needs package exports enabled and cannot resolve
#platformfromrequire().Root type declarations describe the Node.js build.
- breaking
resources: remove the
./detectors/platformand./detectors/platform/browsersubpath exports; import from the package root #7141 - breaking
core, sdk-trace, sdk-logs, exporter-zipkin: remove the
./platformand./platform/browsersubpath exports; import from the package root #7141 - breaking
sdk-logs: replace
LoggerConfig.disabledwithenabledto match the specification #7160Replace
disabled: truewithenabled: false, anddisabled: falsewithenabled: true. Loggers remain enabled by default.
:rocket: Features
sdk-metrics: stabilize
maxExportBatchSizeoption inPeriodicExportingMetricReadersdk-trace, sdk-logs: add the browser-only
disableAutoFlushOnDocumentHidetoBatchSpanProcessorOptionsandBatchLogRecordProcessorOptions, deprecateBatchSpanProcessorBrowserOptionsandBatchLogRecordProcessorBrowserOptions#7140
:bug: Bug Fixes
sdk-metrics: guard against a missing or empty name to MeterProvider#getMeter #7105
resolve the ESM build through the
defaultexport condition instead ofimport, so a resolver that activates neitherimportnorrequirestill finds an entry point #7132sdk-trace: make the Node.js
RandomIdGeneratorid generators prototype methods, so subclasses can override them #7190sdk-logs: report a rejected document-hide flush to the global error handler #7187
sdk-trace: count attributes passed to
startSpantowardattributeCountLimit#7176resources: stop reading
globalThis.processin the browser build #7173core: return
falseinstead ofundefinedfrom the browsergetBooleanFromEnv#7188core: no longer drop an attribute value that is an object that has
undefinedproperties #7207isAnyValue()now returns true for{aStr: 'bob', anUndefined: undefined}. This restores the behavior of the oldisLogAttributeValuefrom version 2.x of thesdk-logspackage."Cleaning" of attributes, by
cleanAttributes()andmaybeAddAttribute(), will now drop undefined properties from objects. For example,logger.emit(attributes: {myAttr: {aStr: 'bob', anUndefined: undefined}, ...)will includeattributes: {myAttr: {aStr: 'bob'}}.
:house: Internal
ci: support releasing from maintenance branches #6767
The API documentation site is only redeployed for releases whose commit is reachable from
main, so a maintenance release no longer overwrites it.
verify-pack: read the npm 12
pack --jsonoutput, which is keyed by package name instead of an array #7133karma: resolve plugins and the
processshim from the repo root, so browser tests run with isolated installs #7137nx: key the
versiontarget defaults by the target name, so a cache hit restores the generatedsrc/version.ts#7134nx: make the
test,test:browserandtest:webworkertargets compile their dependencies first, since tests load dependencies from theirdist#7139verify-pack: extract tarballs under the root
node_modules, so workspace dependencies resolve and entry points load fully instead of being skipped #7138
- 2.x
2.11.0
31 Aug 2026context-async-hooks: implement
attach()onAsyncLocalStorageContextManager#6845sdk-trace: allow configuring the force flush timeout per call #6929 @LarryHu0217
sdk-metrics: ignore
Infinityin exponential histograms #7015
:rocket: Features
context-async-hooks: implement
attach()onAsyncLocalStorageContextManager#6845On Node.js 25.9+, delegates to
AsyncLocalStorage.withScope()returning a nativeRunScope. On older Node.js, falls back toenterWith()with a manual disposable wrapper.
sdk-trace: allow configuring the force flush timeout per call #6929 @LarryHu0217
:bug: Bug Fixes
sdk-metrics: ignore
Infinityin exponential histograms #7015
:house: Internal
2.10.0
21 Jul 2026Reading the note…
2.9.0
2 Jul 2026Reading the note…
2.8.0
11 Jun 2026Reading the note…
2.7.1
29 Apr 2026Reading the note…
2.7.0
17 Apr 2026Reading the note…
2.6.1
25 Mar 2026Reading the note…
2.6.0
3 Mar 2026Reading the note…
2.5.1
12 Feb 2026Reading the note…
2.5.0
21 Jan 2026Reading the note…
2.4.0
14 Jan 2026Reading the note…
2.3.0
8 Jan 2026Reading the note…
2.2.0
21 Oct 2025Reading the note…
2.1.0
4 Sep 2025Reading the note…
2.0.1
15 May 2025Reading the note…
2.0.0
17 Mar 2025Reading the note…
- 1.x
1.30.1
14 Jan 2025Reading the note…
1.30.0
18 Dec 2024Reading the note…
1.29.0
4 Dec 2024Reading the note…
1.28.0
18 Nov 2024Reading the note…
1.27.0
23 Oct 2024Reading the note…
1.26.0
28 Aug 2024Reading the note…
1.25.1
20 Jun 2024Reading the note…
1.25.0
5 Jun 2024Reading the note…
1.24.1
7 May 2024Reading the note…
1.24.0
24 Apr 2024Reading the note…
1.23.0
3 Apr 2024Reading the note…
1.22.0
29 Feb 2024Reading the note…
1.21.0
26 Jan 2024Reading the note…
1.20.0
15 Jan 2024Reading the note…
1.19.0
14 Dec 2023Reading the note…
1.18.1
8 Nov 2023Reading the note…
1.18.0
7 Nov 2023Reading the note…
1.17.1
10 Oct 2023Reading the note…
1.17.0
12 Sep 2023Reading the note…
1.16.0
11 Sep 2023Reading the note…
1.15.2
8 Aug 2023Reading the note…
1.15.1
24 Jul 2023Reading the note…
1.15.0
6 Jul 2023Reading the note…
1.14.0
6 Jun 2023Reading the note…
1.13.0
11 May 2023Reading the note…
1.12.0
13 Apr 2023Reading the note…
1.11.0
30 Mar 2023Reading the note…
1.10.1
20 Mar 2023Reading the note…
1.10.0
13 Mar 2023Reading the note…
1.9.1
30 Jan 2023Reading the note…
1.9.0
11 Jan 2023Reading the note…
1.8.0
9 Nov 2022Reading the note…