find-my-way is a fast, framework-independent HTTP router for Node.js. It matches routes using an internal radix tree (compact prefix tree) and supports route parameters, wildcards, and basic URL handling options like ignoring trailing or duplicate slashes. It is useful for building high-performance HTTP request routing with a simple API, including `on(...)` to register handlers and `lookup(...)` to dispatch requests.
Project status
- Actively maintained, with very recent activity (upstream push on 2026-10-10, and a new tagged update v9.10.0 on 2026-10-10) and multiple meaningful updates through 2026.
- Apparent update cadence is steady and fairly frequent, roughly every 1 to 3 months in 2026 (v9.4 in early Jan, v9.5 Feb, v9.6 May, v9.7 July, v9.8 and v9.9 mid to late Aug, v9.10 Oct).
AI summary generated
Recent updates
v9.10.0
v9.10.0 introduces an opt-in compiler mode that can significantly speed up route lookups by compiling the radix tree into generated JavaScript. The release also includes multiple performance fixes (route registration, prefix matching, %25 sanitization, regex host cache bounding) and correctness fixes around URL handling, querystring slash handling, and generated code strictness.
Featuresv9.9.0
v9.9.0 updates the project tooling to use ESLint 9 with neostandard, and it improves how absolute-form request targets (full URLs) are parsed when calling `find`. The code change replaces the previous regex-based handling with a stricter absolute URL parser and expands test coverage for query and invalid URL cases.
v9.8.0
This release focuses on correcting route pattern handling and improving routing performance, plus updates to development tooling. It also enhances prettyPrint output by serializing RegExp values in both constraints and metadata.
Breakingv9.7.0
v9.7.0 primarily fixes edge cases in route lookup around regex matching (including backtracking behavior and empty captures), and improves correctness of optional parameter removal via off() for root fallback. It also adds a performance improvement in the host constraint strategy by caching regex lookups, and fixes async constraint error handling to ensure done is only called once. Dependency and CI updates are included (notably adding Node 26 to the test matrix and bumping dev tooling).
v9.6.0
v9.6.0 adds a new `onMaxParamLength` option intended to support responding with HTTP 414 when `maxParamLength` is exceeded. It also includes a performance optimization for bitmask handler retrieval, plus several dependency and tooling bumps.
Featuresv9.5.0
v9.5.0 primarily exposes additional URL/path normalization utilities (including duplicate slash removal and trailing slash trimming) and updates type definitions and README accordingly. It also fixes an issue where inherited properties on constraint objects could be processed during route matching.
Featuresv9.4.0
v9.4.0 primarily adds a new public helper, `sanitizeUrlPath`, and updates CI to test against Node.js 24 while modernizing GitHub Actions versions. It also bumps several development dependencies and includes a dedicated test suite for the new URL sanitization behavior.
Featuresv9.3.0
This release (v9.3.0) adds a Node.js-based test runner, introduces improved string and storage performance (including Map-based strategies and charCodeAt usage), and bumps some development and dependency tooling. It also updates TypeScript typings around query string parsing and fixes the missing done callback typing for Router.lookup.
BreakingFeaturesv9.1.0
v9.1.0 updates the router's built-in HTTP method list to include the QUERY method, aligning with Node.js http module behavior. The release notes describe this change explicitly as a fix.
v8.2.2
v8.2.2 is published as a security release for CVE-2024-45813 (GHSA-rrr8-f88r-h8q6). The code changes focus on preventing catastrophic backtracking in the router's param-to-regex generation logic, and they also adjust how certain multi-parameter routes capture values.
Securityv9.0.1
v9.0.1 is labeled as a security release for CVE-2024-45813, with no detailed functional notes beyond the advisory link. The code changes show a ReDoS/backtracking-hardening update in the router’s parametric route matching, plus internal changes to how the `params` object is constructed and returned to handlers.
Securityv9.0.0
v9.0.0 updates find-my-way routing internals, switching compiled route parameter objects to a null-prototype (NullObject) representation, and adjusting trie behavior by dropping old nodes. The release notes are brief and mostly focus on these two items.
BreakingSecurityFeaturesv8.2.0
Release v8.2.0 focuses on CI and compatibility updates (Node versions, actions/checkout/setup-node bumps), plus router behavior improvements around constraints and optional parameters. It also updates internal imports (assert to node:assert) and expands test coverage, including new regression tests.
BreakingFeatures