Immutable version paths
Every file lives under /v/<pkg>/<semver>/. Once published, the bytes at that URL never change, so links you shipped last year still resolve.
Shoal delivers your JavaScript, CSS, fonts and WASM from versioned, immutable URLs, checked by subresource integrity and cached at the edge closest to your users.
<!-- pinned, immutable, verified --> <script src="https://cdnshoal.com/v/lumen-ui/2.8.1/lumen.min.js" integrity="sha384-q3Zr1uX9…Hk7w" crossorigin="anonymous"></script>
A release gets its own path, and that path is frozen. Caches love it, and so do the people who debug production at 2 a.m.
Every file lives under /v/<pkg>/<semver>/. Once published, the bytes at that URL never change, so links you shipped last year still resolve.
Each asset is published with a sha384 digest. Copy the integrity value from the push output and the browser refuses anything that was tampered with.
Requests land on the nearest healthy site. If one drains for maintenance, traffic slides to its neighbour with no DNS change and no failed fetch.
Text assets are compressed with Brotli at level 11 ahead of time. Connections negotiate HTTP/3 where the client supports it, and fall back to HTTP/2 cleanly.
Not ready to publish? Reach any public npm package through /npm/<pkg>@<version>/. We resolve once, store forever, and serve from cache.
We log aggregate hit counts per file, not people. Latency and availability are published for every site on the network page.