npm / flow-bin
flow-bin
What changed in flow-bin 0.335 to 0.337, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-28.
37 breaking1 deprecations24 new APIs and options11 behavior and defaults5 tooling42 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initflow-bin 0.33728 changes
Breaking changes 4
Function and Object now represent their prototypes rather than any; code relying on their former any behavior may get new errors.
Uses TypeScript's CallableFunction.bind overloads, reporting bound-argument errors at bind and representing remaining parameters as a tuple; bound methods use these overloads too.
Supports readonly T[] in unlabeled tuple elements and requires parentheses when optional.
ESTree output emits the bound as a bare type node or null; Babel output keeps the TypeAnnotation wrapper, and the TypeScript-to-Flow API translator generates extends bounds.
New APIs and options 6
Flow supports assertion functions; give invariant an asserts signature if relying on Flow's special handling of it.
ESTree enum declarations use a unified EnumBody node with string-or-null explicitType; Babel output retains its existing enum body types.
Its options parameter now takes Intl.NumberFormatOptions.
Executes runtime Flow syntax in CommonJS and ES modules while preserving original stack locations.
Adds formatRange, formatRangeToParts, and ES2023 NumberFormat options; format accepts bigint and numeric strings.
Adds library definitions for Intl.Segmenter and Intl.supportedValuesOf.
Behavior and default changes 2
Assertion narrowing now works through this and super, including receiver assertions.
Readonly now supports Array and ReadonlyArray types.
Tooling 1
Adds ES2024 ArrayBuffer resizing, transfer, and constructor options to the library definitions.
Fixes and other changes 15
Prevents unsound assertion narrowing when annotations refer to shadowed local declarations.
Reuses TypeScript declarations while preserving Flow covariance and callback compatibility.
Adds missing AST fields and node types; implicitDeclare is omitted unless true.
TypeScript definitions now parse namespace export aliases and ambient exported members.
Preserves nominal opaque inference when checking nullable targets.
Opaque upper bounds are now honored in template interpolation and nullable subtyping.
Optional class method signatures are now parsed in JavaScript and TypeScript files.
Aligns Proxy APIs with TypeScript and checks array elements against numeric interface indexers.
Qualified type references through a union of namespaces now look up the type in each namespace.
Avoids spurious recursion-limit errors for conditions, match, and other expressions involving trivially recursive generic type aliases.
Aligns Reflect APIs with TypeScript property, descriptor, key, and constructor definitions.
localeCompare, toLocaleLowerCase, and toLocaleUpperCase accept Intl.LocalesArgument; matchAll with a RegExp returns RegExpExecArray matches.
Optional TypeScript constructor parameter properties are now parsed.
The parser now accepts destructured parameters outside declaration files.
The parser now accepts typed function overload signatures in TypeScript implementation files.
flow-bin 0.33646 changes
Breaking changes 9
Calls can infer narrower literal types, so explicit annotations may be needed where broader types are required.
Unconstrained class type arguments now use their bounds instead of
empty.The command now uses Flow parser packages and requires Node 18 and Prettier 3.
Inference can expose previously hidden parameter-type errors, including functions that do not satisfy an inferred rest-parameter type.
The global type is now
Intl.LocalesArgument; library declarations such as flow-typed'sdeclare var Intlmust be removed because they hide the builtin namespace.Removed; use
React.ComponentPropsinstead.Flow checks ref compatibility for JSX tags typed as
string, exposing refs that assume a more specific element type.Rest destructuring of exact tuples now excludes preceding elements' types from the rest value.
Variance annotations are now checked through tuple type spreads.
New APIs and options 16
Added to the library definitions.
Added to the library definitions.
Bigint Atomics support and
Atomics.pauseare added to the library definitions.Additional Date constructor signatures are added.
Decorator context and metadata types are now available.
Added to the library definitions.
Added to the library definitions.
The library definitions add
Error.isError.Functionnow includes[Symbol.metadata].The type now includes
'unknown'.The library definitions add
Promise.try.RegExp indices and flags are added to the library definitions.
Added to the library definitions.
Tuple types can have trailing rest elements, and array literals ending in array spreads and rest-parameter arguments can flow to these types.
Typed arrays gain
findLast,findLastIndex,toReversed,toSorted, andwith; their constructors can be called without arguments. Find callbacks have updated narrowing andthisannotation behavior.Well-formed string methods are added to the library definitions.
Behavior and default changes 3
Functions and constructors are now accepted as builtin
Functionvalues.Explicit
thisparameters on methods in library definitions no longer need to accept the instance type.Returns inside functions nested in a type guard function are no longer checked against the enclosing type guard.
Tooling 2
TypeScript signatures for
Array.fromAsyncare added.Intl is now a builtin namespace with TypeScript-compatible definitions through ES2020, including locale, formatting, and canonicalization APIs.
Fixes and other changes 16
The property is now typed
any[], matching TypeScript.Additional ArrayBuffer constructor signatures are added.
It now extends
AsyncIteratorObjectand includes[Symbol.asyncDispose].Decorator definitions now match TypeScript, and
ClassDecoratoraccepts classes.Declaration merging for
declare classnow preserves variance annotations.References inside namespace blocks now see members merged across blocks and library files.
Its declarations now match TypeScript, including
fromoverloads, readonly size properties, boolean-returningfindpredicates, and callbacks that cannot annotatethis.Hover links no longer include the hovered declaration itself.
Declaration merging for interfaces now preserves variance annotations.
The legacy options alias now matches TypeScript.
The legacy options alias now matches TypeScript.
The legacy options alias now matches TypeScript.
Parser source columns are now correct after characters represented by surrogate pairs.
Functions and constructors are now accepted as builtin
Objectvalues.Fixed spurious indexed-access errors involving recursive class type-argument bounds.
Type arguments used in later tuple spreads are now inferred instead of left underconstrained.
flow-bin 0.33546 changes
Breaking changes 24
The legacy builtin_lib=flowlib option is removed.
The legacy builtin_lib=flowlib-with-lib-dom-d-ts option is removed.
Deprecated syntax now consistently causes errors, including in library definition files.
This Flow config option is removed.
This Flow config option is removed.
This Flow config option is removed.
This Flow config option is removed.
This Flow config option is removed.
This Flow config option is removed.
This Flow config option is removed.
Some JSX expressions previously considered underconstrained now infer unknown.
Map.groupBy type parameters are now ordered <K, T>, matching TypeScript.
Type arguments flowing from a polymorphic value to a non-polymorphic type are now solved, potentially surfacing previously hidden errors.
Promise now uses TypeScript-style instance and constructor interfaces, which may change errors for code relying on its previous class typing.
React.PropsOf now uses React.ComponentProps to find component props; additional errors may occur.
Constructing a $ReadOnlyArray now causes an error.
dotAll is now read-only, matching TypeScript.
This Flow config option is removed.
This Flow config option is removed.
This Flow config option is removed.
replaceAll has separate overloads for replacement strings and replacer functions; passing a union of those types is an error.
Symbol now uses TypeScript-style instance and constructor interfaces, which may change errors for code relying on its previous class typing.
Symbol() now only accepts a string or number description.
Fixed inference that incorrectly used a bound or unknown; more underconstrained errors may appear.
Deprecations 1
React.ElementConfig is deprecated; use React.ComponentProps instead. It will be removed in the next version.
New APIs and options 2
Promise.withResolvers is added to the library definitions.
The undefined type can now be used in library definitions, where it means void.
Behavior and default changes 6
Applying as const to template literals now infers template literal types like TypeScript.
User-defined assertion conditions now check member access in test context.
Arguments to new X(...) are contextually typed when X is annotated with the typeof of a constructor interface value.
Implicit instantiation can infer a type argument through React.ComponentProps and other conditional types with infer.
Template literals infer precise types in const declarations and annotated initializers.
typeof x === 'function' now refines builtin constructors and interfaces with call signatures as functions.
Tooling 2
flow-remove-types supports abstract classes and members, override modifiers, satisfies, optional class fields, and additional type-only imports and exports.
The unnecessary-invariant lint is renamed to unnecessary-assertion; the old name remains accepted.
Fixes and other changes 11
Assertion functions are supported when exported through CommonJS, in return position, and in arrow expression bodies.
ESM default imports of CommonJS assertion functions and callable objects with asserts call signatures are recognized.
Extends now uses the prototype of a constructor interface without a construct signature instead of reporting not inheritable.
Exported declare classes extending builtins now inherit the builtin's statics and constructor.
instanceof now uses the prototype of a constructor interface without a construct signature instead of narrowing to empty.
React.ComponentProps<'div'> now includes the optional ref prop.
RegExp.prototype[Symbol.matchAll] is now a method, matching TypeScript.
groups is now optional and cannot be null, matching TypeScript.
RegExpStringIterator is now an interface, matching TypeScript.
keyFor now returns string | void, matching TypeScript.
Methods inherited from builtins such as typed arrays now return the subclass.