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
- Active maintenance: The repository shows very recent
updates(latest on 2026-08-10, with additional updates on 2026-08-07), indicating it is actively maintained as of today (2026-08-11). - Update cadence: The most recent few updates are spaced by about 2 to 3 days, suggesting an ongoing, relatively steady development cadence rather than a long quiet period.
AI summary generated
Recent updates
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.