kitesurf · bench

Backend comparison — median wall time

One grouped bar per page, one bar per backend. Bar height = median wall time from the orchestrator's performance.now() span. Hover a bar for median/p95/p99. Missing or all-errored cells render as a thin grey stub.

screenshot · wall

0.0ms 2500ms 5000ms 7500ms 10000ms kitesurf · median 886ms · p95 3154ms · p99 3154mscontainer · median 323ms · p95 342ms · p99 342ms Example Domainexample-comkitesurf · median 1202ms · p95 1527ms · p99 1527mscontainer · median 718ms · p95 1081ms · p99 1081ms Hacker Newshacker-newskitesurf · median 4019ms · p95 10869ms · p99 10869mscontainer · median 756ms · p95 801ms · p99 801ms Cloudflare Developer Docscf-developerskitesurf · median 2201ms · p95 2926ms · p99 2926mscontainer · median 941ms · p95 966ms · p99 966ms The Cloudflare Blogcf-blogkitesurf · median 2159ms · p95 6200ms · p99 6200mscontainer · median 736ms · p95 781ms · p99 781ms Wikipedia Portalwikipedia-portalkitesurf · median 5385ms · p95 6156ms · p99 6156mscontainer · median 1695ms · p95 1860ms · p99 1860ms Der Spiegelspiegelkitesurf · median 7139ms · p95 7538ms · p99 7538mscontainer · median 1515ms · p95 1704ms · p99 1704ms El Mundoelmundokitesurf · median 1074ms · p95 1536ms · p99 1536mscontainer · median 476ms · p95 492ms · p99 492ms TodoMVC · JavaScript ES6todomvc-js-es6kitesurf · median 1589ms · p95 1726ms · p99 1726mscontainer · median 453ms · p95 477ms · p99 477ms TodoMVC · Reacttodomvc-reactkitesurf · median 1241ms · p95 2086ms · p99 2086mscontainer · median 435ms · p95 479ms · p99 479ms TodoMVC · Vuetodomvc-vuekitesurf · median 1160ms · p95 2677ms · p99 2677mscontainer · median 524ms · p95 614ms · p99 614ms TodoMVC · Angulartodomvc-angularkitesurf · median 1014ms · p95 2628ms · p99 2628mscontainer · median 476ms · p95 487ms · p99 487ms TodoMVC · Preacttodomvc-preact ks (kitesurf)ct (container)

html · wall

0.0ms 2500ms 5000ms 7500ms 10000ms kitesurf · median 853ms · p95 1648ms · p99 1648mscontainer · median 169ms · p95 207ms · p99 207ms Example Domainexample-comkitesurf · median 1162ms · p95 1858ms · p99 1858mscontainer · median 511ms · p95 800ms · p99 800ms Hacker Newshacker-newskitesurf · median 4017ms · p95 6969ms · p99 6969mscontainer · median 634ms · p95 686ms · p99 686ms Cloudflare Developer Docscf-developerskitesurf · median 2022ms · p95 2107ms · p99 2107mscontainer · median 729ms · p95 743ms · p99 743ms The Cloudflare Blogcf-blogkitesurf · median 2159ms · p95 2274ms · p99 2274mscontainer · median 511ms · p95 600ms · p99 600ms Wikipedia Portalwikipedia-portalkitesurf · median 5627ms · p95 6610ms · p99 6610mscontainer · median 1659ms · p95 1706ms · p99 1706ms Der Spiegelspiegelkitesurf · median 3760ms · p95 5530ms · p99 5530mscontainer · median 1127ms · p95 1217ms · p99 1217ms El Mundoelmundokitesurf · median 953ms · p95 1629ms · p99 1629mscontainer · median 240ms · p95 329ms · p99 329ms TodoMVC · JavaScript ES6todomvc-js-es6kitesurf · median 1018ms · p95 2589ms · p99 2589mscontainer · median 265ms · p95 287ms · p99 287ms TodoMVC · Reacttodomvc-reactkitesurf · median 971ms · p95 2138ms · p99 2138mscontainer · median 339ms · p95 395ms · p99 395ms TodoMVC · Vuetodomvc-vuekitesurf · median 1048ms · p95 1474ms · p99 1474mscontainer · median 343ms · p95 395ms · p99 395ms TodoMVC · Angulartodomvc-angularkitesurf · median 951ms · p95 1478ms · p99 1478mscontainer · median 221ms · p95 255ms · p99 255ms TodoMVC · Preacttodomvc-preact ks (kitesurf)ct (container)

Backend comparison — median backend CPU time

Server-side CPU per call. Kitesurf reports $workers.cpuTimeMs from Workers Observability; container reports Node-side CPU via timing headers. Browser-run doesn't expose a CPU counter — bars render as a grey stub.

screenshot · cpu

0.0ms 1250ms 2500ms 3750ms 5000ms kitesurf · median 72ms · p95 1355ms · p99 1355mscontainer · median 496ms · p95 523ms · p99 523ms Example Domainexample-comkitesurf · median 235ms · p95 250ms · p99 250mscontainer · median 712ms · p95 837ms · p99 837ms Hacker Newshacker-newskitesurf · median 1122ms · p95 1373ms · p99 1373mscontainer · median 1605ms · p95 1700ms · p99 1700ms Cloudflare Developer Docscf-developerskitesurf · median 595ms · p95 614ms · p99 614mscontainer · median 2139ms · p95 2204ms · p99 2204ms The Cloudflare Blogcf-blogkitesurf · median 975ms · p95 1398ms · p99 1398mscontainer · median 1571ms · p95 1716ms · p99 1716ms Wikipedia Portalwikipedia-portalkitesurf · median 4063ms · p95 4747ms · p99 4747mscontainer · median 3611ms · p95 3673ms · p99 3673ms Der Spiegelspiegelkitesurf · median 4353ms · p95 4448ms · p99 4448mscontainer · median 3917ms · p95 4344ms · p99 4344ms El Mundoelmundokitesurf · median 146ms · p95 157ms · p99 157mscontainer · median 834ms · p95 846ms · p99 846ms TodoMVC · JavaScript ES6todomvc-js-es6kitesurf · median 178ms · p95 181ms · p99 181mscontainer · median 762ms · p95 845ms · p99 845ms TodoMVC · Reacttodomvc-reactkitesurf · median 136ms · p95 256ms · p99 256mscontainer · median 782ms · p95 852ms · p99 852ms TodoMVC · Vuetodomvc-vuekitesurf · median 147ms · p95 264ms · p99 264mscontainer · median 943ms · p95 1109ms · p99 1109ms TodoMVC · Angulartodomvc-angularkitesurf · median 158ms · p95 251ms · p99 251mscontainer · median 807ms · p95 928ms · p99 928ms TodoMVC · Preacttodomvc-preact ks (kitesurf)ct (container)

html · cpu

0.0ms 1250ms 2500ms 3750ms 5000ms kitesurf · median 45ms · p95 146ms · p99 146mscontainer · median 346ms · p95 475ms · p99 475ms Example Domainexample-comkitesurf · median 158ms · p95 525ms · p99 525mscontainer · median 506ms · p95 629ms · p99 629ms Hacker Newshacker-newskitesurf · median 854ms · p95 984ms · p99 984mscontainer · median 1356ms · p95 1474ms · p99 1474ms Cloudflare Developer Docscf-developerskitesurf · median 408ms · p95 418ms · p99 418mscontainer · median 1612ms · p95 1647ms · p99 1647ms The Cloudflare Blogcf-blogkitesurf · median 746ms · p95 787ms · p99 787mscontainer · median 1150ms · p95 1435ms · p99 1435ms Wikipedia Portalwikipedia-portalkitesurf · median 4215ms · p95 4815ms · p99 4815mscontainer · median 3268ms · p95 3510ms · p99 3510ms Der Spiegelspiegelkitesurf · median 2340ms · p95 2955ms · p99 2955mscontainer · median 2841ms · p95 3126ms · p99 3126ms El Mundoelmundokitesurf · median 81ms · p95 98ms · p99 98mscontainer · median 527ms · p95 826ms · p99 826ms TodoMVC · JavaScript ES6todomvc-js-es6kitesurf · median 137ms · p95 352ms · p99 352mscontainer · median 603ms · p95 678ms · p99 678ms TodoMVC · Reacttodomvc-reactkitesurf · median 84ms · p95 171ms · p99 171mscontainer · median 744ms · p95 853ms · p99 853ms TodoMVC · Vuetodomvc-vuekitesurf · median 102ms · p95 107ms · p99 107mscontainer · median 728ms · p95 809ms · p99 809ms TodoMVC · Angulartodomvc-angularkitesurf · median 98ms · p95 115ms · p99 115mscontainer · median 478ms · p95 543ms · p99 543ms TodoMVC · Preacttodomvc-preact ks (kitesurf)ct (container)

Backend comparison — median memory

Per-page memory at end of render. The two backends report different things — bars are directionally comparable, not strictly apples-to-apples.

In short: kitesurf overcounts (high-water peak across the whole renderer); container undercounts (JS heap only). The truth for either backend lives somewhere between the two columns.

screenshot · mem

0MiB 24MiB 48MiB 72MiB 95MiB kitesurf · median 11MiB · p95 11MiB · p99 11MiBcontainer · median 2MiB · p95 2MiB · p99 2MiB Example Domainexample-comkitesurf · median 16MiB · p95 16MiB · p99 16MiBcontainer · median 2MiB · p95 2MiB · p99 2MiB Hacker Newshacker-newskitesurf · median 33MiB · p95 33MiB · p99 33MiBcontainer · median 4MiB · p95 4MiB · p99 4MiB Cloudflare Developer Docscf-developerskitesurf · median 34MiB · p95 34MiB · p99 34MiBcontainer · median 4MiB · p95 5MiB · p99 5MiB The Cloudflare Blogcf-blogkitesurf · median 30MiB · p95 30MiB · p99 30MiBcontainer · median 4MiB · p95 6MiB · p99 6MiB Wikipedia Portalwikipedia-portalkitesurf · median 70MiB · p95 70MiB · p99 70MiBcontainer · median 10MiB · p95 10MiB · p99 10MiB Der Spiegelspiegelkitesurf · median 66MiB · p95 67MiB · p99 67MiBcontainer · median 9MiB · p95 9MiB · p99 9MiB El Mundoelmundokitesurf · median 13MiB · p95 13MiB · p99 13MiBcontainer · median 3MiB · p95 3MiB · p99 3MiB TodoMVC · JavaScript ES6todomvc-js-es6kitesurf · median 11MiB · p95 11MiB · p99 11MiBcontainer · median 3MiB · p95 3MiB · p99 3MiB TodoMVC · Reacttodomvc-reactkitesurf · median 11MiB · p95 11MiB · p99 11MiBcontainer · median 4MiB · p95 4MiB · p99 4MiB TodoMVC · Vuetodomvc-vuekitesurf · median 11MiB · p95 11MiB · p99 11MiBcontainer · median 9MiB · p95 9MiB · p99 9MiB TodoMVC · Angulartodomvc-angularkitesurf · median 11MiB · p95 11MiB · p99 11MiBcontainer · median 3MiB · p95 3MiB · p99 3MiB TodoMVC · Preacttodomvc-preact ks (kitesurf)ct (container)

html · mem

0MiB 24MiB 48MiB 72MiB 95MiB kitesurf · median 6MiB · p95 6MiB · p99 6MiBcontainer · median 2MiB · p95 2MiB · p99 2MiB Example Domainexample-comkitesurf · median 9MiB · p95 9MiB · p99 9MiBcontainer · median 2MiB · p95 2MiB · p99 2MiB Hacker Newshacker-newskitesurf · median 31MiB · p95 32MiB · p99 32MiBcontainer · median 4MiB · p95 4MiB · p99 4MiB Cloudflare Developer Docscf-developerskitesurf · median 34MiB · p95 34MiB · p99 34MiBcontainer · median 3MiB · p95 4MiB · p99 4MiB The Cloudflare Blogcf-blogkitesurf · median 28MiB · p95 28MiB · p99 28MiBcontainer · median 4MiB · p95 6MiB · p99 6MiB Wikipedia Portalwikipedia-portalkitesurf · median 71MiB · p95 98MiB · p99 98MiBcontainer · median 10MiB · p95 10MiB · p99 10MiB Der Spiegelspiegelkitesurf · median 39MiB · p95 53MiB · p99 53MiBcontainer · median 9MiB · p95 9MiB · p99 9MiB El Mundoelmundokitesurf · median 8MiB · p95 8MiB · p99 8MiBcontainer · median 2MiB · p95 3MiB · p99 3MiB TodoMVC · JavaScript ES6todomvc-js-es6kitesurf · median 6MiB · p95 6MiB · p99 6MiBcontainer · median 3MiB · p95 3MiB · p99 3MiB TodoMVC · Reacttodomvc-reactkitesurf · median 6MiB · p95 6MiB · p99 6MiBcontainer · median 3MiB · p95 4MiB · p99 4MiB TodoMVC · Vuetodomvc-vuekitesurf · median 6MiB · p95 6MiB · p99 6MiBcontainer · median 9MiB · p95 9MiB · p99 9MiB TodoMVC · Angulartodomvc-angularkitesurf · median 6MiB · p95 6MiB · p99 6MiBcontainer · median 3MiB · p95 3MiB · p99 3MiB TodoMVC · Preacttodomvc-preact ks (kitesurf)ct (container)

Latest run · per-metric tables

Same layout as npm run bench: per endpoint, tables for wall, cpu, mem. Each backend's median/p95/p99 side by side. ks = kitesurf, br = browser-run, ct = container. = backend doesn't report this metric. err = every recorded run for that combination errored. See the memory chart's caption above for the per-backend metric semantics.

screenshot

wall — screenshot
page slug ks medianks p95ks p99ct medianct p95ct p99
Example Domain example-com 886ms3154ms3154ms323ms342ms342ms
Hacker News hacker-news 1202ms1527ms1527ms718ms1081ms1081ms
Cloudflare Developer Docs cf-developers 4019ms10869ms10869ms756ms801ms801ms
The Cloudflare Blog cf-blog 2201ms2926ms2926ms941ms966ms966ms
Wikipedia Portal wikipedia-portal 2159ms6200ms6200ms736ms781ms781ms
Der Spiegel spiegel 5385ms6156ms6156ms1695ms1860ms1860ms
El Mundo elmundo 7139ms7538ms7538ms1515ms1704ms1704ms
TodoMVC · JavaScript ES6 todomvc-js-es6 1074ms1536ms1536ms476ms492ms492ms
TodoMVC · React todomvc-react 1589ms1726ms1726ms453ms477ms477ms
TodoMVC · Vue todomvc-vue 1241ms2086ms2086ms435ms479ms479ms
TodoMVC · Angular todomvc-angular 1160ms2677ms2677ms524ms614ms614ms
TodoMVC · Preact todomvc-preact 1014ms2628ms2628ms476ms487ms487ms
cpu — screenshot
page slug ks medianks p95ks p99ct medianct p95ct p99
Example Domain example-com 72ms1355ms1355ms496ms523ms523ms
Hacker News hacker-news 235ms250ms250ms712ms837ms837ms
Cloudflare Developer Docs cf-developers 1122ms1373ms1373ms1605ms1700ms1700ms
The Cloudflare Blog cf-blog 595ms614ms614ms2139ms2204ms2204ms
Wikipedia Portal wikipedia-portal 975ms1398ms1398ms1571ms1716ms1716ms
Der Spiegel spiegel 4063ms4747ms4747ms3611ms3673ms3673ms
El Mundo elmundo 4353ms4448ms4448ms3917ms4344ms4344ms
TodoMVC · JavaScript ES6 todomvc-js-es6 146ms157ms157ms834ms846ms846ms
TodoMVC · React todomvc-react 178ms181ms181ms762ms845ms845ms
TodoMVC · Vue todomvc-vue 136ms256ms256ms782ms852ms852ms
TodoMVC · Angular todomvc-angular 147ms264ms264ms943ms1109ms1109ms
TodoMVC · Preact todomvc-preact 158ms251ms251ms807ms928ms928ms
mem — screenshot
page slug ks medianks p95ks p99ct medianct p95ct p99
Example Domain example-com 11MiB11MiB11MiB2MiB2MiB2MiB
Hacker News hacker-news 16MiB16MiB16MiB2MiB2MiB2MiB
Cloudflare Developer Docs cf-developers 33MiB33MiB33MiB4MiB4MiB4MiB
The Cloudflare Blog cf-blog 34MiB34MiB34MiB4MiB5MiB5MiB
Wikipedia Portal wikipedia-portal 30MiB30MiB30MiB4MiB6MiB6MiB
Der Spiegel spiegel 70MiB70MiB70MiB10MiB10MiB10MiB
El Mundo elmundo 66MiB67MiB67MiB9MiB9MiB9MiB
TodoMVC · JavaScript ES6 todomvc-js-es6 13MiB13MiB13MiB3MiB3MiB3MiB
TodoMVC · React todomvc-react 11MiB11MiB11MiB3MiB3MiB3MiB
TodoMVC · Vue todomvc-vue 11MiB11MiB11MiB4MiB4MiB4MiB
TodoMVC · Angular todomvc-angular 11MiB11MiB11MiB9MiB9MiB9MiB
TodoMVC · Preact todomvc-preact 11MiB11MiB11MiB3MiB3MiB3MiB

html

wall — html
page slug ks medianks p95ks p99ct medianct p95ct p99
Example Domain example-com 853ms1648ms1648ms169ms207ms207ms
Hacker News hacker-news 1162ms1858ms1858ms511ms800ms800ms
Cloudflare Developer Docs cf-developers 4017ms6969ms6969ms634ms686ms686ms
The Cloudflare Blog cf-blog 2022ms2107ms2107ms729ms743ms743ms
Wikipedia Portal wikipedia-portal 2159ms2274ms2274ms511ms600ms600ms
Der Spiegel spiegel 5627ms6610ms6610ms1659ms1706ms1706ms
El Mundo elmundo 3760ms5530ms5530ms1127ms1217ms1217ms
TodoMVC · JavaScript ES6 todomvc-js-es6 953ms1629ms1629ms240ms329ms329ms
TodoMVC · React todomvc-react 1018ms2589ms2589ms265ms287ms287ms
TodoMVC · Vue todomvc-vue 971ms2138ms2138ms339ms395ms395ms
TodoMVC · Angular todomvc-angular 1048ms1474ms1474ms343ms395ms395ms
TodoMVC · Preact todomvc-preact 951ms1478ms1478ms221ms255ms255ms
cpu — html
page slug ks medianks p95ks p99ct medianct p95ct p99
Example Domain example-com 45ms146ms146ms346ms475ms475ms
Hacker News hacker-news 158ms525ms525ms506ms629ms629ms
Cloudflare Developer Docs cf-developers 854ms984ms984ms1356ms1474ms1474ms
The Cloudflare Blog cf-blog 408ms418ms418ms1612ms1647ms1647ms
Wikipedia Portal wikipedia-portal 746ms787ms787ms1150ms1435ms1435ms
Der Spiegel spiegel 4215ms4815ms4815ms3268ms3510ms3510ms
El Mundo elmundo 2340ms2955ms2955ms2841ms3126ms3126ms
TodoMVC · JavaScript ES6 todomvc-js-es6 81ms98ms98ms527ms826ms826ms
TodoMVC · React todomvc-react 137ms352ms352ms603ms678ms678ms
TodoMVC · Vue todomvc-vue 84ms171ms171ms744ms853ms853ms
TodoMVC · Angular todomvc-angular 102ms107ms107ms728ms809ms809ms
TodoMVC · Preact todomvc-preact 98ms115ms115ms478ms543ms543ms
mem — html
page slug ks medianks p95ks p99ct medianct p95ct p99
Example Domain example-com 6MiB6MiB6MiB2MiB2MiB2MiB
Hacker News hacker-news 9MiB9MiB9MiB2MiB2MiB2MiB
Cloudflare Developer Docs cf-developers 31MiB32MiB32MiB4MiB4MiB4MiB
The Cloudflare Blog cf-blog 34MiB34MiB34MiB3MiB4MiB4MiB
Wikipedia Portal wikipedia-portal 28MiB28MiB28MiB4MiB6MiB6MiB
Der Spiegel spiegel 71MiB98MiB98MiB10MiB10MiB10MiB
El Mundo elmundo 39MiB53MiB53MiB9MiB9MiB9MiB
TodoMVC · JavaScript ES6 todomvc-js-es6 8MiB8MiB8MiB2MiB3MiB3MiB
TodoMVC · React todomvc-react 6MiB6MiB6MiB3MiB3MiB3MiB
TodoMVC · Vue todomvc-vue 6MiB6MiB6MiB3MiB4MiB4MiB
TodoMVC · Angular todomvc-angular 6MiB6MiB6MiB9MiB9MiB9MiB
TodoMVC · Preact todomvc-preact 6MiB6MiB6MiB3MiB3MiB3MiB

History

date commit kitesurf · screenshotkitesurf · htmlcontainer · screenshotcontainer · html note
2026-07-11 17:4615ac2dc1195ms1488ms884ms589ms
2026-07-05 14:03be117861645ms1468ms915ms677msboa eval-less runtime — run page JS (Runtime.evaluate + dynamic import) without V8 code-gen-from-string @lduarte
2026-07-02 00:361f76dfb560ms547ms696ms512msReduce wasm peak memory ~23% (emoji SVG-strip + node-slab pre-size + lazy serif) @lduarte
2026-06-15 10:3678edd791008ms996ms683ms473ms
2026-06-06 10:289afdd69727ms1457ms778ms548ms
2026-06-05 15:46c8a9da7715ms597ms1080ms920msRefactor autoresearch for memory optimization + port wasm-memprof + autoresearch memory opts @lduarte
2026-06-05 15:34c8a9da7715ms597ms1080ms920msRefactor autoresearch for memory optimization + port wasm-memprof + autoresearch memory opts @lduarte
2026-06-02 09:1536cc68a950ms1060ms858ms572ms
2026-06-02 00:32bc688751088ms1234ms734ms520ms
2026-06-02 00:1584bf4a3835ms1360ms521ms356ms
2026-06-02 00:04885052c923ms1079ms693ms505ms
2026-06-01 23:56d1fa08a1173ms1182ms879ms480ms
2026-06-01 23:304e0f0e71358ms1181ms697ms460ms
2026-05-31 19:29cd6a6d51109ms869ms864ms610ms
2026-05-25 22:39caf5678633ms658ms608ms369msrerun with concurrent-producer wallMs fix
2026-05-25 21:37a4d9bf51442ms1151ms741ms410mstail-worker CPU attribution: now includes page-script wasm/JS cost
2026-05-25 11:4804351641359ms1194ms916ms618ms
2026-05-25 11:4804351641362ms1160ms823ms714ms
2026-05-25 11:4804351641215ms1020ms704ms487ms
2026-05-25 11:4804351641172ms925ms706ms394ms

Latest report (markdown)

# kitesurf bench report — 2026-07-11

commit: `15ac2dc` · backends: kitesurf, container · endpoints: screenshot, html · runs/combo: 5 (+ 2 warmup)
target: https://kitesurf-bench.rendering.cfdata.org

## Summary (median wall time)

| Page | kitesurf/screenshot | kitesurf/html | container/screenshot | container/html |
|---|--:|--:|--:|--:|
| Example Domain | 847ms | 814ms | 405ms | 232ms |
| Hacker News | 1178ms | 1023ms | 855ms | 619ms |
| Cloudflare Developer Docs | 3340ms | 3318ms | 858ms | 725ms |
| The Cloudflare Blog | 1644ms | 1653ms | 1031ms | 823ms |
| Wikipedia Portal | 1195ms | 1488ms | 884ms | 589ms |
| Der Spiegel | 1626ms | 1651ms | 1804ms | 2011ms |
| El Mundo | 5273ms | 2085ms | 1633ms | 1216ms |
| TodoMVC · JavaScript ES6 | 844ms | 809ms | 541ms | 310ms |
| TodoMVC · React | 1476ms | 850ms | 527ms | 335ms |
| TodoMVC · Vue | 1081ms | 855ms | 508ms | 403ms |
| TodoMVC · Angular | 986ms | 898ms | 627ms | 407ms |
| TodoMVC · Preact | 816ms | 792ms | 549ms | 285ms |

Notes:

- Values are run medians across recorded runs. p95 and min/max are in the JSON.
- Backends are dispatched from inside the `kitesurf-bench` worker via RPC bindings: `env.KITESURF.fetch(/screenshot|/html)` for kitesurf (service binding to the engine), `env.BROWSER.quickAction('screenshot'|'content', …)` for browser-run (Browser Rendering RPC), and `env.CONTAINER_HOST.fetch(…)` for container (sibling worker fronting its container backend). Wall time is the orchestrator's `performance.now()` span; `backendWallMs` / `backendCpuMs` in the JSON come from Workers Observability (kitesurf) or container-side timing headers (container). None of the measurement paths traverse the public internet.
- A cell shows `—` when every recorded run for that combination errored. See `rows` in the JSON for individual failure messages.

bundle built 2026-07-11T17:46:18.286Z