The median cost of generating the same Pokémon app was $2.67 with Hono+htmx and $4.97 with Angular. That difference is worth investigating. It does not, by itself, justify rewriting a working application.
Nolan Lawson published the experiment on October 28, 2026; November 1 is the briefing date. It used Claude Opus 5.5 at high effort across 12 stacks. We reviewed the published material but did not rerun the benchmark.
What the 1.9× figure measures
| Stack | Median API-equivalent cost per run | Relative to Hono+htmx |
|---|---|---|
| Hono+htmx | $2.67 | 1.00× |
| Astro | $2.76 | 1.03× |
| Next.js | $3.14 | 1.18× |
| Angular | $4.97 | 1.86× |
The first two columns select four rows from the author’s cost table; we calculated the last column. Each cost median includes five runs. These are Claude Code’s API-equivalent amounts, not individual invoices: the author ran them under a Max subscription.
Save the following as ratios.mjs and run node ratios.mjs with Node.js 18 or later. It needs no packages, credentials, or network access. We executed this arithmetic locally:
const usd = { honoHtmx: 2.67, astro: 2.76, next: 3.14, angular: 4.97 };
console.log('Angular/Hono:', (usd.angular / usd.honoHtmx).toFixed(2));
console.log('Next-Hono USD:', (usd.next - usd.honoHtmx).toFixed(2));
console.log('Angular-Hono USD:', (usd.angular - usd.honoHtmx).toFixed(2));
Angular/Hono: 1.86
Next-Hono USD: 0.47
Angular-Hono USD: 2.30
A ratio of medians is not the median of paired run ratios. It supplies neither a confidence interval nor an expected multiplier for your next feature.
Cost and quality use different populations
Two Angular runs did not produce measurable apps. Cost includes all five attempts, while some quality metrics include only three. A favorable quality score therefore cannot erase the failed attempts.
For a team evaluation, also record total attempt cost divided by accepted outputs. Do not estimate that number by multiplying the $4.97 median by five and dividing by three: a median does not recover the sum. You need the cost and outcome of every run.
Initial generation also differs from maintenance. Less code may mean less context to read, but the published generation costs do not measure the expense of adding billing or fixing an accessibility regression six months later.
A comparison your team can use
The pinned framework definitions use a common specification and a prompt requiring npm test to pass. Our proposed adaptation separates three questions:
| Question | Hold constant | Record |
|---|---|---|
| Initial generation | Specification, model, effort, tools, deadline | All costs, acceptance rate, failure reasons |
| User experience | Device, network, page, repetitions | JS transfer, loading, key interactions |
| Subsequent edits | Change request and regression suite | Retry cost, review time, regressions |
This is an evaluation proposal, not an experiment we conducted. For a dashboard, include combined filters and bulk editing rather than measuring only first load. A content-oriented workload cannot establish the best architecture for a state-heavy application.
Reproductions should pin versions too. The four stacks above used Hono 4.13.14 with htmx 2.0.11, Astro 7.4.2, Next.js 16.4.3 with React 19.3.1, and Angular 22.2.3. The author’s performance measurements used a 2025 Framework 13 laptop, Ubuntu 24.04, 4× CPU slowdown, and Slow 4G mobile throttling. Those are source conditions, not measurements of this website.
Price the migration before celebrating the ratio
Assume, purely for illustration, that switching from Next.js to Hono+htmx saves $0.47 on every generation job. Recovering a hypothetical $1,000 migration cost takes about 2,128 jobs: ceil(1000 / 0.47). That calculation predicts neither subscription savings nor maintenance costs, and excludes testing and operating the replacement.
A small comparison makes sense for a new project. For an existing service, first account for interaction requirements and regression risk. We have not verified an independent reproduction; the useful contribution is a testable decision process rather than a universal framework ranking.
See AI cost per successful task for the acceptance denominator. The paid course below covers constrained, verified Claude Code workflows; it does not promise these benchmark results or framework savings.