# pm2 v7.0.4 - Product: pm2 (https://whatsnew.fyi/product/pm2) - Vendor: Unitech - Date: 2026-08-24 - Version: v7.0.4 - Original notes: https://github.com/Unitech/pm2/releases/tag/v7.0.4 - Permalink: https://whatsnew.fyi/product/pm2/releases/v7.0.4 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Start .ts apps with Node.js native type stripping when bun is not installed (Node.js >= 22.18 / 23.6, --experimental-strip-types auto-injected on 22.6+) with ts-node fallback now resolved from the app's own dependencies - **fixed** — Fix pm2 start --container / --container --dist crashing with Cannot find module due to wrong require depth in Containerizer.js - **fixed** — Bump js-yaml 4.3.0 → 4.3.1 - **fixed** — Fix overlapping reloads colliding on the _old_ slot and orphaning a cluster worker by refusing a reload while one is in progress - **fixed** — Ignore stale exit events from a replaced process to fix double start on Windows with shutdown_with_message - **fixed** — Fix retrying in NaNms kill log and ~1ms poll spam when kill_retry_time is unset by falling back to KILL_RETRY_TIME constant (100ms, overridable via PM2_KILL_RETRY_TIME) - **fixed** — Fix pm2 start/restart RPC hanging forever when a cluster worker dies before its online event by having executeApp conclude on exit-before-online - **fixed** — Surface the daemon's actual error in CLI output instead of masking everything as Process not found - **changed** — Pin OpenTelemetry package versions in pm2 install-otel and re-emit legacy HTTP span tags (http.method, http.status_code, http.target) dropped by @opentelemetry/instrumentation-http >= 0.220 - **removed** — Remove dead code including promise.min.js polyfill, IsAbsolute.js, unused Java/Ruby Dockerfile templates, and always-false win64 platform checks ##### 7.0.4 ###### Features - Start `.ts` apps with Node.js native type stripping when bun is not installed (Node.js >= 22.18 / 23.6, `--experimental-strip-types` auto-injected on 22.6+); `ts-node` fallback now resolved from the app's own dependencies ###### Bug Fixes - Fix `pm2 start --container` / `--container --dist` crashing with `Cannot find module` — wrong require depth in `Containerizer.js` from the v7 promptly internalization - Bump `js-yaml` 4.3.0 → 4.3.1 - Fix overlapping reloads colliding on the `_old_` slot and orphaning a cluster worker — a reload is now refused while one is in progress #6129 - Ignore stale exit events from a replaced process — fixes double start on Windows with `shutdown_with_message` #6142 - Fix `retrying in NaNms` kill log and ~1ms poll spam when `kill_retry_time` is unset — fallback to `KILL_RETRY_TIME` constant (100ms, `PM2_KILL_RETRY_TIME` overridable) - Fix `pm2 start`/`restart` RPC hanging forever when a cluster worker dies before its `online` event (bad `node_args`, boot OOM) — executeApp now concludes on exit-before-online - Surface the daemon's actual error in CLI output instead of masking everything as `Process not found` - Pin OpenTelemetry package versions in `pm2 install-otel` and re-emit legacy HTTP span tags (`http.method`, `http.status_code`, `http.target`) dropped by `@opentelemetry/instrumentation-http` >= 0.220 ###### Core Refactor - Remove dead code: `promise.min.js` polyfill (native `Promise`), `IsAbsolute.js` (native `path.isAbsolute`), unused Java/Ruby Dockerfile templates, always-false `win64` platform checks