facebook/flow
43.0
Weak · 29 July 2026
517.5k
lines of production code
Rust
with JavaScript
2
measurements over time
How this codebase got here
Score
- CAI 34 → 43 (+8.9)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.
Lenses
- Code Health 52 → 47 (-5.7)
- Architecture 56 → 57 (+0.3)
- Maturity 73 → 76 (+2.3)
- Readiness 30 → 30 (-0.3)
- Security 20 → 52 (+32.1)
- Domain Modelling 100 → 100 (+0.0)
Resolved (272)
- AnnotateOptionalPropertiesMapper.get_props_for_obj (cyclomatic 17) (rust_port/crates/flow_codemods/src/annotate_optional_properties.rs)
- Change coupling: ast_builder.rs ↔ flow_ast_differ.rs (rust_port/crates/flow_parser_utils/src/ast_builder.rs)
- Change coupling: ast_visitor.rs ↔ ast_builder.rs (rust_port/crates/flow_parser/src/ast_visitor.rs)
- Change coupling: core.js ↔ prelude.js (lib/core.js)
- Change coupling: estree_translator.rs ↔ ast_builder.rs (rust_port/crates/flow_parser/src/estree_translator.rs)
- Change coupling: estree_translator.rs ↔ flow_ast_differ.rs (rust_port/crates/flow_parser/src/estree_translator.rs)
- Change coupling: estree_translator.rs ↔ polymorphic_ast_mapper.rs (rust_port/crates/flow_parser/src/estree_translator.rs)
- Change coupling: flow_js.js ↔ TryFlow.js (website/libs/flow_js.js)
- Change coupling: polymorphic_ast_mapper.rs ↔ ast_builder.rs (rust_port/crates/flow_parser/src/polymorphic_ast_mapper.rs)
- Change coupling: polymorphic_ast_mapper.rs ↔ flow_ast_differ.rs (rust_port/crates/flow_parser/src/polymorphic_ast_mapper.rs)
- DefFinder.visit_assignment_expression (cognitive 40) (rust_port/crates/flow_env_builder/src/name_def.rs)
- DefFinder.visit_assignment_expression (cyclomatic 38) (rust_port/crates/flow_env_builder/src/name_def.rs)
- DefFinder.visit_function_param (cyclomatic 16) (rust_port/crates/flow_env_builder/src/name_def.rs)
- Dependency hygiene not measured — no supported dependency manifest was read
- EdenFS.wait_for_init (cyclomatic 16) (rust_port/crates/flow_server_monitor/src/file_watcher.rs)
- EffectVisitor.call (cyclomatic 17) (rust_port/crates/flow_typing_statement/src/react_rules.rs)
- FileSig.to_debug_string (cyclomatic 20) (rust_port/crates/flow_parser_utils/src/file_sig.rs)
- FileTooLong: lib/core.js (lib/core.js)
- FileTooLong: src/flow_dot_js_wasm.js (src/flow_dot_js_wasm.js)
- FlowServer.run (cyclomatic 16) (rust_port/crates/flow_server/src/standalone.rs)
- …and 252 more
New (270)
- Build action pinned to a mutable branch
- Change coupling: lib.rs ↔ any_helpers.rs (rust_port/crates/flow_typing_debug/src/lib.rs)
- Change coupling: normalizer.rs ↔ type_visitor.rs (rust_port/crates/flow_typing_ty_normalizer/src/normalizer.rs)
- Change coupling: parse.rs ↔ type_service.rs (rust_port/crates/flow_heap/src/parse.rs)
- Change coupling: type_sig_merge.rs ↔ type_visitor.rs (rust_port/crates/flow_typing_utils/src/type_sig_merge.rs)
- Change coupling: type_sig_parse.rs ↔ type_visitor.rs (rust_port/crates/flow_type_sig/src/type_sig_parse.rs)
- Context::interface_merge_unify_tasks (cognitive 27) (rust_port/crates/flow_typing_context/src/lib.rs)
- DefFinder::statement_list::extract_func_static_assign (cognitive 28) (rust_port/crates/flow_env_builder/src/name_def.rs)
- DefFinder::visit_assignment_expression::other_pattern_hint_opt (cognitive 27) (rust_port/crates/flow_env_builder/src/name_def.rs)
- DefFinder::visit_assignment_expression::other_pattern_hint_opt (cyclomatic 16) (rust_port/crates/flow_env_builder/src/name_def.rs)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- FileTooLong: flow_js/dispatch.rs (rust_port/crates/flow_typing_flow_js/src/flow_js/dispatch.rs)
- FileTooLong: flow_js/eval_helpers.rs (rust_port/crates/flow_typing_flow_js/src/flow_js/eval_helpers.rs)
- FileTooLong: flow_js/helpers.rs (rust_port/crates/flow_typing_flow_js/src/flow_js/helpers.rs)
- FileTooLong: flow_js/multi_arg_helpers.rs (rust_port/crates/flow_typing_flow_js/src/flow_js/multi_arg_helpers.rs)
- FileTooLong: flow_js/unification_helpers.rs (rust_port/crates/flow_typing_flow_js/src/flow_js/unification_helpers.rs)
- FileTooLong: src/annotate_exports.rs (rust_port/crates/flow_codemods/src/annotate_exports.rs)
- FileTooLong: src/annotation_inference.rs (rust_port/crates/flow_typing_utils/src/annotation_inference.rs)
- FileTooLong: src/ast.rs (rust_port/crates/flow_parser/src/ast.rs)
- FileTooLong: src/ast_builder.rs (rust_port/crates/flow_parser_utils/src/ast_builder.rs)
- …and 250 more
Changes since last survey
- 54 commits — 47 feature/other, 7 fixes
By area
- rust_port/crates — 12 commits
- packages/flow-dev-tools — 8 commits
- website/yarn.lock — 7 commits
- (root) — 4 commits
- packages/flow-upgrade — 4 commits
- packages/eslint-plugin-fb-flow — 3 commits
- website/src — 3 commits
- .github/workflows — 2 commits
- packages/babel-plugin-transform-flow-enums — 2 commits
- packages/flow-enums-runtime — 2 commits
- packages/flow-for-vscode — 2 commits
- packages/scripts — 1 commit
- packages/yarn.lock — 1 commit
- scripts/tests_bin — 1 commit
- tests/class_computed_props — 1 commit
- website/docs — 1 commit
Notable commits
- fix: Revert D113565720
- fix: [Tasks][Test Blame] Fix broken fbcode//flow/src/parser/test:oxidized_jest_test - unmanaged caused by D113565720
- fix: [flow][docs] Fix flow-typed environment setup
- fix: [flow][fix] Fix stale LSP references after didChange
- fix: [flow][fix] Restore ephemeral command event logging
- fix: [flow][perf][fix] Fix slow crawling during parsing stage due to the new glob system
- fix: [flow][website] Fix Flow errors in website code
- change: Bump @babel/core from 7.14.6 to 7.29.7 in /packages/eslint-plugin-fb-flow (#9465)
- change: Bump @babel/core from 7.14.8 to 7.29.6 in /packages/flow-upgrade (#9461)
- change: Bump brace-expansion from 1.1.11 to 1.1.16 in /packages/flow-enums-runtime (#9457)
- change: Bump brace-expansion from 1.1.11 to 1.1.16 in /packages/flow-upgrade (#9462)
- change: Bump brace-expansion from 1.1.12 to 1.1.16 in /website (#9459)
- change: Bump brace-expansion from 1.1.13 to 1.1.16 (#9468)
- change: Bump braces from 3.0.2 to 3.0.3 in /packages (#9469)
- change: Bump braces from 3.0.2 to 3.0.3 in /packages/eslint-plugin-fb-flow (#9474)
- change: Bump braces from 3.0.2 to 3.0.3 in /packages/flow-for-vscode (#9470)
- change: Bump cross-spawn from 7.0.3 to 7.0.6 in /packages/flow-for-vscode (#9471)
- change: Bump cross-spawn from 7.0.3 to 7.0.6 in /website (#9473)
- change: Bump dom-iterator from 1.0.0 to 1.0.2 in /website (#9472)
- change: Bump fast-uri from 3.1.2 to 3.1.4 in /website (#9463)
- …and 34 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
facebook/flow was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 29 July 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 74ab021f0e0b889e502bb59825ab098b32477f5f — the exact code this score is about.
- Scored under rubric-2026.08.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.