Biome v1.7 automates ESLint and Prettier migration
Single-command migration from ESLint and Prettier to Biome, plus experimental JSON reports and staged-file linting.
Eliminates manual rule porting when consolidating linting and formatting into one tool. The `--staged` flag integrates directly into pre-commit workflows without external dependencies.
Replaces dual ESLint+Prettier setup with single Biome config. Requires Node.js for plugin resolution; doesn't support YAML configs yet. Worth migrating now if your ESLint extends supported plugins (TypeScript, React, Unicorn, JSX A11y); test JSON reports first—they're experimental and may change.
“biome migrate eslint”
“biome migrate prettier --write to migrate your Prettier configuration to Biome”
“biome lint --reporter=json-pretty”
“biome check --staged”
“The report format is **experimental**, and it might change in the future”
“Nursery rules are exempt from semantic versioning”
Get issues like this in your inbox — free, 3x a week.
Quick Signals
Cut agent token spend 60% with context routing
[STATUS] headers and task-tier model routing eliminate redundant re-parsing and overprovisioning, cutting session tokens from 12,400 to 5,100 with zero quality loss.
Agent loops burn tokens re-reading unchanged history and running expensive models on cheap tasks. These patterns shift cost from per-token overhead to architecture, freeing budget for longer reasoning where it matters.
Replaces full-context-recap patterns with append-only [STATUS] blocks and task-based model selection. Requires prompt restructuring and router config; no new infrastructure. Worth trying immediately—[STATUS] pattern alone saves ~15% per session with zero risk.
“cut costs 60% with zero quality loss”
“agents were burning 40-50% of tokens re-parsing conversation history”
“Moving tool definitions from the middle of prompts to the top saved ~15% per session”
“70% of agent tasks are utility and planning, not creative reasoning”
“Monthly API spend $410 before, $165 after”
“Avg tokens per session 12,400 before, 5,100 after”
Gemini image generation accepts Imagen parameters silently, ignores them, returns 200 OK with wrong output — half-migrated code ships undetected.
Silent failures in API migrations cascade downstream weeks later with no error signal. Response shape, endpoint, and parameter names all differ between Imagen and Gemini; defensive parsing masks the breakage until production assets stop appearing.
Enjoying Dev Signal? Get every issue in your inbox.
Free forever · 3 issues a week · One-click unsubscribe
3 issues a week · Free forever · 4,200+ developers
Replaces Imagen 4.0 models entirely. Requires full rewrite: new endpoint (:generateContent vs :predict), new response path (candidates[0].content.parts[0].inlineData vs predictions[0].bytesBase64Encoded), removed batch parameter (sampleCount), moved aspect-ratio namespace, dropped safety controls (personGeneration). Not ready to swap model strings. Mask-based editing has no replacement — audit that surface before committing to migration.
“On June 24, 2026, Google shuts down every remaining Imagen model on the Gemini API”
“the migration is not loud. Imagen and Gemini's image generation are not the same API with a different model string — they are two different request shapes, two different endpoints, and two different parameter vocabularies”
“Gemini's image endpoint will happily accept a request full of Imagen-era parameters, ignore the ones it doesn't recognize, and return 200 OK with an image. Not the image you asked for. An image.”
“Gemini's image API has no sampleCount. It generates one image per call”
“personGeneration on a migrated request is — you'll notice the pattern by now — an unrecognized key, silently dropped”
New stabilized APIs for pattern matching assertions and NonZero range iteration reduce boilerplate in match-heavy code; Cargo now permits git+registry dual specs per dependency.
assert_matches! eliminates custom test helpers for assertion patterns; NonZero range iteration avoids unsafe conversions in type-safe loops. Dual git/registry specs in Cargo resolve publish workflows that require different sources locally vs. on crates.io.
assert_matches! replaces hand-rolled macro patterns immediately—use now. NonZero ranges enable safer numeric code without friction. Cargo dual-spec requires no config changes but unblocks mixed-source dependency strategies. All three are ready for production use.
“Support iterating over ranges of NonZero integers”
“Allow a dependency to specify both a git repository and an alternate registry. Just like with crates.io, the git repository will be used locally, but the registry version will be used when published.”
“assert_matches!”
rust-releaseapi-stabilizationcargo-workflow
Gemini 2.5 Flash trades reasoning control for speed
Gemini 2.5 Flash introduces tunable "thinking budget" for cost-latency tradeoffs, positioning between 2.0 Flash and 2.5 Pro on price-performance curve.
Developers now have granular control over reasoning depth per request instead of binary low/medium/high toggles, enabling cost optimization for latency-sensitive agentic workloads. This shifts the pricing model from model-tier selection to per-call budget allocation.
Replaces fixed reasoning tiers with continuous budget control. Requires testing against your SWE-bench and reasoning workload baselines—early signals show mixed results vs o3/Sonnet 3.7. Worth piloting now if you're already on Gemini API; benchmark first before migration.
“Gemini 2.5 Flash introduces a new "thinking budget" that offers a bit more control over the Anthropic and OpenAI equivalents”
“a hybrid reasoning model where developers can control how much the model reasons, optimizing for quality, cost, and latency”
“pricing for 2.5 Flash seemingly chosen to be exactly on the line between 2.0 Flash and 2.5 Pro”
import defer defers module evaluation until first use, enabling lazy loading without transforming code—only works with namespace imports and requires native runtime support or bundler handling.
Reduces startup overhead by deferring expensive module initialization until actually accessed; simplifies conditional loading patterns without manual wrapper functions.
Replaces manual lazy-loading patterns. Requires runtime or bundler supporting deferred evaluation—use only with --module preserve or esnext. Production-ready for modern Node.js; beta status means API surface stable but ecosystem tooling still catching up.
“import defer allows you to import a module without immediately executing the module and its dependencies”
“the module is only evaluated on the first use”
“import defer is not transformed or downleveled at all by TypeScript”
“import defer will only work under the --module modes preserve and esnext”