Skip to content

[flow] Upgrade from 0.286 -> 0.288#234

Open
everettbu wants to merge 5 commits intomainfrom
pr35333
Open

[flow] Upgrade from 0.286 -> 0.288#234
everettbu wants to merge 5 commits intomainfrom
pr35333

Conversation

@everettbu
Copy link
Copy Markdown

@everettbu everettbu commented Dec 13, 2025

Mirror of facebook/react#35333
Original author: poteto


Flow 0.288 removed several React$ built-in types (React$Context,
React$ElementProps, React$ElementRef, React$RefSetter). Added
$FlowFixMe[cannot-resolve-name] suppressions to preserve type exports.


Stack created with Sapling. Best reviewed with ReviewStack.

  • #35334
  • -> #35333
  • #35332
  • #35331
  • #35330
  • #35329

Flow 0.280 introduced stricter type checking for `incompatible-type` errors,
requiring additional $FlowFixMe suppressions alongside existing ones. Changes:

- Made `QueuingStrategy` properties optional in streams.js
- Made all properties optional in Web Animations API types (EffectTiming,
  KeyframeAnimationOptions, etc.)
- Added `$FlowFixMe[incompatible-type]` alongside existing suppressions in
  multiple files where Flow now reports additional type mismatches
Major changes in Flow 0.281:
- $FlowFixMe comments now require explicit error codes (e.g., $FlowFixMe[incompatible-type])
- Changed all bare $FlowFixMe to include appropriate error codes
- Changed $FlowIgnore to $FlowFixMe where needed
- Fixed stream types to have cancel() return Promise<void> instead of void
- Added pseudoElement property to KeyframeEffect type
- Added suppressions for Proxy handler variance issues
- Fixed various type errors across the codebase
Add suppression for React\$Element incompatibility with ReactNodeList in
  ReactDOMRootFB.js render function. Flow 0.282 has stricter type checking
  for the React\$Node union type.
Flow 0.286 introduced stricter constant-condition detection that flags build-time feature flags (supportsMutation, supportsHydration, isPrimaryRenderer, enableProfiling, etc.) and narrowed null checks. Added inline $FlowFixMe suppressions to preserve existing runtime behavior.
Flow 0.288 removed several React$ built-in types (React$Context,
React$ElementProps, React$ElementRef, React$RefSetter). Added
$FlowFixMe[cannot-resolve-name] suppressions to preserve type exports.
@everettbu everettbu added CLA Signed React Core Team Opened by a member of the React Core Team labels Dec 13, 2025
@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented Dec 13, 2025

Greptile Overview

Greptile Summary

Upgraded Flow from version 0.286 to 0.288, addressing breaking changes where several React$ built-in types were removed (React$Context, React$ElementProps, React$ElementRef, React$RefSetter).

Major changes:

  • Added $FlowFixMe[cannot-resolve-name] suppressions to preserve type exports for removed React$ types in public API files
  • Added suppressions for new Flow errors: constant-condition, invalid-compare, incompatible-type, incompatible-call
  • Updated Flow type definitions for web APIs (streams, animations) to match stricter type requirements
  • Replaced generic $FlowFixMe and $FlowIgnore comments with specific error code suppressions

Key patterns:

  • Type export suppressions maintain backward compatibility while acknowledging removed types
  • Switch statement comparisons now require suppressions due to stricter constant analysis
  • Stream API cancel/abort methods changed from string to mixed for reason parameter
  • Animation API properties made optional to match spec

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • This is a standard Flow version upgrade following established patterns from facebook/react. All changes are type-level suppressions with no runtime behavior changes. The suppressions are well-documented and preserve existing type exports for backward compatibility.
  • No files require special attention

Important Files Changed

File Analysis

Filename Score Overview
package.json 5/5 Flow version upgraded from 0.279.0 to 0.288.0
packages/react/index.js 5/5 Added $FlowFixMe[cannot-resolve-name] suppressions for removed React$ types (Context, RefSetter, ElementProps, ElementRef)
packages/react/index.development.js 5/5 Added suppressions for removed React$ types, missing RefSetter suppression (present in index.js)
scripts/flow/environment.js 5/5 Added suppression for React$ElementProps in React$Element opaque type override
flow-typed/environments/streams.js 5/5 Updated stream API type signatures: cancel/abort reason changed from string to mixed, QueuingStrategy properties made optional
flow-typed/environments/web-animations.js 5/5 Made animation keyframe and timing properties optional, added new rangeStart/rangeEnd options
packages/react-reconciler/src/ReactFiber.js 5/5 Added suppressions for constant-condition and invalid-compare errors in switch statements
packages/react-reconciler/src/ReactFiberBeginWork.js 5/5 Added suppressions for constant-condition and invalid-compare errors throughout
packages/react-server/src/ReactFizzServer.js 5/5 Added suppressions for constant-condition, invalid-compare, and incompatible-type errors
packages/react-server/src/ReactFlightServer.js 5/5 Added invalid-compare suppressions in switch statements

Copy link
Copy Markdown

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

116 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants