How smoothly each one runs.
Extreme wave against a seawall, 1600×900, desktop Chrome with a GPU: six seconds idle, then fifty seconds of the wave. Two runs per build, averaged. The frame limiter is off, so FPS shows headroom, not what a 60 Hz screen displays.
All numbers
| Fable 5.1 | Opus 5.5 | Sonnet 5 | Sonnet 5.5 | |
|---|---|---|---|---|
| Solver runs on | main thread | Web Worker | main thread | main thread |
| Simulation grid | 160 × 160 · 25,600 cells | 240 × 200 · 48,000 cells | 120 × 100 · 12,000 cells | 160 × 140 · 22,400 cells |
| FPS idle | 83 fps | 105 fps | 113 fps | 127 fps |
| FPS during the wave | 68 fps | 25 fps | 108 fps | 56 fps |
| Frame time p50 / p99 | 13 / 50 ms | 36 / 83 ms | 9 / 18 ms | 17 / 48 ms |
| Worst frame | 302 ms | 218 ms | 36 ms | 155 ms |
| Frames over 50 ms | 35 | 176 | 0 | 22 |
| Long-task time | 2.3 s | 10.0 s | 0.0 s | 1.2 s |
| Load time | 2.5 s | 6.1 s | 2.5 s | 5.7 s |
| JS heap | 7 MB | 27 MB | 14 MB | 14 MB |
Reading it
- Sonnet 5 is the fastest and smoothest, but it also has the smallest grid: 12k cells, half of Sonnet 5.5 and a quarter of Opus 5.5, so its water is the coarsest.
- Fable 5.1 holds 65–70 FPS but stutters when the wave hits, with frames up to 300 ms.
- Sonnet 5.5 sits in between, with occasional hitches and large run-to-run variance.
- Opus 5.5 has the largest grid and the heaviest visuals. The solver runs in a Web Worker, yet rendering still drops to about 25 FPS during the wave. It is also the slowest to load.
- All four stay usable after the Extreme wave; nothing crashed or blew up numerically.
On a laptop it's a different story
On a 2019 Intel MacBook Pro with a Retina screen, only Sonnet 5.5 ran without lag. It is the only build that lowers its own quality: when frames stay slower than about 34 ms, it drops the pixel ratio to 1. The other three render at 1.6–2× pixel ratio with 2048 px shadow maps and no fallback, which is 2.5–4 times the pixels for an integrated GPU. So the desktop ranking doesn't hold on weaker or high-DPI hardware.
Caveats: one desktop, two runs per build, measured with Playwright from
requestAnimationFrame timings and the long-task observer.