Dillon Mulroy on X: "better-result 3.0 is now available
npm i better-result@3
highlights below https://t.co/TM6KbNSGxs" / X<br>Post
Log inSign up
Post
Dillon Mulroy on X: "better-result 3.0 is now available
npm i better-result@3
highlights below https://t.co/TM6KbNSGxs"
Dillon Mulroy
@dillon_mulroy
better-result 3.0 is now available
npm i better-result@3
highlights below
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0">9:47 PM · Aug 1, 2026200KViews
32<br>76<br>1.4K<br>1.2K
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">Dillon Mulroy
@dillon_mulroy
Aug 1
Validated Result codecs
Result.codec replaces the unvalidated serialization helpers with Standard Schema-compatible validation for both Ok and Err payloads
Codecs support different domain and wire types, preserve synchronous or asynchronous schema behavior, and report Show more
61<br>14K
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">Dillon Mulroy
@dillon_mulroy
Aug 1
Result collections
New collection combinators make concurrent and heterogeneous Result workflows easier:
Result.all collects successful values or returns the first error.
Result.allAsync awaits inputs concurrently while preserving input-order error selection.
Result.partition Show more
40<br>11K
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">Dillon Mulroy
@dillon_mulroy
Aug 1
Better asynchronous retries
Result.tryPromise now supports:
AbortSignal propagation through TryPromiseContext;
cancellation of pending retry delays;
dynamic delayMs(error, context) policies;
configurable retry jitter;
attempt-aware shouldRetry(error, context) predicates. Show more
35<br>8.7K
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">Dillon Mulroy
@dillon_mulroy
Aug 1
TaggedError instance matching
Tagged errors now provide exhaustive instance-level matching
matchError remains available for structurally tagged errors and data-last composition.
Tagged errors are also iterable, allowing them to short-circuit directly inside Result.gen:
const Show more
25<br>6.5K
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">Dillon Mulroy
@dillon_mulroy
Aug 1
TaggedError syntax
Remove the trailing factory call.
TaggedErrorClass is now TaggedErrorClass, with the payload type supplied by the subclass.
21<br>6.2K
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">Dillon Mulroy
@dillon_mulroy
Aug 1
The following APIs have been removed:
Result.serialize<br>Result.deserialize<br>Result.hydrate
Use Result.codec with explicit Standard Schema-compatible serializers and deserializers.
24<br>5.9K
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">Ben Vinegar
@bentlegen
Aug 1
How should I think of this vs Effect?
13<br>5K
Log in or sign up for X<br>See what’s happening and join the conversation<br>Continue with phoneContinue with AppleContinue with Google<br>or<br>Log in with username or email
Relevant people
Dillon Mulroy@dillon_mulroyFollow<br>principal engineer @cloudflare • tweets about functional programming, typescript, neovim, & formula 1 • https://t.co/6Vr6DiQUoM • https://t.co/tlUe9v9eZC
Trending now