tsx (TypeScript Execute) is a tool for running TypeScript in Node.js. It provides a CLI and watch-oriented workflow and is associated with Node, ESM, and TypeScript, with documentation available at https://tsx.hirok.io.
Project status
- Actively maintained: The repo shows ongoing updates in August 2026, with the latest upstream push on 2026-08-30 and multiple tagged updates following within that month.
- Update cadence: At least several updates spread across late July/early August, with a steady stream of small bug fixes (roughly every few days in the most recent cluster, then a final update on 2026-08-30).
AI summary generated
Recent updates
v4.23.13
v4.23.13 includes a cache-related bug fix described in the release notes as bounding the shared transform cache memory. The code diff shows a substantial rewrite of the transform file cache implementation, not only memory bounding, but also changing how disk cache lookup and cleanup work.
v4.23.12
v4.23.12 fixes CommonJS transforms so that `import.meta` is correctly shimmed even when the `import.meta` tokens are split by comments or newlines. The change updates the transform logic to detect `import.meta` more robustly than a simple string check, and adds/extends test coverage to validate the behavior.
v4.23.11
v4.23.11 contains a targeted bug fix related to how tsx handles `require()` of ESM when the ESM graph includes top-level await. The change primarily preserves Node-style fallback behavior by adjusting the error metadata surfaced from the transform step.
v4.23.10
v4.23.10 is a small bug fix release focused on improving compatibility with nyc coverage discovery. The diff is minor (4 files changed, +39 lines, -4 lines), with the only functional code change in the CJS module extensions logic.
v4.23.9
v4.23.9 includes fixes aimed at source-map correctness in Node's test runner, and improved support for importing TypeScript modules from `data:` URLs via `tsImport`. The code changes go beyond the two short release-note bullets by adding special-case handling for `data:` URL metadata, including how the `tsx-namespace` marker is encoded and removed.
v4.23.8
v4.23.8 focuses on resolver correctness in ESM scenarios involving package subpaths and dependency export shapes. The release notes describe two bug fixes, both framed as preserving Node-like behavior for package subpath resolution and typeless ESM dependency exports.
v4.23.7
v4.23.7 ships a bug fix intended to prevent cache collisions in tsImport/register workflows. The implemented change replaces timestamp-based cache busting with a per-registration unique id derived from node:crypto.randomUUID().
v4.23.6
v4.23.6 primarily fixes how tsx preserves resolver URL metadata (query strings and similar metadata) and how TypeScript extension resolution interacts with tsconfig allowJs. The changes also refactor the extension-resolution logic used by both the CJS module resolver patch and the ESM resolve hook.
v4.23.5
v4.23.5 includes a fix to detect when Node's inspector is enabled through NODE_OPTIONS (not just via process.execArgv). The code change updates how the inspector flag is detected for transform/esbuild options.
v4.23.4
v4.23.4 includes a CLI bug fix aimed at graceful shutdown behavior when developers register async `process.once('SIGINT', ...)` handlers. The change ensures the async cleanup logic has a chance to complete instead of the process shutting down too early.
v4.23.3
v4.23.3 includes a bug fix intended to preserve the overload semantics of process.listenerCount when tsx injects relay (hidden) signal handlers. The change ensures listenerCount(eventName) and listenerCount(eventName, listener) report counts that are not skewed by the hidden handler logic.