{"slug":"cloudflare-os-functions","verification":{"valid":false,"broken_at":4,"reason":"hash mismatch"},"count":28,"sources":[{"id":"s1","type":"specification","url":"https://developers.cloudflare.com/pages/functions/routing/","title":"Pages Functions routing","quote":"Functions utilize file-based routing. Your `/functions` directory structure determines the designated routes that your Functions will run on.","summary":"Normative file-to-route mapping, dynamic segments, optional catch-alls, precedence and trailing slashes.","publisher":"Cloudflare","claim_ids":["c1","c2"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"genesis","hash":"bff543880c76406665c09608749a644f1a7e296f38b3a5e1a4152f87c0cd4385"},{"id":"s2","type":"specification","url":"https://developers.cloudflare.com/pages/functions/api-reference/","title":"Pages Functions API reference","quote":"The `onRequest` method will be called unless a more specific `onRequestVerb` method is exported.","summary":"EventContext members and the eight supported request-handler export names.","publisher":"Cloudflare","claim_ids":["c3"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"bff543880c76406665c09608749a644f1a7e296f38b3a5e1a4152f87c0cd4385","hash":"98b4ec1949ffb8578523a2142091cd0af44036dd943a90333c0e0af09e13531a"},{"id":"s3","type":"specification","url":"https://developers.cloudflare.com/pages/functions/middleware/","title":"Pages Functions middleware","quote":"Middleware is reusable logic that can be run before your `onRequest` function.","summary":"Middleware placement, arrays, next(), error handling and execution order.","publisher":"Cloudflare","claim_ids":["c4"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"98b4ec1949ffb8578523a2142091cd0af44036dd943a90333c0e0af09e13531a","hash":"7e1fc0fb9ef978f897139b04feb04015bcccb6a4ed71fec1b28b7a4e9ff8f9c5"},{"id":"s4","type":"publisher_documentation","url":"https://developers.cloudflare.com/pages/functions/routing/","title":"Pages _routes.json routing controls","quote":"More specific routes (routes with fewer wildcards) take precedence over less specific routes.","summary":"Include/exclude controls, route specificity and the 100-rule boundary.","publisher":"Cloudflare","claim_ids":["c5","c6"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"7e1fc0fb9ef978f897139b04feb04015bcccb6a4ed71fec1b28b7a4e9ff8f9c5","hash":"b4aef2934fe7d15c637a469e00981767d388a8fbbbb200bdeec7cd17b0c40377"},{"id":"s5","type":"publisher_documentation","url":"https://developers.cloudflare.com/pages/platform/limits/","title":"Cloudflare Pages limits","quote":"Cloudflare Pages has a limit of 100 projects per account.","summary":"Pages project, build, file, asset and custom-domain limits current to the article.","publisher":"Cloudflare","claim_ids":["c24","c9"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"b4aef2934fe7d15c637a469e00981767d388a8fbbbb200bdeec7cd17b0c40377","hash":"e236016b168ef066524563a92b6156669ccc96e5f1248e2db1dd5c3d00e2e1fb"},{"id":"s6","type":"publisher_documentation","url":"https://developers.cloudflare.com/workers/platform/limits/","title":"Cloudflare Workers limits","quote":"Worker size","summary":"Compressed and uncompressed bundle ceilings, startup, CPU, memory and subrequest limits inherited by Pages Functions.","publisher":"Cloudflare","claim_ids":["c10","c15","c9"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"e236016b168ef066524563a92b6156669ccc96e5f1248e2db1dd5c3d00e2e1fb","hash":"6d4b84cb0d2fe51c5a11235d6eacefc1ea5c0847d5ec2665cf3dc376d5a313a1"},{"id":"s7","type":"publisher_documentation","url":"https://developers.cloudflare.com/pages/functions/debugging-and-logging/","title":"Pages Functions debugging and logging","quote":"Logs are available for every deployment of your Pages project.","summary":"Live deployment tailing and its boundary: real-time observation rather than persistent queryable history.","publisher":"Cloudflare","claim_ids":["c18"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"6d4b84cb0d2fe51c5a11235d6eacefc1ea5c0847d5ec2665cf3dc376d5a313a1","hash":"f281df5ff84adee0847eb909c48682217ff9846eba6b49c04831ceeb56b64054"},{"id":"s8","type":"publisher_documentation","url":"https://developers.cloudflare.com/workers/static-assets/migration-guides/migrate-from-pages/","title":"Migrate from Pages to Workers","quote":"Unlike Pages, Workers has a distinctly broader set of features available to it","summary":"Official Pages-to-Workers migration differences, assets binding and routing changes.","publisher":"Cloudflare","claim_ids":["c18","c21"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"f281df5ff84adee0847eb909c48682217ff9846eba6b49c04831ceeb56b64054","hash":"0bee2b54a32360dda272930a3193e85e2a1d571d080a3288752e38f889b4df5e"},{"id":"s9","type":"publisher_documentation","url":"https://developers.cloudflare.com/pages/get-started/direct-upload/","title":"Pages Direct Upload","quote":"Direct Upload enables you to upload your prebuilt assets to Pages and deploy them to the Cloudflare global network.","summary":"Wrangler direct-deployment workflow used by this repository instead of Git integration.","publisher":"Cloudflare","claim_ids":["c23","c24"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"0bee2b54a32360dda272930a3193e85e2a1d571d080a3288752e38f889b4df5e","hash":"dfc05d3f6c212e1f4f549f15715cc8442333511ce723fc6246e5807482a27080"},{"id":"s10","type":"publisher_documentation","url":"https://developers.cloudflare.com/pages/functions/local-development/","title":"Pages Functions local development","quote":"The main command for local development on Pages is `wrangler pages dev`.","summary":"Local Functions development surface and why upload-only limits do not appear locally.","publisher":"Cloudflare","claim_ids":["c25"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"dfc05d3f6c212e1f4f549f15715cc8442333511ce723fc6246e5807482a27080","hash":"c0b63bbfb33d9bf35bce1fa5c04dbb83b6f89a02edf97a59adfd42084d744d69"},{"id":"s11","type":"publisher_documentation","url":"https://opennext.js.org/cloudflare/troubleshooting","title":"OpenNext Cloudflare bundle troubleshooting","quote":"Only the latter (gzipped size) matters for these limits.","summary":"Third-party framework guidance that distinguishes raw and compressed Wrangler bundle sizes.","publisher":"OpenNext","claim_ids":["c10"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"c0b63bbfb33d9bf35bce1fa5c04dbb83b6f89a02edf97a59adfd42084d744d69","hash":"bb0213f0a2cf430586417079be7705bd8fff07613d97521807433be975c17077"},{"id":"s12","type":"repository","url":"https://github.com/cloudflare/workers-sdk","title":"Cloudflare workers-sdk","quote":"Home to Wrangler, the CLI for Cloudflare Workers®","summary":"Public Wrangler repository containing the Pages Functions compiler and deploy command.","publisher":"GitHub","claim_ids":["c1"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"bb0213f0a2cf430586417079be7705bd8fff07613d97521807433be975c17077","hash":"f1fedf163bf2c655f70881168ea652d446abc4f868db4d7a6711f14a9262368e"},{"id":"s13","type":"independent_measurement","url":"https://github.com/nuxt-modules/og-image/issues/193","title":"Independent WASM bundle-limit reproduction","quote":"the compiled-wasm file is 2.4mb","summary":"Named reproduction where a single compiled WASM file exceeded the then-current Pages Free Worker limit.","author":"matthewjewell","publisher":"GitHub","date":"2024-04-13","claim_ids":["c13"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"f1fedf163bf2c655f70881168ea652d446abc4f868db4d7a6711f14a9262368e","hash":"9f219842c6d16119bce9349ba396685b5045a0c8aebdf599e587af2099ed686f"},{"id":"p1","type":"stackoverflow","url":"https://stackoverflow.com/questions/77173778/how-to-fix-workers-api-error-script-too-large-when-deploying-sveltekit-to-cloudf","title":"How to fix workers.api.error.script_too_large when deploying Sveltekit to Cloudflare pages","quote":"I now have more than 200 posts with multiple components each. Everything was working well, but recently started getting the following error when deploying to Cloudflare pages","summary":"A SvelteKit/mdsvex blog that deployed fine started failing once it crossed ~200 posts, because the generated _worker.js exceeded the 1 MiB Pages Functions script limit. The canonical 'many handlers, one deployment, one bundle' failure. Negative.","author":"Jeffh30","publisher":"Stack Overflow","date":"2023-09-25","claim_ids":["c12","c15"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"9f219842c6d16119bce9349ba396685b5045a0c8aebdf599e587af2099ed686f","hash":"2cb7222dc2d52d7729aaa1f096c3372dd8fb2d48bf042cd0386772923e03131f"},{"id":"p2","type":"github","url":"https://github.com/nuxt-modules/og-image/issues/193","title":"Deploying on Cloudflare Pages, script_too_large?","quote":"Tried deploying a branch with a simple template, it works well locally, but with the 1mb worker limit on Pages (free) I get the `workers.api.error.script_too_large` error as the compiled-wasm file is 2.4mb.","summary":"Works locally, dies on deploy: a 2.4mb compiled WASM asset blows the 1mb Pages Functions limit on the free plan. Asks whether the package is usable at all under that ceiling. Negative — bundle-size limit as a hard adoption wall.","author":"matthewjewell","publisher":"GitHub — nuxt-modules/og-image","date":"2024-04-13","claim_ids":["c13","c15"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"2cb7222dc2d52d7729aaa1f096c3372dd8fb2d48bf042cd0386772923e03131f","hash":"01c1475674ee3455d860a97a01388def3dea8a7076f380ba0f358c2fbdf7dc6c"},{"id":"p3","type":"github","url":"https://github.com/cloudflare/workers-sdk/issues/1194","title":"🐛 BUG: pages publish very slow / crashing","quote":"When I upload to pages with wrangler 2 it goes reaaallly slow and then crashes","summary":"A ~300MB site that uploaded fine to KV under wrangler 1 crawls and then dies with 'FatalError: Failed to upload files' partway through (809/8009 files) on Pages with wrangler 2. Long-running deployment-scale pain. Negative.","author":"revmischa","publisher":"GitHub — cloudflare/workers-sdk","date":"2022-06-06","claim_ids":["c14"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"01c1475674ee3455d860a97a01388def3dea8a7076f380ba0f358c2fbdf7dc6c","hash":"9a0e812c483aeca3744651a35e0c5d6050eb486353dfe1e5c96913f06b9b51ff"},{"id":"p4","type":"hn","url":"https://news.ycombinator.com/item?id=44854848","title":"Cloudflare recommends migrating from Pages to Workers","quote":"I had to use Pages since Workers don't support \"Custom domains outside Cloudflare zones\" [1]. There's no way I can transfer the domain since I have subdomains tightly integrated with AWS services.","summary":"Cannot follow Cloudflare's own Pages-to-Workers recommendation because Workers static assets do not support custom domains outside Cloudflare zones and his DNS is bound to AWS. Concrete migration blocker. Negative.","author":"merek","publisher":"Hacker News","date":"2025-08-10","claim_ids":["c19","c21"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"9a0e812c483aeca3744651a35e0c5d6050eb486353dfe1e5c96913f06b9b51ff","hash":"6020d138c8f5ab48d41b92d99ddbd52c35508f8e44f3410d6b2d7eb7d297aa8e"},{"id":"p5","type":"hn","url":"https://news.ycombinator.com/item?id=45936226","title":"Magit manuals are available online again","quote":"Because Cloudflare pages has this doofy deploy limit hanging over your head. Even if you won't reasonably run into it, it's still weird. R2's free limits are significantly higher.","summary":"Explains choosing R2 over Pages for hosting docs specifically because of the Pages deployments-per-month cap. Negative on Pages' deployment quota as a reason to avoid the product.","author":"fragmede","publisher":"Hacker News","date":"2025-11-15","claim_ids":["c24"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"6020d138c8f5ab48d41b92d99ddbd52c35508f8e44f3410d6b2d7eb7d297aa8e","hash":"45cb1b69d6a4f0cfc32921dfdb295f7ca0b6f6622a884a2ab43771ab6e426d7c"},{"id":"p6","type":"hn","url":"https://news.ycombinator.com/item?id=43164386","title":"Claude 3.7 Sonnet and Claude Code","quote":"a CloudFlare pages function would return 500 + nonsensical error and an empty response in prod. Tried to figure this out all Friday. It was super annoying to fix as there's no way to add more logging","summary":"Spent a full day on a Pages Function returning a 500 with an empty response only in production, with no way to add logging because the script died before emitting output. An observability complaint specific to Pages Functions. Negative.","author":"Uninen","publisher":"Hacker News","date":"2025-02-24","claim_ids":["c17"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"45cb1b69d6a4f0cfc32921dfdb295f7ca0b6f6622a884a2ab43771ab6e426d7c","hash":"5d5ecba9a95f2455f9b1263d57826deb62495b78d4b93641bd8fe95e83d092b3"},{"id":"p7","type":"hn","url":"https://news.ycombinator.com/item?id=43646198","title":"Journey to Optimize Cloudflare D1 Database Queries","quote":"This is kind of what happened (is happening) with pages right now. Workers gained pretty much all of their features and are now the recommended way to deliver static sites too.","summary":"A Cloudflare fan describing Pages being quietly superseded by Workers as feature parity landed, and predicting the same absorption will happen to Workers by Durable Objects. Mixed — approves the direction while documenting the churn.","author":"manter","publisher":"Hacker News","date":"2025-04-10","claim_ids":["c21"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"5d5ecba9a95f2455f9b1263d57826deb62495b78d4b93641bd8fe95e83d092b3","hash":"824154b1dfa7bfb8a0594cdbcc5ce0b59c313060bf6e3037f771aef972775f88"},{"id":"p8","type":"hn","url":"https://news.ycombinator.com/item?id=44855519","title":"Cloudflare recommends migrating from Pages to Workers","quote":"I recently ported an entire TS project from cloudflare workers to a django python app since cloudflare workers don't support choice of region/country when deploying workers.","summary":"Ported a whole TypeScript Workers project off Cloudflare to a Django app because Workers offers no region/country placement choice outside Enterprise, which breaks data-residency compliance. Still calls Workers+R2+D1 a great low-overhead stack. Negative move-off.","author":"scottydelta","publisher":"Hacker News","date":"2025-08-10","claim_ids":["c20"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"824154b1dfa7bfb8a0594cdbcc5ce0b59c313060bf6e3037f771aef972775f88","hash":"afdc8c64c4eb658024e1476cc56d3e9f5eec77b49be5041d764241c357b1ab11"},{"id":"p9","type":"hn","url":"https://news.ycombinator.com/item?id=47146087","title":"5 months ago I'd never coded anything. I now have full-stack analytics platform","quote":"Stack: Next.js 14 + React 18 on Cloudflare Pages, Hono 4.10 API on Cloudflare Workers (60+ route modules), 4x Cloudflare D1 databases (~180 tables total), Neon Postgres via Prisma + Hyperdrive, KV + R2 + Durable Objects + Queues","summary":"A self-described non-coder built and shipped a full NFL projections analytics platform entirely on the Cloudflare stack — Pages front end, Workers API, four D1 databases, plus KV, R2, Durable Objects and Queues, with Access-protected admin routes and 8 cron jobs. He reports it working in production at real schema depth. Positive.","author":"Incarcer","publisher":"Hacker News","date":"2026-02-25","claim_ids":["c22"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"afdc8c64c4eb658024e1476cc56d3e9f5eec77b49be5041d764241c357b1ab11","hash":"3772d414b600b4ba2a5f3b06d65169238d9f49381a08d1b06dadfda0b54c2d30"},{"id":"r1","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-functions","title":"Fresh first-party Functions tree inventory","quote":"JavaScript modules under `functions/` | 391","summary":"Filesystem harness counted modules, route files, libraries, handler files, exports and bracket-route forms.","publisher":"miscsubjects.com","date":"2026-07-26","claim_ids":["c7","c8"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"3772d414b600b4ba2a5f3b06d65169238d9f49381a08d1b06dadfda0b54c2d30","hash":"858f8a222cfd84be98b23bbf81aa33f5988e628f17afce2c2604fd3985dc870c"},{"id":"r2","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-functions","title":"Fresh first-party Pages Functions compilation","quote":"Gzipped bundle | 1,350,472 bytes; 45.0% of the 3 MB free ceiling","summary":"Wrangler pages functions build compiled the current tree into a temporary directory; Node gzip measured the deploy-relevant size.","publisher":"miscsubjects.com","date":"2026-07-26","claim_ids":["c1","c10","c11"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"858f8a222cfd84be98b23bbf81aa33f5988e628f17afce2c2604fd3985dc870c","hash":"154723da5355d354276fdaf9176ac144b1b5682a4d1e71628d976582afd10140"},{"id":"r3","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-functions","title":"First-party cold and warm request timing","quote":"Median time to first byte: 145 ms for the Function route on a warm connection, 68 ms for the excluded static route.","summary":"Published curl harness: five new connections, seven reused Function requests and five reused excluded-static requests.","publisher":"miscsubjects.com","date":"2026-07-25","claim_ids":["c16"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"154723da5355d354276fdaf9176ac144b1b5682a4d1e71628d976582afd10140","hash":"83059f9bca82747efe4e49d6b96ef068cd744e33518909b4e51f7abc1269dd60"},{"id":"r4","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-functions","title":"First-party overlapping-route receipt","quote":"The response proves nothing about which one ran","summary":"The exact file and catch-all both return byte-identical markdown for the overlapping design-law skill path.","publisher":"miscsubjects.com","date":"2026-07-25","claim_ids":["c5"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"83059f9bca82747efe4e49d6b96ef068cd744e33518909b4e51f7abc1269dd60","hash":"f21f6a18b7476298bc3673a51d0352bbe2303c1e06c88e136c696d36a47de962"},{"id":"r5","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-functions","title":"First-party deploy-output receipt","quote":"✨ Uploading Functions bundle","summary":"Exact successful Wrangler deploy line that proves dynamic code, not only static assets, was uploaded.","publisher":"miscsubjects.com","date":"2026-07-25","claim_ids":["c23"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"f21f6a18b7476298bc3673a51d0352bbe2303c1e06c88e136c696d36a47de962","hash":"67a4db032fc0d1ace40665f73f7b967c0e401f704182091c5b802138612c87ab"},{"id":"r6","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-functions","title":"Fresh first-party _routes.json inventory","quote":"`_routes.json` rules | 1 include + 15 exclude","summary":"Parsed public/_routes.json and counted the current include/exclude rules without modifying it.","publisher":"miscsubjects.com","date":"2026-07-26","claim_ids":["c4","c6"],"accessed_at":"2026-07-26T05:55:10.960Z","prev":"67a4db032fc0d1ace40665f73f7b967c0e401f704182091c5b802138612c87ab","hash":"00106aeb567eaa4c314dac6bc4fa1f10326c2ae37eff3546f70b1dfb71d525f4"}]}