# Flow
Flow is a static typechecker for JavaScript. To find out more about Flow, check out [flow.org](https://flow.org/). ## Contents - [Requirements](#requirements) - [Using Flow](#using-flow) - [Using Flow's parser from JavaScript](#using-flows-parser-from-javascript) - [Building Flow from source](#building-flow-from-source) - [Join the Flow community](#join-the-flow-community) - [License](#license) ## Requirements Flow works with: * macOS (arm64) * Linux (x86_64 and arm64) * Windows (x86_64, Windows 10 recommended) There are [binary distributions](https://github.com/facebook/flow/releases) 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](https://flow.org/en/docs/getting-started/#toc-installation), and then [the usage docs](https://flow.org/en/docs/getting-started/#toc-usage). ## Using Flow's parser from JavaScript Flow's parser is available as a compiled-to-JavaScript module published to npm, named [flow-parser](https://www.npmjs.com/package/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. 1. Install system dependencies: - Install [Rust via rustup](https://rustup.rs/). - Install the nightly Rust toolchain: ```sh rustup toolchain install nightly ``` 2. Build the Rust workspace: ```sh cd rust_port cargo +nightly build ``` 3. Run the Rust tests: ```sh cargo +nightly test ``` 4. Build an optimized `flow` binary: ```sh cargo +nightly build --release --bin flow_cli ``` 5. 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. ```sh 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: ```sh 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](src/parser/README.md). ## Running the tests See [tests/README.md](tests/README.md) for detailed testing documentation. ## Join the Flow community * Website: [https://flow.org](https://flow.org/) * Discord: https://discord.gg/8ezwRUK * irc: #flowtype on Freenode * Twitter: follow [@flowtype](https://twitter.com/flowtype) and [#flowtype](https://twitter.com/hashtag/flowtype) to keep up with the latest Flow news. * Stack Overflow: Ask a question with the [flowtype tag](https://stackoverflow.com/questions/tagged/flowtype) ## License Flow is MIT-licensed ([LICENSE](https://github.com/facebook/flow/blob/main/LICENSE)). The [website](https://flow.org/) and [documentation](https://flow.org/en/docs/) are licensed under the Creative Commons Attribution 4.0 license ([website/LICENSE-DOCUMENTATION](https://github.com/facebook/flow/blob/main/website/LICENSE-DOCUMENTATION)).