Guide

Claude Opus 4.7 for a mobile app prototype: use it for one turn, not every turn

Most writeups about Claude Opus 4.7 grade it on SWE-Bench, Terminal-Bench, and GDPval. None walk a one-sentence-in, mobile-app-out vibe loop. In mk0r, Opus 4.7 ships in the picker as opus[1m] with the label Smart. The honest answer: use it for the cross-screen state planning turn only, then drop back to Haiku 4.5 to write the screens.

M
Matthew Diakonov
8 min

Direct answer (verified 2026-05-08)

Use Claude Opus 4.7 for exactly one turn during a mobile app prototype: the planning turn before a cross-screen state migration, multi-screen refactor, or hard cross-file debug. Run every other turn on Haiku 4.5. In mk0r, Opus 4.7 is the picker entry opus[1m] labeled Smart (src/components/header.tsx:768); free and anonymous sessions are pinned to FREE_MODEL = "haiku" by the gate at src/app/api/chat/model/route.ts:5.

Reference for Anthropic's pricing and tokenizer notes: anthropic.com/pricing.

The whole prototype is three stages, Opus enters for one

A mobile prototype on mk0r is a back-and-forth, not a single shot. The agent writes files into /app/src in a Vite + React sandbox, opens http://localhost:5173in a real Chromium, and the preview iframe in your browser proxies that view. Every turn you type runs through whatever model the picker is on. So the question is not “which model is best” but “which model fits this turn.”

The prototype loop, with the model that fits each stage

  1. Stage 1, Haiku draft

    First sentence in. Haiku 4.5 streams a single-screen mobile-first HTML/CSS/JS prototype into the preview iframe. First token in under a second on a warm sandbox.

  2. 2

    Stage 2, Opus 4.7 plan

    Switch the picker to Smart. One prompt: 'plan how state moves between these three screens.' Opus reads the conversation history and writes the migration plan, no edits yet.

  3. 3

    Stage 3, Haiku execute

    Switch back to Scary. The plan is now in the agent context. Haiku writes the actual files faster than Opus would, because the planning bottleneck is already cleared.

What the picker actually does when you switch to Smart

The chip in the header POSTs the new modelId for the current sessionKey. The handler validates entitlement before letting the switch through. Anonymous and free-tier users hit the gate; signed-in entitled users get the switch and the next turn runs on Opus 4.7 with the conversation history intact. There is no reset, no file loss, no agent reboot.

Model picker, real responses

That gate is two lines of source. The first defines the free model. The second refuses any other modelId for an unentitled session. Everything else, including the whole “Smart” label and the 1M-token context selection, lives in those two files.

Which turns belong on Opus 4.7, and which do not

The clean rule is one sentence: Haiku writes screens, Opus plans changes that touch more than one screen. Below is the longer version, turn by turn.

FeatureDefault (leave it on Opus the whole session)mk0r picker discipline
First-screen draftSlow, expensive, indistinguishable output for the same promptUse Haiku. The first HTML token lands in the preview iframe in under a second.
Color, layout, copy tweakPays planning compute for an edit that needs no planUse Haiku. The change is local to one file; the model needs to type, not think.
Add a second screen with shared stateHaiku alone often loses the toggle on a route changeSonnet 4.6 is enough here. Multi-file coordination beats raw speed.
Migrate state from props to a storeHaiku writes plausible code that compiles but breaks on refreshUse Opus 4.7 for ONE planning prompt. Then drop back to Haiku to execute the plan.
Cross-file behavior debug ('animation drops a frame on iOS Safari only')Haiku and Sonnet pattern-match; the answer is not in any single fileOpus 4.7 earns its keep. The reasoning compute is what you are paying for.
Refactor a working app to add auth + a backendHaiku produces a plan that misses two filesOpus 4.7 writes the plan; switch back for execution.

The numbers behind the rule

None of this is dogma; it is what falls out of four facts about how the picker is wired. The picker has four entries, the long-context variant on Opus has a 1M-token window, exactly one stage of a mobile prototype actually wants Opus, and zero anonymous users can switch to it. That last number is the most underappreciated one: it means Opus is for the “I am committing to this idea” phase, not the first sentence.

0Picker entries (default, haiku, sonnet[1m], opus[1m])
0 tokToken context on opus[1m]
0Stages of a mobile prototype Opus 4.7 should run
0Anonymous users that can switch to Opus

The single biggest workflow win is recognizing that a working prototype produced by Haiku is genuinely faster to ship than the same prototype produced by Opus 4.7, because 0xas many iterations fit in the same wall clock and budget. The win for Opus is qualitative, not perceptual: it shows up on the one turn where Haiku quietly produces a plan that misses two files. That one turn is worth the whole “Smart” tier.

Why the new tokenizer matters more than the headline price drop

Anthropic notes that Claude Opus 4.7 uses a new tokenizer that can use up to about 35% more tokens for the same fixed text versus previous Opus models. The published per-token rates went down compared to Opus 4 / 4.1, so the net effect on a real session is still cheaper, but the multiplier is not the full ratio you would estimate from the rate card. For a vibe-coding session that passes the system prompt plus accumulating conversation history on every turn, that 35% sits on top of the planning latency Opus already spends before it writes a token. The practical effect: any turn that did not need Opus is paying tokenization tax it cannot recover, on top of the model premium. Keep planning turns on Opus 4.7. Run writing turns on Haiku.

A concrete planning prompt that earns the “Smart” tier

The shape of an Opus 4.7 planning prompt is: read the history, do not edit files, hand back a plan. Something like the prompt below, sent on a session that already has three working screens written by Haiku, is the exact moment the picker should be on Smart.

We have three screens: Home, Detail, and Settings.
Right now state lives in component props passed top-down from
App.tsx. The Home toggle (favorite) is forgotten when the user
navigates to Detail and back.

Do not edit any files yet. Read the current src/ tree and
respond with:

1. The minimum store boundary that would fix this (Context,
   zustand, Jotai, or signals), with a one-line justification.
2. The exact list of files that change, in the order you would
   change them.
3. The smallest test I can run in the preview iframe to confirm
   the migration worked.

Then stop. I will switch the picker back to Scary and prompt
'execute the plan' for the actual edits.

The reason this works is that the bottleneck on this turn is not typing speed; it is the cross-file inference about what should change. Once that plan is in the conversation context, the writing turn is genuinely a Haiku problem again. Two clicks, two models, one prototype.

What to do if you cannot switch models (free tier)

The honest version of the workflow above for a free-tier session is shorter: everything runs on Haiku 4.5, because that is the only modelId /api/chat/model will accept. That is fine for a one-screen prototype, a calculator, a habit tracker, a tip splitter, a Pomodoro timer. It starts to bend on the second screen, where state has to live somewhere that survives navigation, and it bends harder on the third when you ask for a refactor. The prototype is shippable as a demo link long before any of that; the Opus turn is for the moment you decide you want to keep building, and you will know that moment when you hit it.

Pair on the planning turn

If you have a prototype on mk0r and you are about to spend a Smart turn on a refactor, book 20 minutes and we will write the planning prompt together.

Frequently asked questions

How do I use Claude Opus 4.7 to prototype a mobile app on mk0r?

Open mk0r.com, type one sentence describing the app, watch Haiku 4.5 stream the first screen into the preview iframe. That first draft is free and takes seconds. Then sign in, upgrade to a paid session, click the model picker chip, and switch from 'Scary' (haiku) to 'Smart' (opus[1m]). Use Opus 4.7 for ONE prompt, the planning turn for whatever cross-screen change comes next. Then switch back to 'Scary' to actually write the files. Opus 4.7 is wired into mk0r as the picker entry 'opus[1m]' in MODEL_LABELS at src/components/header.tsx line 768; the [1m] suffix selects Anthropic's 1M-token long-context variant.

Why not just leave the picker on Opus 4.7 for the whole prototype?

Because vibe coding is a back-and-forth, not a single shot. The thing that decides whether the loop converges is iteration count per unit of attention. Opus 4.7 is roughly 5x the per-token cost of Haiku 4.5 on output, and Opus also plans before it writes, which adds latency on every turn. On a fresh single-screen build, neither the planning compute nor the larger model is doing work the user can tell apart from Haiku, so all you are buying with Opus is a slower loop and a bigger bill. Opus only earns its keep on turns where the answer is not in any one file, which on a mobile prototype is the cross-screen state planning turn and the cross-file debug. Everywhere else, run Haiku.

What does the 'opus[1m]' label in mk0r's picker actually map to?

Claude Opus 4.7 with the 1M-token context variant. The picker chip lives in src/components/header.tsx and reads from a four-entry MODEL_LABELS map: 'default' shows as 'Fast', 'haiku' as 'Scary', 'sonnet[1m]' as 'Fast+', and 'opus[1m]' as 'Smart'. The labels are an opinion about the loop, not the leaderboard. 'Smart' is the right word because Opus produces the kind of output you have to read through to evaluate; the win is reasoning quality, not perceptual speed. Anonymous and free-tier users are pinned to 'haiku' by FREE_MODEL = 'haiku' in src/app/api/chat/model/route.ts line 5. The 'opus[1m]' option only appears callable for an authenticated session that is entitled or routing inference through a connected Claude.com plan.

What does the planning turn actually look like?

The planning turn does not edit any files. The prompt has the shape 'we have <n> screens, the data is in <where>, I want to <change>, write me a plan and a list of files to change.' Opus 4.7 reads the conversation history, the file tree the agent already built, and writes back a numbered plan with file paths and the order of edits. Then you switch the picker back to 'Scary' and prompt 'execute the plan.' Haiku takes the plan and writes the files. The reason this split works is that the expensive part of vibe coding is figuring out what to ask for. Once you know what to ask for, Haiku can almost always write it.

Does Opus 4.7's new tokenizer change my budget?

Yes, by a meaningful amount. Anthropic notes that Opus 4.7 uses a new tokenizer that may use up to 35% more tokens for the same fixed text compared to previous Opus models. The headline per-token rate dropped versus Opus 4.1, so the net effect for a typical vibe-coding session is still a real price drop, but the multiplier is not the full one you would estimate from the rate card alone. The practical workflow consequence is the same as the latency consequence: every Opus turn that did not need to be on Opus is paying for more tokenization than it is producing, on top of the larger model premium. Keep planning turns on Opus, write turns on Haiku.

Can I use Claude Opus 4.7 with mk0r if I have my own Claude.com Pro plan?

Yes. mk0r supports an OAuth path to Claude.com so the inference for every turn is billed against your Pro or Max plan instead of mk0r's shared API key. The picker labels still apply; what changes is who pays the per-token cost. With the OAuth path, Opus turns count against the rolling weekly cap on your Pro or Max plan rather than against an mk0r usage line. Heavy users who already pay Anthropic for Claude Code typically pick this path because it makes builder turns flat-rate, which means the only thing left to optimize is the picker discipline above: do not waste an Opus turn on a Haiku problem.

What about the actual mobile-ness of the prototype, does Opus 4.7 do anything special there?

Not much, and that is the point. Every model in the mk0r picker writes mobile-first HTML/CSS/JS by default, because the system prompt the agent loads in the sandbox already constrains the viewport, the spacing, and the touch targets. The model's job is the logic, not the breakpoints. So the choice between Haiku, Sonnet, and Opus 4.7 for a mobile prototype is not 'which one understands mobile better.' It is 'which one matches the shape of this turn.' Layout-and-styling turns are Haiku turns regardless of how complex the screen looks. State-migration turns are Opus turns even if the screen looks simple.

What if I need iOS or Android native, not HTML on mobile?

mk0r is honest about this: the output is HTML, CSS, and JS, mobile-shaped, running in a real Chromium inside the sandbox. That is the right shape for a throwaway prototype, a demo link you can share in a Slack thread, a clickable thing for a stakeholder review. It is not the right shape for App Store submission or for native APIs like CoreMotion or background fetch. If your prototype is going to ship as a native app, mk0r is the place you build the disposable first draft to learn what the screens should be. After that, you hand the spec to a native dev, or you migrate the working layout into a React Native or Expo project. Opus 4.7's planning turn is also the right place to write that migration plan when the time comes.

How do I switch models inside a running session without losing context?

The picker chip in the header POSTs to /api/chat/model with the new modelId for the current sessionKey. The route at src/app/api/chat/model/route.ts validates entitlement, calls setSessionModel under the hood, and the next turn runs on the new model with the conversation history intact. There is no reset. The agent process continues, the same files in /app are still there, and you can interleave Haiku, Sonnet, and Opus turns inside one prototype session. That is the reason the workflow above is feasible at all: switching between Haiku and Opus is one click, not a session reset.

Is Opus 4.7 actually better than Sonnet 4.6 for the planning turn, given the price gap?

On a small prototype, often no. Sonnet 4.6 is good enough at multi-file coordination that the planning turn it writes is usually fine. The case where Opus 4.7 noticeably beats Sonnet for planning is when the conversation history is long enough that earlier context starts to matter, or when the change crosses concerns that span more than two or three files. For a one-week throwaway prototype, the realistic split is Haiku for almost everything, Sonnet for the cross-screen turns, and Opus reserved for the one or two refactors where you actually feel Sonnet getting confused. The money you save on the wrong picker setting is not small over a hundred turns.

mk0r.AI app builder
© 2026 mk0r. All rights reserved.