That looks to be expected - the Worker will only be run _after_ Assets, and if one isn't hit. Do you
That looks to be expected - the Worker will only be run after Assets, and if one isn't hit. Do you have a reproducible example issue?

update for SPA mode was intended to do, but the worker code is not being invoked at all..newUniqueId to generate cookie values, then using .idFromString to read them, this fails when my worker is reloaded. (this would be done specifying uniqueKey in workerd, i think: https://github.com/cloudflare/workerd/blob/main/src/workerd/server/workerd.capnp#L554)"not_found_handling": "single-page-application"assets_navigation_prefers_asset_serving compat flag that was enabled by default on April 1st. Now, if requests include the Sec-Fetch-Mode: navigate header, which happens on page navigation, and in SPA mode, the index.html or 404.html is served, instead of the Worker being invoked. await (await fetch('/api/hello')).json(), you'll see the expected response, and the Worker get invoked.assets_navigation_has_no_effect to your compatibility_flags

fetch to a URL vs hitting it in their browser.return new Response(null, { status: 404 });assets_navigation_prefers_asset_serving behaviourassets_navigation_has_no_effect flag if you wish to opt out. For most people though, we expect this change to be a welcome one. In traditional SPA setups, this will reduce the number of billable requests that you see in your application, without affecting functionality.fetch took me some time to figure out and I follow the platform very closely - without something like debug logs from wrangler, I can imgine people are going to hit this very frequently./api/foo vs when they fetch it, especially when there's no code in the worker that explicitly handles this. As standard and completely transparent behaviour, that's just weird.wrangler dev.GET /api/foo - Received Sec-Fetch-Mode: navigate, serving <> or words to that effect, it'd help a lot with the confusion.assets.not_found_handling is something other than “none”, that fallback is served (index.html for SPA, 404.html for 404-page).env.ASSETS.fetch(request) will likely no longer be necessary in most applications. They can now just return 404s or whatever.env.ASSETS.fetch(request), a response according to assets.not_found_handling is returned.404.html traverses up to find one, but index.html doesn't in SPA mode, which might explain your weirdness @Silvan: https://github.com/cloudflare/workers-sdk/blob/d4c11710fd36286be8587379d659e19e91778777/packages/workers-shared/asset-worker/src/handler.ts#L867Using redirected Wrangler configuration.
- Configuration being used: "dist/my_react_app/wrangler.json"
- Original user's configuration: "wrangler.jsonc"
- Deploy configuration file: ".wrangler/deploy/config.json"assets_navigation_has_no_effectassets_navigation_has_no_effectcompatibility_flagsYou can configure and override this default routing behaviour. For example, if you have a Single Page Application and want to serve index.html for all unmatched routes, you can set not_found_handling = "single-page-application":app.use('*',...)return new Response(null, { status: 404 });/api/fooGET /api/foo - Received Sec-Fetch-Mode: navigate, serving <>assets.not_found_handlingassets.not_found_handlingenv.ASSETS.fetch(request)env.ASSETS.fetch(request)