Jiti is a Node.js runtime tool that provides seamless TypeScript and ESM support, including interoperability between ESM and CommonJS. It can load TypeScript/ESM files via async APIs similar to `import()` or via a sync API similar to `require()`, and it supports features like ESM loader registration, filesystem transpile caching, and custom module resolution (including aliases).
Project status
- Actively maintained, with recent update activity (last upstream push on 2026-06-08) and multiple versioned updates across 2025 to 2026, indicating ongoing development of the Runtime TypeScript and ESM support for Node.js.
- Update cadence appears fairly regular but not strictly monthly, with v2.7.0 on 2026-05-05, then prior updates clustered in late September and early October 2025 (v2.6.0 on 2025-09-22, v2.6.1 on 2025-10-01).
AI summary generated Today
Recent updates
v2.7.0
1 month agojiti v2.7.0 adds explicit resource management support, opt-in tsconfigPaths, virtual modules, and a new `jiti/static` export. It also improves performance by caching `interopDefault` proxy property access, and hardens ESM evaluation by adding a temp-file fallback for ENAMETOOLONG scenarios. Several additional configuration hooks and behavior details were added in code beyond what the release notes explicitly call out.
Featuresv2.6.1
8 months agov2.6.1 primarily fixes an interop edge case where passthrough of a module default could behave incorrectly when the default export is a Promise. The release also reverts the build minimizer back to terser-webpack-plugin. Code changes include new tests/fixtures to cover Promise-based default exports and some build tool configuration updates.
v2.6.0
8 months agov2.6.0 focuses on performance and interoperability fixes, notably lazy loading the Babel transformer to reduce startup overhead. The build system is migrated from webpack to rspack, and several runtime edge cases were corrected for CJS/ESM interop and node: specifiers.
Featuresv2.5.1
10 months agov2.5.1 is a small interop-focused patch release. The documented change fixes how the library handles promise-based modules during default export interop. The rest of the diff appears to be test and snapshot updates to cover the new behavior.
v2.5.0
10 months agov2.5.0 adds support for rebuilding the filesystem cache via a new `rebuildFsCache` option and introduces FIPS-aware hashing for cache entries. It also improves interop behavior when a module has a `default` export that is `null` or `undefined`, and adds handling for `require(<json>)` in register mode. The release also updates the bundled dependencies and refreshes JSDoc and test coverage behavior.
Featuresv2.4.2
12/17/2024Release v2.4.2 is described as a small patch focused on cache behavior changes (adding a +map suffix to fs cache entries when sourceMaps are enabled) and a Node.js 22.12+ compatibility tweak related to require cache usage. However, the provided code diff shows much broader internal refactoring and new runtime entrypoints/loaders that are not mentioned in the release notes.
v1.21.7
12/17/2024v1.21.7 is presented as a Node.js compatibility fix focused on how jiti uses Node's native require cache. The code changes also include additional module specifier updates (removing node: protocol usage) and several CI/tooling and dependency updates.
v2.4.1
11/29/2024v2.4.1 is a small patch release focused on improving how the library interoperates with modules whose default export is a primitive value. It also includes dependency/tooling updates in the repo.
v2.4.0
11/1/2024v2.4.0 primarily introduces a typed generic form for `jiti.import<T>` and improves module resolution so `.ts` targets can be resolved when requested with a `.js` extension from JS files. The code diff also includes several CI and test execution adjustments (not covered in the provided release notes) plus a large dependency and lockfile update.
Featuresv2.3.3
10/7/2024v2.3.3 contains a fix to ensure eval falls back properly, plus a refactor intended to remove unused exports. The code diff shows several named exports were removed or converted to non-exported declarations, which is not described in detail in the release notes.