DEV Community

The Dev Signal
The Dev Signal

Posted on • Originally published at thedevsignal.com

Biome v1, Go 1.26, and the Quiet Modernization of Developer Tooling

This week's releases aren't chasing AI headlines — they're fixing the friction that slows down every serious codebase. Biome landed formatter options that kill entire categories of config debates, Go 1.26 automated the idiom modernization work nobody wants to do manually, and Astral shipped a type checker that makes Pyright feel like it's running on a dial-up connection. Here's what actually matters.


Biome v1 Ships Formatter Options and Lint Command

Biome 1.0 adds JSX quote style control, arrow function parentheses configuration, and a dedicated biome lint command that runs independently from formatting. The practical effect: you can now run lint-only checks in CI without triggering formatter output, and you can stop reaching for .prettierrc overrides just to handle quote and paren style preferences.

The extends field for config composition is the quiet win here. Multi-team monorepos have historically fought with shared Biome configs because one team's formatting rules bled into another's. Composable configs solve that without duplicating configuration files.

Breaking CLI changes shipped with this release. Read the changelog before upgrading.

Verdict: Ship. If you're already on Biome, update your config and move on — npm install --save-exact @biomejs/biome@1.0.0. Migration cost is low. If you're still on Prettier with a pile of plugins for quote/paren handling, this is a reasonable exit ramp.


Biome VS Code Extension v3 Adds Multi-Root Workspace Support

The VS Code extension now handles multi-root workspaces natively, spins up isolated Biome instances per folder, and supports single-file and unsaved-file linting. The biome.projects config setting is deprecated — native VS Code folder structure replaces it.

The trade-off is explicit: single-file and unsaved-file modes require a global Biome installation. The team removed the downloader entirely, with the stated reason being that package managers handle dependency resolution better than a custom downloader could. That's a reasonable call, but it shifts responsibility to you. If your team relies on unsaved-file linting in ephemeral environments, audit your global install situation before upgrading.

Verdict: Ship for anyone running multi-project setups in a single VS Code window. Evaluate if your workflow depends on single-file or unsaved-file features — verify global Biome availability in your dev environment first.


Go 1.26 Rewrites fix Subcommand for Modernization

go fix now ships with roughly a dozen analyzers that handle the mechanical work of upgrading Go idioms: interface{} becomes any, old-style loops become range-over-int, explicit map iteration becomes maps.Keys. One command, one pass, entire codebase.

This matters beyond convenience. LLM-generated Go code is trained on older corpus data and reliably produces outdated patterns. If you're integrating AI-generated code into Go projects — and at this point most teams are — you're accumulating idiom debt faster than manual review catches it. go fix ./... becomes a standard step in your review pipeline, not a one-time migration task.

Requires a clean git state before running since modifications happen in-place. Use go fix -diff ./... to preview changes before committing.

Verdict: Ship. This is official toolchain functionality. Run go fix -diff ./... on your codebase today to assess scope, then run the real pass. Batch these changes in a dedicated commit, separate from business logic, to keep code review clean.


Biome 2.1 Scans Only Requested Files, Improves Types

Biome 2.1 changes the light scanner to treat specified files as hints rather than scanning from project root. The result is faster linting on partial codebases and nested directory targets without any configuration changes. Type inference for floating promises improved from roughly 75% to 85% detection.

The promise detection improvement is the higher-signal change for most teams. Unhandled async operations are a persistent source of subtle bugs, and getting better automated coverage without manual auditing is worth noting. If you run biome lint on specific subdirectories or file globs — common in monorepos — the scanner change will reduce overhead noticeably.

Verdict: Ship. Drop-in upgrade for Biome 2.0 users. No configuration changes required unless you want to explicitly target the scanner optimization. The type inference improvement alone justifies the update.


Ruff v0.10 Stabilizes Rules, Improves Version Detection

Ruff 0.10 fixes config discovery to respect requires-python in pyproject.toml even when no [tool.ruff] section exists. Previously, missing Ruff config silently defaulted to Python 3.9 behavior — meaning projects could pass CI lint checks while running rules mismatched to their actual Python version. That's the kind of silent drift that surfaces as a confusing bug six months later.

The stricter noqa comment parsing is also worth auditing. Malformed rule lists or trailing text after file-level suppressions previously suppressed all rules silently. Upgrading may surface lint violations that were being incorrectly suppressed.

Verdict: Ship for most projects. Run a CI pass before merging if you have unconventional noqa formatting in your codebase. If you're already setting explicit target-version, expect no output changes.


Astral Releases ty, Rust-Based Python Type Checker

ty is Astral's incremental Python type checker, architected from the ground up around LSP performance. The benchmark numbers: 4.7ms for live type diagnostics versus 386ms for Pyright. That's not a marginal improvement — it's a different category of feedback loop.

The architectural bet is that type checking needs to be designed for incremental re-computation, not batch analysis. Editing a central file in a large project (the PyTorch-scale example the team uses) stays interactive rather than blocking your editor while the checker reprocesses the dependency graph.

Astral uses ty exclusively internally. It's in Beta, with stable release targeting later in 2025. Install via uv tool install ty@latest or the VS Code extension. Requires Python 3.8+.

Verdict: Evaluate now, ship when it unblocks you. If editor lag during type checking is already a pain point — especially on large codebases or files with dense imports — the Beta is stable enough to trial. Not a mandatory migration if Pyright is working fine for your team, but the latency gap is real enough to warrant a serious look.


If this kind of signal-to-noise ratio is useful, Dev Signal publishes every issue at thedevsignal.com — worth bookmarking if you want to stay current on the tools layer without wading through launch posts. Subscribe there to get the next issue directly.

Top comments (0)