unstale

npm / pino

pino

What changed in pino 9 to 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.

2 breaking2 security1 deprecations6 new APIs and options1 performance3 behavior and defaults12 fixes and other

pino 1024 changes

Breaking changes 1

  • The censor function signature now uses safer types, which may require type adjustments.

    10.1.0release notes

Security 2

  • Invalid NODE_OPTIONS preloads are sanitized for workers, preventing invalid preload configuration from affecting worker execution.

    10.3.1release notes

  • Transport loading is hardened against prototype pollution.

    10.1.1release notes

Deprecations 1

  • Pino warns when formatters.level is incompatible with multi-target transports.

    10.4.0release notes

New APIs and options 5

  • The browser logger now provides bindings().

    10.4.0release notes

  • The browser logger now supports redaction configuration.

    10.4.0release notes

  • The browser logger now provides setBindings.

    10.4.0release notes

  • Browser logging adds reportCaller to expose the user's callsite.

    10.1.1release notes

  • Pino now uses @pinojs/redact for redaction.

    10.1.0release notes

Performance 1

  • The fast path uses JSON.stringify on Node.js 25 and newer.

    10.1.1release notes

Behavior and default changes 2

  • The return type of multistream().clone() was improved.

    10.3.0release notes

  • Worker threads now have a name to support transport identification.

    10.3.0release notes

Fixes and other changes 12

  • Child binding keys are escaped correctly.

    10.4.0release notes

  • A named default export is now available.

    10.4.0release notes

  • multistream clone/add no longer crashes, and missing end/remove methods are fixed.

    10.4.0release notes

  • Logging objects with an own __proto__ key no longer crashes.

    10.4.0release notes

  • Redaction shapes are built without Object.prototype.

    10.4.0release notes

  • Per-target level filtering is now honored for a single-element targets array.

    10.4.0release notes

  • multistream write now resolves string level labels correctly.

    10.4.0release notes

  • Prevents ERR_WORKER_INVALID_EXEC_ARGV when using monitoring tools.

    10.2.1release notes

  • Prevents a memory leak when using transport with --import preload.

    10.2.0release notes

  • Conditional type handling for generic log function arguments was corrected.

    10.1.1release notes

  • The %o placeholder now accepts strings, numbers, and null values.

    10.1.1release notes

  • isoTimeNano is now available in nested namespaces.

    10.1.0release notes

pino 93 changes

Breaking changes 1

  • Reverts the setlevel option in the 9.x release line, so configurations relying on it should no longer use it.

    9.14.0release notes

New APIs and options 1

  • Adds the LogFnFields type for developers using Pino's logging function types.

    9.14.0release notes

Behavior and default changes 1

  • Updates the redaction implementation used by Pino, potentially changing redaction behavior for applications that configure it.

    9.14.0release notes