kit icon indicating copy to clipboard operation
kit copied to clipboard

Named form actions do not work with Vercel ISR.

Open Leftium opened this issue 2 years ago • 1 comments

Describe the bug

A named form action returns a 500 Internal Error when served from Vercel with ISR.

Reproduction

Steps:

  1. Clone repo: https://github.com/Leftium/kit-demos/tree/isr-actions
  2. Deploy to Vercel
  3. Load / (root path): https://kit-demos-git-isr-actions-leftium.vercel.app/
  4. Click "Submit" button

Expected:

  • "undefined" turns to "true" (the property form.success from return value of form action.)

Actual:

  • 500 Internal Error
  • Vercel log may show error message like "cannot find default form action."

Logs

No response

System Info

System:
    OS: Windows 11 10.0.22621
    CPU: (8) x64 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
    Memory: 8.99 GB / 23.86 GB
  Binaries:
    Node: 18.18.2 - V:\scoop\apps\nodejs-lts\current\node.EXE
    npm: 9.8.1 - V:\scoop\apps\nodejs-lts\current\npm.CMD
    pnpm: 8.11.0 - V:\pnpm-home\pnpm.CMD
  Browsers:
    Edge: Chromium (120.0.2210.61)
    Internet Explorer: 11.0.22621.1
  npmPackages:
    @sveltejs/adapter-auto: ^2.0.0 => 2.1.1
    @sveltejs/kit: ^1.20.4 => 1.30.3
    svelte: ^4.0.5 => 4.2.8
    vite: ^4.4.2 => 4.5.1

Severity

serious, but I can work around it

Additional Information

  • The error does not happen if the default action is used: https://kit-demos-git-isr-actions-leftium.vercel.app/with-isr-default-action
  • The error does not happen if ISR is not used: https://kit-demos-git-isr-actions-leftium.vercel.app/without-isr

So the work-arounds are to not use named form actions or not use ISR.

Leftium avatar Dec 15 '23 11:12 Leftium

I have the same issue, but with ISR and Speed-Insights (also from Vercel) producing the same error message.

Discussion: https://github.com/orgs/vercel/discussions/4460

Can confirm that disabling both Vercel features fixes these issues and my named action works as expected.

carstenjaksch avatar Dec 26 '23 13:12 carstenjaksch

I believe I am hitting this same issue seeing as a form that previously worked on hitting "save" now says "404 Not Found" upon hitting "save" after enabling ISR in a root-level +layout.server.js that affected that route.

I mean this kind of makes sense though, and I think the ISR docs just need to specifically point out that when you enable ISR for any given route(s), those routes are going to be processed as though prerender is set to true (else ISR would not really do anything for that route). I have added a note or two along these lines in PR #12030

I am assuming my assumptions here are correct about ISR turning a route essentially into a prerendered route and thus causing server-side functions to no longer fire, although I am not 100% certain I am correct in my way of explaining it.

leoj3n avatar Mar 24 '24 16:03 leoj3n

After seeing https://github.com/sveltejs/kit/issues/661#issuecomment-1812038166 I am wondering if my initial interpretation above is accurate.

leoj3n avatar Mar 24 '24 18:03 leoj3n