npm / fuse.js
fuse.js
What changed in fuse.js 7, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
10 breaking1 security6 new APIs and options4 performance5 behavior and defaults17 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initfuse.js 743 changes
Breaking changes 10
Tabs and newlines now count as word separators when scoring fields, changing scores for fields containing them.
Field-length normalisation now counts word starts instead of space transitions, changing field scores.
Key weights are normalised in object and keyless-logical search, changing relative rankings when weights do not sum to 1.
When scores tie at the cutoff boundary, limit now returns the correct top-N results.
The exact-match shortcut now respects minMatchCharLength, excluding shorter matches from the matches array.
Explicitly rejects
useTokenSearchinFuse.match.For array-path keys,
match.keynow returns the canonical dotted string instead of a raw string array; consumers can remove.join('.')conversions.Rejects
useTokenSearchinFuseWorker.An empty query now returns all results.
UMD builds are no longer provided.
Security 1
toJSON() omits getFn from keys for safe serialization.
New APIs and options 6
Adds a class that shards a collection across Web Workers, runs searches in parallel, and preserves Fuse result ordering.
Adds a customizable tokenizer and a unicode-aware default that segments CJK, Cyrillic, Greek, Arabic, and other scripts.
Adds
'all'and'any'token-search semantics; the default'any'preserves existing behavior, while'all'requires every query word to match.Adds a static method for single string matching.
Token search adds per-term fuzzy matching with IDF scoring.
Adds runtime plugin registration.
Performance 4
Includes optimizations to Bitap search, search hot paths, index creation, field normalization, and collection removal.
Compiled searchers are cached for repeated queries.
Search uses heap-based top-k selection when
limitis set.Bulk removals now use O(n) batching instead of O(n*k).
Behavior and default changes 5
BigInt values are supported for indexing and search.
Extended search supports an escaped pipe.
A null return from getFn is supported.
Logical queries now support keyless string entries.
removeAt() now returns the removed item.
Fixes and other changes 17
CommonJS type declarations now resolve correctly for consumers using moduleResolution: node16 or nodenext, avoiding TS1479 when importing from a CommonJS project.
TypeScript declarations are now shipped for this subpath, allowing it to resolve types under node16/nodenext and bundler module resolution.
TypeScript declarations are now shipped for this subpath, allowing it to resolve types under node16/nodenext and bundler module resolution.
Invalidates the searcher cache when the collection is mutated.
Corrects doc-index alignment for string collections containing blank documents.
Restricts Bitap highlight indices to the matched window.
Renumbers the inverted index after document removal.
Non-string array values are coerced to strings during indexing.
The default config is frozen to prevent mutation across instances.
Overlapping match indices are merged in extended search.
Inverse patterns now work correctly across multiple keys.
Extended search handles quoted tokens containing inner spaces and quotes.
Handles non-decomposable diacritics.
Corrects the type of
keyinFuseSortFunctionMatch.Search results deduplicate and merge overlapping match indices.
Preserves original array indices during nested path traversal.
Corrects the type of the
keysparameter inparseIndex.