# What changed in flow-bin

> 120 changes in flow-bin 0.335 to 0.337 from its official release notes, upgrade guides and advisories: 37 breaking, 1 deprecations, 24 new APIs and options. Each one cited. Sources checked 2026-10-28. HTML: https://unstale.sh/npm/flow-bin/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## flow-bin 0.337

### Breaking changes

- Function and Object now represent their prototypes rather than any; code relying on their former any behavior may get new errors. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- 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. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Supports readonly T[] in unlabeled tuple elements and requires parentheses when optional. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- 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. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)

### New APIs and options

- Flow supports assertion functions; give invariant an asserts signature if relying on Flow's special handling of it. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- ESTree enum declarations use a unified EnumBody node with string-or-null explicitType; Babel output retains its existing enum body types. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Its options parameter now takes Intl.NumberFormatOptions. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Executes runtime Flow syntax in CommonJS and ES modules while preserving original stack locations. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Adds formatRange, formatRangeToParts, and ES2023 NumberFormat options; format accepts bigint and numeric strings. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Adds library definitions for Intl.Segmenter and Intl.supportedValuesOf. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)

### Behavior and default changes

- Assertion narrowing now works through this and super, including receiver assertions. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Readonly now supports Array and ReadonlyArray types. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)

### Tooling

- Adds ES2024 ArrayBuffer resizing, transfer, and constructor options to the library definitions. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)

### Fixes and other changes

- Prevents unsound assertion narrowing when annotations refer to shadowed local declarations. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Reuses TypeScript declarations while preserving Flow covariance and callback compatibility. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Adds missing AST fields and node types; implicitDeclare is omitted unless true. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- TypeScript definitions now parse namespace export aliases and ambient exported members. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Preserves nominal opaque inference when checking nullable targets. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Opaque upper bounds are now honored in template interpolation and nullable subtyping. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Optional class method signatures are now parsed in JavaScript and TypeScript files. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Aligns Proxy APIs with TypeScript and checks array elements against numeric interface indexers. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Qualified type references through a union of namespaces now look up the type in each namespace. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Avoids spurious recursion-limit errors for conditions, match, and other expressions involving trivially recursive generic type aliases. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Aligns Reflect APIs with TypeScript property, descriptor, key, and constructor definitions. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- localeCompare, toLocaleLowerCase, and toLocaleUpperCase accept Intl.LocalesArgument; matchAll with a RegExp returns RegExpExecArray matches. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- Optional TypeScript constructor parameter properties are now parsed. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- The parser now accepts destructured parameters outside declaration files. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)
- The parser now accepts typed function overload signatures in TypeScript implementation files. (0.337.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.337.0)

## flow-bin 0.336

### Breaking changes

- Calls can infer narrower literal types, so explicit annotations may be needed where broader types are required. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Unconstrained class type arguments now use their bounds instead of `empty`. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The command now uses Flow parser packages and requires Node 18 and Prettier 3. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Inference can expose previously hidden parameter-type errors, including functions that do not satisfy an inferred rest-parameter type. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The global type is now `Intl.LocalesArgument`; library declarations such as flow-typed's `declare var Intl` must be removed because they hide the builtin namespace. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Removed; use `React.ComponentProps` instead. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Flow checks ref compatibility for JSX tags typed as `string`, exposing refs that assume a more specific element type. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Rest destructuring of exact tuples now excludes preceding elements' types from the rest value. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Variance annotations are now checked through tuple type spreads. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)

### New APIs and options

- Added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Bigint Atomics support and `Atomics.pause` are added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Additional Date constructor signatures are added. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Decorator context and metadata types are now available. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The library definitions add `Error.isError`. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- `Function` now includes `[Symbol.metadata]`. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The type now includes `'unknown'`. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The library definitions add `Promise.try`. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- RegExp indices and flags are added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Tuple types can have trailing rest elements, and array literals ending in array spreads and rest-parameter arguments can flow to these types. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Typed arrays gain `findLast`, `findLastIndex`, `toReversed`, `toSorted`, and `with`; their constructors can be called without arguments. Find callbacks have updated narrowing and `this` annotation behavior. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Well-formed string methods are added to the library definitions. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)

### Behavior and default changes

- Functions and constructors are now accepted as builtin `Function` values. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Explicit `this` parameters on methods in library definitions no longer need to accept the instance type. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Returns inside functions nested in a type guard function are no longer checked against the enclosing type guard. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)

### Tooling

- TypeScript signatures for `Array.fromAsync` are added. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Intl is now a builtin namespace with TypeScript-compatible definitions through ES2020, including locale, formatting, and canonicalization APIs. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)

### Fixes and other changes

- The property is now typed `any[]`, matching TypeScript. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Additional ArrayBuffer constructor signatures are added. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- It now extends `AsyncIteratorObject` and includes `[Symbol.asyncDispose]`. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Decorator definitions now match TypeScript, and `ClassDecorator` accepts classes. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Declaration merging for `declare class` now preserves variance annotations. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- References inside namespace blocks now see members merged across blocks and library files. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Its declarations now match TypeScript, including `from` overloads, readonly size properties, boolean-returning `find` predicates, and callbacks that cannot annotate `this`. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Hover links no longer include the hovered declaration itself. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Declaration merging for interfaces now preserves variance annotations. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The legacy options alias now matches TypeScript. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The legacy options alias now matches TypeScript. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- The legacy options alias now matches TypeScript. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Parser source columns are now correct after characters represented by surrogate pairs. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Functions and constructors are now accepted as builtin `Object` values. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Fixed spurious indexed-access errors involving recursive class type-argument bounds. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)
- Type arguments used in later tuple spreads are now inferred instead of left underconstrained. (0.336.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.336.0)

## flow-bin 0.335

### Breaking changes

- The legacy builtin_lib=flowlib option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- The legacy builtin_lib=flowlib-with-lib-dom-d-ts option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Deprecated syntax now consistently causes errors, including in library definition files. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Some JSX expressions previously considered underconstrained now infer unknown. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Map.groupBy type parameters are now ordered <K, T>, matching TypeScript. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Type arguments flowing from a polymorphic value to a non-polymorphic type are now solved, potentially surfacing previously hidden errors. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Promise now uses TypeScript-style instance and constructor interfaces, which may change errors for code relying on its previous class typing. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- React.PropsOf now uses React.ComponentProps to find component props; additional errors may occur. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Constructing a $ReadOnlyArray now causes an error. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- dotAll is now read-only, matching TypeScript. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- This Flow config option is removed. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- replaceAll has separate overloads for replacement strings and replacer functions; passing a union of those types is an error. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Symbol now uses TypeScript-style instance and constructor interfaces, which may change errors for code relying on its previous class typing. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Symbol() now only accepts a string or number description. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Fixed inference that incorrectly used a bound or unknown; more underconstrained errors may appear. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)

### Deprecations

- React.ElementConfig is deprecated; use React.ComponentProps instead. It will be removed in the next version. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)

### New APIs and options

- Promise.withResolvers is added to the library definitions. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- The undefined type can now be used in library definitions, where it means void. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)

### Behavior and default changes

- Applying as const to template literals now infers template literal types like TypeScript. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- User-defined assertion conditions now check member access in test context. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Arguments to new X(...) are contextually typed when X is annotated with the typeof of a constructor interface value. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Implicit instantiation can infer a type argument through React.ComponentProps and other conditional types with infer. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Template literals infer precise types in const declarations and annotated initializers. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- typeof x === 'function' now refines builtin constructors and interfaces with call signatures as functions. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)

### Tooling

- flow-remove-types supports abstract classes and members, override modifiers, satisfies, optional class fields, and additional type-only imports and exports. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- The unnecessary-invariant lint is renamed to unnecessary-assertion; the old name remains accepted. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)

### Fixes and other changes

- Assertion functions are supported when exported through CommonJS, in return position, and in arrow expression bodies. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- ESM default imports of CommonJS assertion functions and callable objects with asserts call signatures are recognized. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Extends now uses the prototype of a constructor interface without a construct signature instead of reporting not inheritable. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Exported declare classes extending builtins now inherit the builtin's statics and constructor. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- instanceof now uses the prototype of a constructor interface without a construct signature instead of narrowing to empty. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- React.ComponentProps<'div'> now includes the optional ref prop. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- RegExp.prototype[Symbol.matchAll] is now a method, matching TypeScript. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- groups is now optional and cannot be null, matching TypeScript. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- RegExpStringIterator is now an interface, matching TypeScript. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- keyFor now returns string | void, matching TypeScript. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
- Methods inherited from builtins such as typed arrays now return the subclass. (0.335.0) — [release notes](https://github.com/facebook/flow/releases/tag/v0.335.0)
