NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1925 most downloaded on npm
Property based testing framework for JavaScript (like QuickCheck)
Last release 15 days ago
19 Sep 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
212 releases · first in 2017
Fix interrupt plugin (throwing) [ Code ][ Diff ]
One column per quarter.
_New plugin API and deprecations ahead of v5_ [Code][Diff]
New plugin API and deprecations ahead of v5 [Code][Diff]
beforeEach plugin to hook in life-cycleafterEach pluginbeforeEach plugintimeout plugin to stop long running predicatesonAllRunsCompletereporter and asyncReporter from parametersfailOnInterrupt on the plugingenerate via Pluginsunbiased plugin to generate without biasinterruptAfterTimeLimit(PR#7008) Towards shrinkable entityGraph thanks to chainUntil
entityGraph thanks to chainUntilstringMatchingpnpm dlx with pnpm exec for pkg-pr-newdevEngines.packageManagermainbenchpnpm in publish jobsfc.integer on generatefc.webPath/fc.webUrl on generatefc.stringMatching for \W \D \S .fc.stringMatching on generatetuple on generate for fc.recordfc.entityGraph on generatefc.entityGraphonTheFlyLinksForEntityGraphgenerate logic to the Arbitrary for entityGraphProductionState for onTheFlyLinks...pnpm i in changelog generation--ignore-scripts to pnpm i callsEntityGraphContraints(PR#6678) Add chainUntil arbitrary for iterative chaining
chainUntil arbitrary for iterative chainingskipLibCheck$CLAUDE_PROJECT_DIRdiscussions: write to release jobs\p{...} value drift in docs tests(PR#6866) Reversible json arbitrary
json arbitrary\p{} and \P{} in stringMatching\p{UnicodeProperty} in stringMatchingstringMatchingmake_latest?raw imports for advents(PR#6687) Deprecate Random::next(n) and Random::nextInt()
maxLength support to stringMatchingmaxLength on stringMatchingRandom::next(n) and Random::nextInt()fast-check using rolldownpermissions: {} to workflows missing itflatMap with chain in error message(PR#6421) CI: Rename attestation bundles to \*.sigstore.json
Proper attestation file naming [Code][Diff]
(PR#6416) CI: Extract package version from tarball
(PR#6413) CI: Rename tarballs before publishing
Rename tarballs before publishing [Code][Diff]
(PR#6369) CI: Fix vulnerabilities in our GitHub workflows
entityGraph for schema-based structuresentityGraphentityGraphentityGraphentityGraphentityGraphentityGraphentityGraph documentationentityGraphentityGraph into sub-helpers(PR#6232) Support full PropertyKey in fc.dictionary(...)
PropertyKey in fc.dictionary(...)fc.map arbitrarycircular option to fc.letrecfc.set arbitraryletrec@traversable/zod-test to ecosystemletrec implementationsletrecLazyArbitrary(PR#6107) Add 'history' parameter to infiniteStream
fc.option nil frequencyignoredBuiltDependencies(PR#6026) Deprecate waitOne and waitAll
actschedulerwaitIdle, a revamped waitAll for schedulerwaitOne and waitAll(PR#5900) Bug: Avoid overlapping tasks during scheduler execution
(PR#5889) Wait longer before scheduling anything with waitFor
More effective waitFor on fc.scheduler
[Code][Diff]
waitForwaitForwaitFor on interactions with micro-tasks(PR#5862) CI: Cache LFS files cross builds
(PR#5610) Drop deprecated .noBias
The simplest migration guide to v4 is probably here.
.noBiasuuidV arbitraryunicodeJson* arbitrariesuuid to build any know versionascii*hexa*base64stringOfchar16bits and string16bitsfullUnicode*unicode*charbig{U|}int{N|}nextArrayInt from Random.noShrinkconstantFromconstantArbitrary<XxxArray> => Arbitrary<XxxArray<ArrayBuffer>>fc.recordscheduleSequencejsonnoBiasisolatedDeclarations flag on the projectnode --runwithDeletedKeys from recordrun{Before/After}Each on propertytypespec-fast-check to ecosystem pageBigInt check in mixedCasescheduleSequencetypeof checksobject and relateddoublescheduleSequenceObject.assignBigInt in tests(PR#5469) Bug: Make subarray a bit more resilient to poisoning
subarray a bit more resilient to poisoningstringify a bit more resilient to poisoningmapToConstant a bit more resilient to poisoninggen a bit more resilient to poisoning(PR#5402) Performance: Faster instantiation of internet-related arbitraries
(PR#5366) Add support for string-unit on object/anything arbitrary
unit on object/anything arbitraryunit on json arbitrarystringstringstringMatchingit.concurrent due to Node 23 failingexamples/pkg.pr.newpkg.pr.new previewsexamples/jest.setup.jscanShrinkWithoutContext for constantsmapToConstantstring with faster slicesstring with pre-cached slicesconstant*(PR#5233) Mark as deprecated most of char and string arbitraries
(PR#5189) Deprecate uuidV in favor of uuid
uuidVuuidV in favor of uuiduuidfloat and double(PR#5047) Introduce new fc.noShrink arbitrary
fc.noShrink arbitraryfc.noBias arbitrarylimitShrink before releasingyour-first-race-condition-test.mdxnoShrink(PR#5010) Add option to generate unicode values in object
(PR#4917) Add option to produce non-integer on double
doublefloatdouble on small rangesnoInteger on doublenoInteger on double via integration layers(PR#4853) CI: Build doc with full git history
(PR#4817) Expose internal state of the PRNG from Random
(PR#4709) Make fc.pre an assertion function
fc.pre an assertion functionjsonwebtoken to track record(PR#4591) CI: Move build chain to ESM for root of monorepo
onBrokenAnchors'check on Docusaurusidonttrustlikethat-fast-check in ecosystem.md@effect/schema in ecosystemisCorrect check on double(PR#4548) Add support for depthIdentifier to dictionary
depthIdentifier to dictionaryobject when requested towaitAll in the tutorialdictionary for object instead of inlined reimplementation(PR#4426) Prefer "import type" over raw "import"
(PR#4299) Doc: Article around Zod vulnerability
gen(PR#4261) Bug: Fix typings for node native esm
(PR#4203) Deprecate withDeletedKeys on record
datewithDeletedKeys on recorddictionaryrecorddictionarydatedate (retry)dictionary on anything(PR#4172) Bug: Better declare ESM's types
(PR#4100) Support excluded min/max in double
ulid we cannot builduliddecomposeFloat/Doubleulidulidulidulid mapper function(PR#4008) CI: Show vulnerabilities in renovate
(PR#3920) Prepare tokenizers for stringMatching
stringMatchingstringMatchingstringMatchingstringMatchingstringMatching(PR#3780) CI: Do not relaunch build on new tag
(PR#3723) CI: Switch to docusaurus for the documentation
build:allbaseUrl on the ain documentation(PR#3395) Introduce new gen arbitrary
(PR#3671) Bug: Declare types field first in exports
(PR#3638) Stop repeating the error twice in reports
(PR#3563) Performance: Mutate rng inplace in tosser
(PR#3547) Slightly faster thanks to pure-rand v6
Nothing published for this version
(PR#3507) Interrupt predicates when interruptAfterTimeLimit
(PR#3464) No timeout for beforeEach or afterEach
context in examples(PR#3299) Explicitly declare typings for constraints on date
datewebPath(PR#2965) Attach the original Error as a cause of thrown one
(PR#3172) Bug: Fix some remaining accesses to global properties
depth onto globals internally(PR#3094) Bug: Make numeric arbitraries resistant to poisoning
safeApply never calling original applywebFragments/Segment/QueryParameters resistant to poisoninguniqueArraysafeApply(PR#3082) Bug: Protect assert from poisoned Math or Date
assert from poisoned Math or DateObjectFunction/Array/Stringfilter, map, chain(PR#3066) Bug: Export package.json
Your coding agent can read these notes before it upgrades. Set up the MCP server →