awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
facebook avatar

facebook/flow

0
View on GitHub↗
22,232 stars·1,891 forks·Rust·MIT·41 viewsflow.org↗

Flow

Flow is a JavaScript static type checker and AST parser that identifies type errors and prevents runtime failures through static annotations. It functions as a code intelligence engine and a static analysis linter to identify unsafe coding patterns and enforce consistency across a codebase.

The project includes a type annotation stripper that removes static type signatures from source code, ensuring the resulting JavaScript is compatible with any runtime environment. It also provides a parser that converts typed JavaScript into an abstract syntax tree conforming to the ESTree specification.

The system covers a wide range of developer experience capabilities, including type-aware autocomplete, jump-to-definition, and hover type information. It further supports automated code refactoring, type coverage analysis to identify untyped areas, and the definition of exact object types and opaque types.

Features

  • Static Type Checkers - Functions as a static type checker for JavaScript and TypeScript codebases to prevent runtime failures.
  • JavaScript Parsers - Parses JavaScript into an abstract syntax tree conforming to the ESTree specification.
  • Code Intelligence - Provides contextual code intelligence including navigation and type mapping across the codebase.
  • Type Definitions - Creates type definitions for external modules and global APIs using separate declaration files.
  • External Library Definitions - Maps the types of external dependencies using separate declaration files to enable checking of third-party code.
  • Local Variable Declarations - Deduces types for local variables and expressions based on their surrounding context.
  • Type Narrowing - Narrows variable types within conditional branches by analyzing guards and execution paths.
  • Type Safety - Verifies type safety across the codebase by analyzing static annotations.
  • Type Annotation Stripping - Strips static type annotations from source code to ensure compatibility with standard JavaScript runtimes.
  • Coding Standards Enforcement - Identifies unsafe coding patterns and ambiguous types through a static analysis linter.
  • Typed JavaScript Parsing - Generates a syntax tree from typed JavaScript to facilitate analysis by external tools.
  • Type Inference Engines - Implements a type inference engine that deduces expression types from surrounding context and assignments.
  • Static Analysis - Provides static analysis by converting source code into an abstract syntax tree to verify type consistency without execution.
  • Code Linters - Identifies unsafe coding patterns and ambiguous types through a static analysis linter.
  • Automated Code Refactoring - Applies automated code actions to restructure expressions or fix type-cast syntax errors.
  • Developer Experience Tools - Implements developer experience tools such as autocomplete and jump-to-definition based on inferred types.
  • Static Analysis Configurations - Allows customization of type checking behavior and project boundaries via configuration files.
  • Symbol Navigation - Enables navigation from a variable or type usage directly to its original declaration.
  • Type-Aware Autocompletion - Suggests valid properties and methods based on the inferred type of the current expression.
  • Type Hover Information - Shows the evaluated type of an expression when a user hovers over a code element.
  • Exact Object Types - Allows defining exact object types to prevent the addition of unplanned properties.
  • Opaque - Provides opaque type aliases to prevent different types with identical representations from being used interchangeably.
  • Utility Types - Provides built-in utility types to transform and specialize existing type definitions.
  • ESTree AST Parsing - Analyze source code to produce an abstract syntax tree that conforms to the ESTree specification.
  • Type Coverage Analysis - Measures the percentage of the codebase covered by type annotations to identify untyped areas.
  • Type Coverage Analysis - Calculates the percentage of the codebase covered by type annotations to identify untyped areas.
  • Code Quality Tools - Enforces coding standards and identifies unsafe patterns to improve long-term maintainability.
  • Code Analysis and Linters - Static type checker for JavaScript codebases.

Star history

Star history chart for facebook/flowStar history chart for facebook/flow

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Flow

These projects share indexed features with Flow. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • analysis-tools-dev/static-analysisanalysis-tools-dev avatar

    analysis-tools-dev/static-analysis

    14,389View on GitHub↗

    This project is a comprehensive, curated directory of static analysis, linting, and security scanning utilities. It serves as a central resource for developers to discover, compare, and select tools based on specific programming languages, licensing models, and integration requirements. The directory distinguishes itself by providing deep metadata for each listed utility, including community-driven popularity rankings, maintenance status, and deployment methods. By aggregating these tools into a single searchable index, it enables teams to identify solutions for enforcing coding standards, ma

    Rustanalysisawesome-listcode-quality
    View on GitHub↗14,389
  • federico-busato/modern-cpp-programmingfederico-busato avatar

    federico-busato/Modern-CPP-Programming

    15,808View on GitHub↗

    This project is a comprehensive educational resource and programming course covering C++ language semantics and features from C++03 through C++26. It provides structured tutorials and technical guides focused on modern C++ development. The material offers specialized instruction on template metaprogramming, including the use of type traits and compile-time computations. It features detailed guides on concurrency and parallelism for multi-core execution, as well as a reference for software design applying SOLID principles and RAII. Additionally, it covers build performance optimization to redu

    HTMLc-plus-pluscode-qualitycompilers
    View on GitHub↗15,808
  • crystal-lang/crystalcrystal-lang avatar

    crystal-lang/crystal

    20,299View on GitHub↗

    Crystal is a statically typed, compiled programming language designed for high performance and memory safety. It leverages an LLVM-based compiler to translate source code into optimized machine-executable binaries, while its type-inference-based static analysis enforces strict safety rules during the build process. The language distinguishes itself through a fiber-based concurrent runtime that manages lightweight execution units for asynchronous input and output without blocking the main process. It also features a powerful compile-time macro system that allows for the inspection and transfor

    Crystalcompilercrystalcrystal-language
    View on GitHub↗20,299
  • phpstan/phpstanphpstan avatar

    phpstan/phpstan

    13,999View on GitHub↗

    This project is a static analysis engine and type checker designed for PHP codebases. It evaluates source code structure and type annotations to identify potential bugs, type mismatches, and logic errors without executing the application. By parsing code into an abstract syntax tree and applying a rule-based validation framework, it enforces code quality and safety standards across a project. What distinguishes this tool is its sophisticated type inference engine, which models dynamic language features, magic methods, and conditional types to maintain accuracy even in unconventional code. It

    PHPphpphp7phpstan
    View on GitHub↗13,999
Compare all 30 related projects→

Frequently asked questions

What does facebook/flow do?

Flow is a JavaScript static type checker and AST parser that identifies type errors and prevents runtime failures through static annotations. It functions as a code intelligence engine and a static analysis linter to identify unsafe coding patterns and enforce consistency across a codebase.

What are the main features of facebook/flow?

The main features of facebook/flow are: Static Type Checkers, JavaScript Parsers, Code Intelligence, Type Definitions, External Library Definitions, Local Variable Declarations, Type Narrowing, Type Safety.

Which projects share features with facebook/flow?

Projects with overlapping indexed features include: analysis-tools-dev/static-analysis — This project is a comprehensive, curated directory of static analysis, linting, and security scanning utilities. It… federico-busato/modern-cpp-programming — This project is a comprehensive educational resource and programming course covering C++ language semantics and… crystal-lang/crystal — Crystal is a statically typed, compiled programming language designed for high performance and memory safety. It… phpstan/phpstan — This project is a static analysis engine and type checker designed for PHP codebases. It evaluates source code… jshint/jshint — JSHint is a JavaScript static analysis tool and linter designed to detect errors and enforce coding standards. It… python/mypy — mypy is a static type checker for Python that analyzes source code to detect type errors and inconsistencies without…