HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
meta
flow
Rust2014–2026
meta / flow

flow

Adds static typing to JavaScript to improve developer productivity and code quality.

55Distinct people
64Mentions
1Explicit recommenders
22.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Adds static typing to JavaScript to improve developer productivity and code quality.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I'm using Flow but I'd recommend TypeScript. I love Flow but TypeScript just seems to be more seriously maintained and less buggy. I've been waiting some bug fixes for 2 years…

ggregoire used a recommendation phrase. 2 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 4:01:40 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year64 dated mentions

Observed mentions: 2014-11-18 18:29:48 UTC to 2026-06-07 04:00:52 UTC.

0510152014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 13 mentions; 0 submissions, 13 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 11 mentions; 1 submissions, 10 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 10 mentions; 2 submissions, 8 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC505
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC13013
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC11110
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC1028
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC909
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC606
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC202
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC202
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC211
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC220

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Flow Flow is a static typechecker for JavaScript. To find out more about Flow, check out flow.org. Contents Requirements Using Flow Using Flow's parser from JavaScript Building Flow from source Join the Flow community License Requirements Flow works with: macOS (arm64) Linux (x86_64 and arm64) Windows (x86_64, Windows 10 recommended) There are binary distributions for each of these platforms and you can also build it from source on any of them as well. Using Flow Check out the installation instructions, and then the usage docs. Using Flow's parser from JavaScript Flow's parser is available as a compiled-to-JavaScript module published to npm, named flow-parser. Most end users of Flow will not need to use this parser directly, but JavaScript packages which make use of parsing Flow-typed JavaScript can use this to generate Flow's syntax tree with annotated types attached. Building Flow from source Flow is written in Rust. GitHub CI builds Flow from the rust_port workspace with nightly Rust. Install system dependencies: Install Rust via rustup. Install the nightly Rust toolchain: rustup toolchain install nightly Build the Rust workspace: cd rust_port cargo +nightly build Run the Rust tests: cargo +nightly test Build an optimized flow binary: cargo +nightly build --release --bin flow_cli Build flow.js (optional): The flow.js build also uses the Rust port. Install Emscripten, Node, Yarn, and a Rust nightly toolchain with the wasm32-unknown-emscripten target and rust-src component first. GitHub CI uses Emscripten 3.1.44 and nightly Rust for this build. rustup toolchain install nightly-2026-04-14 --target wasm32-unknown-emscripten --component rust-src RUSTUP_TOOLCHAIN=nightly-2026-04-14 make js FLOW_JS_IMPL=rust-wasm This produces bin/flow.js. To build a faster, larger local development version instead, run: RUSTUP_TOOLCHAIN=nightly-2026-04-14 make js FLOW_JS_IMPL=rust-wasm FLOW_DOT_JS_WASM_PROFILE=dev The Flow parser can also be compiled to JavaScript. Read how here. Running the tests See tests/README.md for detailed testing documentation. Join the Flow community Website: https://flow.org Discord: https://discord.gg/8ezwRUK irc: #flowtype on Freenode Twitter: follow @flowtype and #flowtype to keep up with the latest Flow news. Stack Overflow: Ask a question with the flowtype tag License Flow is MIT-licensed (LICENSE). The website and documentation are licensed under the Creative Commons Attribution 4.0 license (website/LICENSE-DOCUMENTATION).
Read the full README on GitHub

What Hacker News says

13 sources
similar : Mozilla "Mentor Bugs If you are looking for a bug with guidance, we maintain a set of bugs that are marked with an assigned mentor (see "Whiteboard" field). The mentor will help you get the necessary information to understand the issue, point out relevant parts of the code to look at, etc. You can browse these bugs on Bugs Ahoy!, but here's a list of unassigned mentor bugs to get you started:" https://wiki.mozilla.org/Mobile/Get_Involved#Mentor_Bugs Other examples: #easyfix: https://github.com/facebook/flow/labels/easyfix #beginner: https://github.com/eslint/eslint/labels/beginner #exp:beginner https://github.com/docker/docker/issues?q=is%3Aopen+is%3Aiss...
In First Timers Only
We've been using Flow at Streak. Compared to my last experience with TypeScript, it's been really great for how easy it is to add into an existing codebase. Nothing about our build process had to change because we were already using Babel (which by default strips out Flow types and supports JSX) with Browserify. Flow understands node-isms and follows how commonjs and es6 modules include each other, and only enforces its type checking on files that have opted in with the magic /* @flow */ comment, so we didn't have to stop the world and make everything play nice with it in one go. We're gradually opting in more of our codebase over time. Its type system maps to javascript really well, supporting things like optional types, disjoint unions, intersection types, and polymorphic functions and classes. The annoying things with Flow: No Windows
Read the rest
support yet which is the one thing holding me back from transitioning some personal projects over, but it sounds like progress is coming there[1]. There doesn't yet seem to be any real plans for letting 3rd party NPM modules bundle their own type definitions and have them be automatically used[2]. (Flow doesn't have issues with untyped imports at least. They're just treated as the any type.) Editor integration is pretty bad still. There's an Atom plugin, but it's buggy. This doesn't affect me too much as the "flow" command for type checking is quick to use (on the first run, it starts a long-running daemon in the background which watches your whole project for changes and keeps their type information cached) in the terminal I already always have open for interacting with git. [1]: https://github.com/facebook/flow/issues/6 [2]: https://github.com/facebook/flow/issues/593
In Why we’re no longer using Core.typed
I'm also a fan of namespacing variants, and I used it extensively on an OCaml representation of the SpiderMonkey AST. (Coincidentally, up until writing our own parser we were using pfff's JavaScript parser! Go pfff!). Anyway, here are some other useful things I found in OCaml along the way: Without namespacing, you might be using mutually recursive type definitions like type statement = ExpressionStatement of expression and expression = FunctionExpression of statement list to do this with modules you need to use recursive modules, like module rec Statement : sig type t = Expression of Expression.t end = struct type t = Expression of Expression.t end and Expression : sig type t = Function of Statement.t list end = struct type t = Function of Statement.t list end One of the sucky things about recursive mod
Read the rest
ules is that you cannot omit the signatures, however if your modules only include types then there is a shortcut that looks like module rec Statement : sig type t = Expression of Expression.t end = Statement and Expression : sig type t = Function of Statement.t list end = Expression Links: Big real world example: https://github.com/facebook/flow/blob/3a5b4040b7d2a648f97a06... Recursive module docs: http://caml.inria.fr/pub/docs/manual-ocaml-400/manual021.htm...
In Namespacing Variants in ML
> seen some truly awful TS code (mainly where the devs want to pretend the web doesn't exist) I agree. Typescript is an impressive project, but most of the Typescript code I see looks more like C# or Java than Javascript. Sadly, it seems to have been created to accommodate that kind of approach. But there's a lot to be said for strong and static typing when dealing with large projects. That's why I'm hopeful for Flow, Facebook's new project to add static typing to Javascript: https://github.com/facebook/flow
In React v0.13.0 Beta 1

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.