NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4884 most downloaded on npm
Node.js client for StatsD, DogStatsD, and Telegraf
Last release 21 days ago
13 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
115 releases · first in 2015
@erulabs Reuse formatted tag strings in overrideTags to avoid splitting and reconstructing values, while preserving tag sanitization, overrides, and d
overrideTags to avoid splitting and reconstructing values, while preserving tag sanitization, overrides, and duplicate-key ordering.@bdeitte Parse whitespace-delimited DD_TAGS / DATADOG_TAGS values: when the value contains no comma, whitespace is used as the separator, matching dd-
One column per quarter.
@KeenanLawrenceStitch Fix UDS graceful restart never firing for unix-dgram errors: udsErrors() now includes the negative numeric errno codes (e.g. -11
udsErrors() now includes the negative numeric errno codes (e.g. -111 on Linux, -54 on Darwin) that unix-dgram sets on err.code, alongside the existing string codes. See #322@bdeitte Add opt-in client-side aggregation of counts, gauges and sets via the aggregation option, for better parity with official DogStatsD clients b
aggregation option, for better parity with official DogStatsD clients but also for use with any StatsD, DogStatsD or Telegraf client. This includes an aggregation maxContexts option (default 5000) bounding the number of live aggregation contexts; new contexts beyond the cap are sent directly with a one-time warning.flush() method to send buffered metrics (and any pending aggregated metrics) immediately, useful for serverless and other short-lived environmentsnpm audit fixThe uds protocol alone does not auto-enable Datadog mode or telemetry. This is a breaking change because clients running in a Datadog environment (e.g…
datadog option (explicit true/false, or auto-detected from DD_AGENT_HOST/DD_ENV/other DD_* signals) enables:
|c:. Configurable via originDetection, containerID, and DD_ORIGIN_DETECTION_ENABLED.DD_EXTERNAL_ENV and sent as |e:.cardinality option or DD_CARDINALITY/DATADOG_CARDINALITY) plus a per metric/event/check cardinality option, sent as |card:.includeDatadogTelemetry) can be enabled like before. But it also now defaults to on whenever Datadog mode is active — an explicit datadog: true or a DD_* env var. The uds protocol alone does not auto-enable Datadog mode or telemetry.
This is a breaking change because clients running in a Datadog environment (e.g. with DD_AGENT_HOST set) will auto-detect Datadog mode and begin emitting the new |c:/|e: wire fields and client telemetry. Opt out with datadog: false, originDetection: false, and/or includeDatadogTelemetry: false. Non-Datadog (StatsD/Telegraf) usage is unaffected.@bdeitte A number of updates to improve callback and error handling:
close()\r in metric names, tag keys, and tag values alongside newlines, since some receivers split lines on \r and could otherwise be tricked into accepting injected metricsfiles allowlist to package.json so npm publishes only index.js, index.mjs, lib/, and the TypeScript definitionsuuid to 14.x to fix GHSA-w5hq-g745-h8pq and add diff override to ^8.0.3 to resolve GHSA-73rr-hh4g-fpgx transitively pulled in via mocha and sinon.port, sampleRate, bufferFlushInterval config values and use default config valuesfor-of over array routes, simpler EAGAIN access, dedup Buffer.byteLength in sendMessage@72636c Omit Claude and GitHub dev files from bundle
@bdeitte Add ESM support via exports field in package.json and index.mjs wrapper, enabling import StatsD from 'hot-shots' in ES module projects
exports field in package.json and index.mjs wrapper, enabling import StatsD from 'hot-shots' in ES module projects@bdeitte Upgrade mocha from 10.x to 11.x and fix all dev dependency security vulnerabilities (serialize-javascript, ajv)
@bdeitte Version 14.1.0 published without a README for an unknown reason. Ensuring everything is reset locally and running publish again to attempt to
@bdeitte Fill in some missing areas for automated tests
@bdeitte Fix methods losing parameters when given empty object for sampleRate. Fixes #43
ctx parameter as the last argument. Fixes #202@boblauer Calculate buffer and message size in a way that accounts for non-ASCII characters
@bdeitte Add documentation for OpenTelemetry Collector StatsD receiver compatibility
|, :, \n, #, and , in metric names or tags are now replaced with _ to prevent malformed packets.@bdeitte Breaking: Prefix and suffix now automatically include period separators if needed. If you specify prefix: 'myapp', it will be normalized to '
prefix: 'myapp', it will be normalized to 'myapp.'. Similarly, suffix: 'prod' becomes '.prod'. This ensures metrics like myapp.request.time instead of myapprequest.time. If your prefix/suffix already includes the period, no change is needed.::1 will automatically use udp6 sockets, fixing issues on Node.js 17+ where localhost may resolve to IPv6.sampleRate, tags, and timestamp properties. Timestamp can be a Date object or Unix seconds.@bdeitte Add client-side telemetry support with includeDatadogTelemetry option (disabled by default and in beta) and telemetryFlushInterval
includeDatadogTelemetry option (disabled by default and in beta) and telemetryFlushInterval@bdeitte event calls now use prefix and suffix
@bdeitte Add debug logging that can be enabled with "NODE_DEBUG=hot-shots"
@bdeitte Revert some buffering code to fix tag duplication issue seen with Datadog
@manishrjain Add retry mechanism for UDS with udsRetryOptions
@bdeitte Revert change to improve memory/performance of overrideTags and add more tests
@bdeitte Add more tests for uncovered areas
@bdeitte Stop testing much older Node.js versions and test latest: now testing Node 16 to Node 24
@thiago-negri Add 'includeDataDogTags' property to 'ClientOptions' type
@thiago-negri Add option 'includeDataDogTags'
@matteosb Handle synchronous socket.send error in sendUsingDnsCache
@lachlankidson Add gaugeDelta function
@imyourmanzi In TypeScript, narrow callback parameter types
@albert-mirzoyan add stream property type to ClientOptions
@hjr3 Add udpSocketOptions to control how UDP socket is created
@zhyu Append standard Datadog tags from env vars (DD_ENTITY_ID, DD_ENV, DD_SERVICE, and DD_VERSION)
@cesarfd Add TCP reconnections, similar to how it's done for UDS. Enabled by default and configurable through tcpGracefulErrorHandling/tcpGracefulRest
@amc6 TypeScript: add missing decrement overload type
@tim-crisp TypeScript: add stream to protocol string union type
@maxday Add a closingFlushInterval option which allows stopping quicker
@roim Use errorHandler when possible on UDS socket replace error
@cmaddalozzo Close unix domain socket after unsuccessful attempts to connect
@dvd-z Fix date_happened to allow usage of numbers
@chotiwat Handle UDS errors occurring when sending metrics
@stephenmathieson Make close callback optional in TypeScript definition
@dhermes Making UDS error handling and recovery more robust. Note these look to be ok in a minor release but are signficant upgrades to how UDS works.
@maleblond Support multiple values for the same tag key
…speed up sending metrics. This should be a non-breaking change, but bumping to a major version for it given it's a very base change to the library.
@ralphiech Add missing error handler when socket is not created
@DerGut Fix udsGracefulErrorHandling default value
@tebriel Add asyncDistTimer function
@Impeekay Add date type to timing function
@benblack86 Unreference underlying socket/interval to prevent process hangs
* @kazk Fix types for set/unique
@lbeschastny Sanitize ',' tags characters for telegraf
@MichaelSitter add tagPrefix and tagSeparator options
@marciopd Use Date.now() instead of new Date()
@dependabot Bump acorn from 6.3.0 to 6.4.1
@wision Actually fix cachedDns with udp
@tomruggs Remove support for Node 6- now supporting Node 8.x or higher
@mrknmc Fix TypeError when increment called without a callback argument
@ericmustin callback is not properly passed bytes argument
@bdeitte Fix for socket on reading when cacheDns and udp in use
* @bdeitte Fix cacheDns with udp
@gleb-rudenko Fix StatsD constructor typing
Your coding agent can read these notes before it upgrades. Set up the MCP server →