v1.14.0
honojs/honov1.14.0Apr 26, 2026by yamadashy
AI Summary
A major performance overhaul that reduces repository packing time by approximately 58% (from 3.3s to 1.4s) through various optimizations including pipeline parallelization and startup improvements.
Key Highlights
- Pack time reduced by 58% (from 3.3s to 1.4s)
- Monorepo-aware tech stack detection for subdirectories
- Replaced tiktoken WASM with pure JavaScript gpt-tokenizer
New Features
- Monorepo-aware tech stack detection grouping results by workspace
- Replaced tiktoken WASM with gpt-tokenizer to eliminate WASM overhead
- Eliminated child process in default action to reduce startup overhead
- Pipeline parallelization allowing concurrent stages
- Faster startup by removing Zod and lazy-loading libraries
Full Release Notes
This release is a major performance overhaul — packing the Repomix repository now takes **about 1.4 seconds (down from 3.3 seconds in v1.13.1) — roughly 2.4× faster, a 58% reduction**. Faster startup, lighter dependencies, and a smarter pipeline that overlaps work across stages. ## What's New 🚀 ### Monorepo-Aware Tech Stack Detection (#1310, #1317) The skill generator (`--skill-generate`) now detects dependency files in subdirectories and groups results by package directory. Monorepos with packages under `packages/*/package.json`, `apps/*/package.json`, etc. now produce a `tech-stacks.md` with a separate section per workspace, each listing its own languages, frameworks, dependencies, and runtime versions. Previously only the root-level dependency file was inspected. ## Improvements ⚡ The 58% pack-time reduction is the cumulative result of dozens of optimizations across startup, the pipeline, worker IPC, and remote downloads — no single change accounts for the full speedup. The most impactful changes are highlighted below. <img width="1184" height="596" alt="image" src="https://github.com/user-attachments/assets/dbab50ae-1308-4b0e-847b-94a46496a596" /> ### Replaced tiktoken WASM with gpt-tokenizer (#1350) Token counting now uses [gpt-tokenizer](https://github.com/niieani/gpt-tokenizer), a pure-JavaScript tokenizer, in place of the previous WASM-based `tiktoken`. This eliminates ~200 ms of WASM initialization overhead from startup and works in environments where WASM is restricted. Token counts are preserved — `gpt-tokenizer` is configured to match `tiktoken`'s default behavior. ### Eliminated Child Process in Default Action (#1372) The default `repomix` action no longer spawns a child process for the main pack flow. This removes process startup overhead — most noticeable on smaller repositories where startup was a meaningful fraction of total time. ### Wrapper-Extraction Fast Path for Token Counting (-13.2%) (#1457) For non-parsable XML/Markdown/Plain output, Repomix now reuses per-file token counts and tokenizes only the output "wrapper" (header, separators, footer) instead of re-tokenizing the entire ~MB-scale output. This delivers a **~13% reduction in total pack time** on typical repositories. ### Pipeline Parallelization The pack pipeline now overlaps stages that don't depend on each other: - Security check and file processing run concurrently (#1359) - Output generation overlaps with metrics calculation (#1359) - Git sort data is prefetched alongside file search and collection (#1467) - Wrapper tokenization runs in parallel with file metrics (#1469) - CLI actions are lazy-loaded so each command imports only what it needs (#1346) ### Faster Startup - Removed Zod from the startup path (#1306) - Lazy-loaded `handlebars`, `fast-xml-builder`, and `@clack/prompts` (#1436) - Lazy-loaded `jschardet` and `iconv-lite` for encoding detection (#1401) - Removed `gpt-tokenizer` from the config schema's import chain (#1500) - Skipped the worker pool when only lightweight transforms are needed (#1338) - Eliminated a redundant `stat()` syscall in file reading (#1400) ### Worker & IPC Optimizations - Batched token counting IPC (#1411) - Batched security check tasks (#1380) - Warmed up metrics worker threads in parallel (#1374) - Capped security worker threads at 2 to reduce contention (#1409) - Cached empty-directory paths across pipeline stages (#1356) - Combined file and directory globby walks into a single traversal (#1506) ### Faster Remote Repository Downloads - Used codeload.github.com URLs directly to skip the 302 redirect (#1375) - Skipped binary files during tar extraction (#1392) ### `@secretlint/profiler` Overhead Removed (-6.5%) Disabling the profiler in the security worker reduced pack time by ~6.5% (#1453). A follow-up patch to `perf_hooks.performance.mark` handles duplicate `@secretlint/profiler` singletons that survive across hoisted/nested copies (#1456). ## How to Update ```bash npm update -g repomix ``` --- As always, if you have any issues or suggestions, please let us know on GitHub issues or our [Discord community](https://discord.gg/wNYzTwZFku).