Flow Blog
medium.com/flow-type · Company blog · on HN since 2017
The Flow team at Meta writes about Flow, the JavaScript static type checker, covering language features, performance, and project direction.
What HN saysHN links it when comparing Flow with TypeScript, such as enums and opaque types, and for its statement that internal Meta needs come first.
21HN people shared it
7linked it in comments
17stories submitted
86story points
3 years agolast shared
2017people per year2026
Most-shared posts
- 1Clarity on Flow’s Direction and Open Source Engagement9 people · 18 points · first shared 2021 · discussion on HN
- 2Hiding Implementation Details with Flow’s New Opaque Type Aliases Feature2 people · 2 points · first shared 2017 · discussion on HN
- 3Scaling Flow to tens of millions of lines of JavaScript with Types-First mode2 people · 1 points · first shared 2020 · discussion on HN
- 4What the Flow team has been up to1 people · 44 points · first shared 2019 · 10 comments on HN
- 5TypeScript Enums vs. Flow Enums1 people · 7 points · first shared 2021 · 8 comments on HN
- 6New Flow Language Features for React1 people · 3 points · first shared 2024 · discussion on HN
- 7Typing Higher-Order Components in Recompose with Flow1 people · 2 points · first shared 2017 · discussion on HN
- 8New Flow Language Rule: Constrained Writes1 people · 2 points · first shared 2022 · discussion on HN
- 9Better Flow Error Messages for the JavaScript Ecosystem1 people · 2 points · first shared 2018 · discussion on HN
- 10Supporting React.forwardRef and Beyond1 people · 2 points · first shared 2018 · discussion on HN
- 11A more responsive Flow1 people · 1 points · first shared 2019 · discussion on HN
- 12Introducing Flow linter: a customizable framework for JavaScript static analysis1 people · 1 points · first shared 2017 · discussion on HN
- 13Even Better Support for React in Flow1 people · 1 points · first shared 2017 · discussion on HN
- 14On the roadmap exact objects by default 16b72933c5cf1 people · first shared 2019
What HN people wrote when they linked it
lewisl9029 · 2023-03-16
Great list!
Related to your point on supporting 0-transpilation workflows as a first class citizen, is the fact that Flow was explicitly just type annotations & checking, and aimed to introduce 0 runtime constructs.
This is something Flow did from the beginning and TypeScript eventually established as a non-goal after already implementing several runtime constructs that they can no longer afford to remove for backwards compat [1].
Though interestingly enough, Flow themselves recently announced they're going to start introducing runtime constructs, which is an interesting plot twist [2].
[1] https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals#n…
[2] https://medium.com/flow-type/clarity-on-flows-direction-and-open-sourc…
RyanCavanaugh · 2023-03-16
I presume they're referring to https://medium.com/flow-type/clarity-on-flows-direction-and-open-sourc…
GeZe · 2021-11-03
Another example would be the difference between their enum features: https://medium.com/flow-type/typescript-enums-vs-flow-enums-83da2ca4a9… "TypeScript Enums vs. Flow Enums"
johncoltrane · 2021-06-17
I read https://medium.com/flow-type/clarity-on-flows-direction-and-open-sourc… here like two or thee weeks ago. In short, their priority is still internal teams and projects.
jamesisaac · 2019-01-16
Ah I see. That can be achieved since Flow 0.51 with opaque types[1][2]. It seems like TypeScript hasn't yet caught up with this functionality[3].
[1] https://medium.com/flow-type/hiding-implementation-details-with-flows-…
[2] https://flow.org/en/docs/types/opaque-types/
[3] https://github.com/Microsoft/TypeScript/issues/15807#issuecomment-3011…
nxrabl · 2022-10-01
Flow feels almost like the Betamax to Typescript's VHS - Flow is better technically in many ways (in addition to the things you mention, I miss being able to spread the properties of one type into another, rather than having to inherit from an interface), but in practice, in terms of engineering cost, it's so much more expensive that it's hard to justify using it.
Flow's team have made it clear [0] that they don't care about usage outside internal Facebook projects, so since Facebook (from what I hear) uses few external JS dependencies, support for library types is terrible - there's no practical way for library developers to ship Flow types with their library. The third-party flow-typed repository helps somewhat, but relatively few libraries are covered there, so in practice you'll need to write your own typedefs for most libraries you want covered.
When I worked in a Flow codebase, I enjoyed writing Flow types for things, but it was only ever fun in a sudoku-puzzle-solving, Zachtronics-game kind of way. The tools provided were technically enough to express whatever you wanted, but it always took some lateral thinking. TS certainly allows for the same kind of type astronautery, but as a non-library app developer you never have to resort to that; you can always fall back to something slightly less strict that covers you from most real-world problems without the all-or-nothing strictness Flow mandates. In the end I was the last holdout on the team advocating for not…
inbx0 · 2021-04-19
> [citation needed]
I don't have anything but own anecdotial evidence to provide. Would be cool if there were some good, recent benchmarks between the two, but I wasn't able to find any.
Maybe I've just configured something wrong, but I keep facing this issue where autocomplete stops to think suggestions and might just freeze the whole VSCode for a second. This is in a small project that has some fairly large library definition files (namely, aws-sdk).
If you search for "TypeScript performance", you'll find a bunch of issues and posts discussing the subject, so I don't think I'm totally alone in calling it out.
Granted, Flow gets it's share of similar search results and I have also experienced similar issues where a recheck sometimes takes long and CPU usage jumps very high. This side of Flow has been consistently improving between almost every release, though. Most recently, a couple months back, their switch to this new "types-first" architecture [1] is supposedly unlocking something like 50%-90% perf improvements compared to what they vere before.
My point with this isn't to question your experience with Flow, I've sometimes faced similar issues. I'm just saying that, depending on the Flow version you were using, things may have changed a lot for the better.
Just so that I'm not talking _completely_ out of my ass here, as a quick very unscientific test I cloned the Tutanota project's repo [2]. SCC says there's 967 JS files, consisting of 205433 lines of code in…