What a 404 Costs on app.onepassapps.com: 114 Requests, 1.2 MB, and a Title That Never Changes
I work on OnePassApps, the team behind app.onepassapps.com. This is our own site, and every number below was measured on it today, 10 November 2026 - with plain HTTPS from outside the browser, signed out, and one cold br
I work on OnePassApps, the team behind app.onepassapps.com. This is our own site, and every number below was measured on it today, 10 November 2026 - with plain HTTPS from outside the browser, signed out, and one cold browser load with the cache disabled.
We have already measured the document our site serves for a URL that does not exist - the miss document, byte for byte - and which missings land on it. This post is about the other half of the question: what a visitor actually pays to open a 404.
The short version
A 404 on app.onepassapps.com is not a light page. One cold load of a URL that does not exist, with the cache disabled, produced 114 requests and 1,209,946 bytes of encoded response bodies.
The document itself, for scale
Six different missing paths - /no-such-page-xyz, /nope2, /deep/missing/path, /x.png, /x.json and /not-found - all answered HTTP 404, with content-type text/html; charset=utf-8 and cache-control: no-store, and every one of them 14,173 bytes.
Two of those fetches differ from each other in exactly one place: Cloudflare's per-request email-obfuscation token, in both its href hash and its data-cfemail value. 84 byte positions differ, inside a 127-byte span, and nowhere else.
For comparison, the pages that do exist are bigger: the home page measured 25,011 bytes and /guides 61,760 in the same passes, while the 404 answered 14,173 every time. The miss document also moves between builds - our 5 November post recorded 13,953 bytes for it, and today it answers 14,173, 220 bytes more.
Where the requests go
| Type | Requests | Bytes |
|---|---|---|
| Document | 1 | 5,829 |
| Stylesheet | 4 | 51,928 |
| Script | 94 | 1,077,350 |
| Manifest | 1 | 2,068 |
| Font | 1 | 49,944 |
| Image | 1 | 1,911 |
| Preflight | 4 | 0 |
| Fetch | 7 | 12,772 |
| Other | 1 | 8,144 |
Three hosts took it: app.onepassapps.com served 844,423 bytes, clerk.onepassapps.com 360,385 and api.onepassapps.com 5,138.
The four largest single responses were Clerk's UI bundle at 135,038 bytes, our shared app shell chunk at 118,241, our entry chunk at 92,703 and clerk.browser.js at 85,677.
Four CORS preflight requests in that run went to the API host and were answered 204 with no body.
Uncompressed, then over the wire
The entry chunk on disk is a 325,705-byte file; the app stylesheet is 255,426 bytes. Over the wire the entry chunk arrives as 92,703 bytes and the four stylesheet requests come to 51,928. The React vendor bundle is 178,924 bytes on disk, the shell fallback script 4,104 and its stylesheet 3,054.
So a visitor who types a wrong URL downloads the whole application shell - the same shell the real pages use - and then lands on a page whose visible heading reads "That page doesnβt exist". The document title stays "Page not found β OnePassApps" after the app boots, and the fallback block the server sent for crawlers is gone from the DOM once React takes over.
The page the visitor gets
Two buttons, Browse all apps and Go to Home, then an Open instead block with a Show all 22 control listing MovieMatcherAI (Live app Β· Films), NewsFlow (Live app Β· News), PDF Organiser (Tool Β· Documents) and CV Builder (Tool Β· Writing), and after that the standard-price panel: Free promotional period, Standard is free, $0 / month, 100,000 credits every 30 days Β· No card required.
If you are linking here
- A missing URL is a real 404 with a real body, and it is not a soft redirect to the home page.
- The crawler directives on it are noindex, nofollow, so nothing on that page is meant to be indexed - and its own indexing-policy tag still says allowed, which is the one tag on this document that points the other way.
- Linking the address you mean is the fix: real pages carry a canonical link, and the app guides list holds them - or start from the home page.
Limits, so nobody reads more into this than it says: one build, one day, 10 November 2026, plain HTTPS from one network plus one cold browser load with the cache disabled. The request and byte counts are that one measured run, not an average, and they move as the build changes.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.