Switching the default to Sonnet 4.6
Sonnet 4.6 landed as the new default in Claude Code. Practical notes on when it replaces Opus for mobile work and when it doesn't.
Switching the default to Sonnet 4.6
Anthropic released Claude Sonnet 4.6 on February 17 as the default model on Claude Code and on Free and Pro plans. The release notes call out improved coding consistency, stronger long-horizon planning, and better frontend generation. The practical question for a mobile engineer is: does it displace Opus as my daily driver?
Mostly yes. With caveats worth listing.
Where Sonnet 4.6 wins outright. Sonnet is now fast enough, and capable enough, that most of the day-to-day work runs through it without compromise: writing a new Compose composable against a known design system, extending a ViewModel, wiring a new route in Navigation Compose, adding a unit test, refactoring a sealed class. The kind of work that fills a pull request description with twenty small commits. Sonnet 4.6 handles these in a tighter loop than Opus, and the quality difference on well-scoped tasks isn't big enough to justify the latency tax of the larger model.
Where I still reach for Opus. The tasks where the failure mode is "the agent needed to hold more in its head than it could" still go to Opus 4.6 with the 1M context on. Examples from the last week:
- Diagnosing a Compose recomposition loop that touched four files across two feature modules plus a third-party library. The reasoning needed a bigger working set than Sonnet comfortably held.
- Porting a legacy Fragment-based flow to a Compose destination when the navigation contract with the rest of the app was non-obvious. Opus planned the interface changes; Sonnet executed them once the plan was in place.
- ExoPlayer configuration work that required reasoning about lifecycle, surface management, and buffer targets at the same time.
The split works because Claude Code lets it. The model selector in Claude Code is the single most underrated piece of the tooling. Default to Sonnet for throughput. Switch to Opus when the problem is hard enough that a larger model pays for its own latency. Don't use Opus by default — you'll slow down the trivial cases, and most of coding is trivial cases.
One observation on frontend generation. Sonnet 4.6's frontend improvements are real on React and Compose both. The shape of a generated Compose function — parameter ordering, modifier chaining, state hoisting — is noticeably more idiomatic than 4.5. This is the sort of quiet improvement that doesn't show up in a benchmark but saves review time on every PR.
The prompt injection resistance matters more than it reads. Sonnet 4.6's hardening against prompt injection is listed as a core improvement. On a mobile agent pipeline that pulls in third-party documentation, npm/Gradle dependency READMEs, and Stack Overflow snippets as context, this is not a theoretical concern. I treat every external context source as potentially adversarial. Sonnet 4.6 is the first model where I've felt the defense was built in rather than bolted on.
Short version: change the default, keep the Opus toggle. The 4.6 line is the first generation where I don't feel like I'm picking between speed and quality for the common case.