
Pyrefly v1.0.0 (Meta, MIT, released May 12 2026) is a Rust-built Python type checker and LSP server that replaces mypy in both CI and the editor with a single pip install. Independent benchmarks show 49× faster than mypy on a 120k-line codebase. The VS Code extension (meta.pyrefly) and PyCharm 2026.1.2 native integration both work out of the box.
mypy has been the slowest step in your Python CI for a while, the wait for a serious alternative is over. Meta released Pyrefly v1.0.0 on May 12, 2026 1 — a Rust-based Python type checker and language server (LSP) that already runs on Instagram's 20-million-line codebase as the default type checker. 1 One package, one pip install, covers both CI checks and in-editor type inference.pip install pyrefly
# or
uv add --dev pyreflypyrefly check from the terminal for CI batch checking, or let the bundled LSP server power go-to-definition, hover types, and code completion in your editor — both come from the same binary. 1def foo(x): return True is inferred as (x: Any) -> bool without any annotation. 1 Flow types track literal values through control flow: x: int = 4 is tracked as Literal[4] at the next usage, narrowing further in conditionals.off, basic (high-confidence errors only — the default for unconfigured projects), legacy (mypy-compatible behavior for gradual migration), default, and strict (no implicit Any). 5RootModel, pydantic-settings) and Django (model relationships, fields, views, factory_boy). Jupyter notebooks get full parity with .py files: rename, find references, code actions, document symbols. 1# 1. Install
pip install pyrefly
# 2. Auto-generate config (detects existing mypy.ini / pyproject.toml / .mypy.ini)
pyrefly init
# → writes [tool.pyrefly] to pyproject.toml, sets preset = "legacy"
# 3. Run
pyrefly check src/pyproject.toml block looks like this:[tool.pyrefly]
project-includes = ["src/**/*"]
preset = "legacy"pyrefly infer src/utils.pydef total(numbers):
return sum(numbers)pyrefly infer output):def total(numbers: list[int]) -> int:
return sum(numbers)"python.pyrefly.displayTypeErrors": "force-on"| Package | Pyrefly v1.0 | Pyright v1.1.409 | Mypy v2.1.0 |
|---|---|---|---|
| django | 1.7 s / 292 MB | 23.1 s / 1,035 MB | 12.7 s / 409 MB |
| pandas | 11.7 s / 756 MB | timeout (>300 s) | 31.1 s / 586 MB |
| tensorflow | 11.6 s / 707 MB | 211.7 s / 3,951 MB | 76.6 s / 1,265 MB |
| flask | 0.4 s / 186 MB | 4.1 s / 280 MB | 3.9 s / 189 MB |
pyrefly coverage report was renamed. Use pyrefly report — the old subcommand name is documented but doesn't work in v1.0.0. 10 Pyrefly v1.0 — Reddit r/Python|[https://www.[reddit.com/r/Python/comments/1tbyd7m/ann_pyrefly_v10_fast_type_checker_language_server/]]](https://www.reddit.com/r/Python/comments/1tbyd7m/ann_pyrefly_v10_fast_type_checker_language_server/]])](https://reddit.com/r/Python/comments/1tbyd7m/ann_pyrefly_v10_fast_type_checker_language_server/]]](https://www.reddit.com/r/Python/comments/1tbyd7m/ann_pyrefly_v10_fast_type_checker_language_server/]]))pyrefly.org
pyrefly.org
marketplace.visualstudio.com
blog.jetbrains.com
pyrefly.org
python-type-checking.com
blog.venturemagazine.net
pydevtools.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.