Skip to content

Redirect inside server action: Invalid element: root #1509

@dswbx

Description

@dswbx

When using unstable_redirect inside a server action I'll get this error:

Error: Invalid element: root
    at Slot (file:///Users/dennis/Projects/tmp/waku/waku-server-action-redirect/node_modules/waku/dist/minimal/client.js:224:15)
    at react-stack-bottom-frame (/Users/dennis/Projects/tmp/waku/waku-server-action-redirect/node_modules/react-dom/cjs/react-dom-server.edge.development.js:9251:18)
    at renderWithHooks (/Users/dennis/Projects/tmp/waku/waku-server-action-redirect/node_modules/react-dom/cjs/react-dom-server.edge.development.js:4898:19)
    at renderElement (/Users/dennis/Projects/tmp/waku/waku-server-action-redirect/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5333:23)
    at retryNode (/Users/dennis/Projects/tmp/waku/waku-server-action-redirect/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6092:31)
    at performWork (/Users/dennis/Projects/tmp/waku/waku-server-action-redirect/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6936:17)
    at /Users/dennis/Projects/tmp/waku/waku-server-action-redirect/node_modules/react-dom/cjs/react-dom-server.edge.development.js:4573:22
    at node:internal/process/task_queues:151:7
    at AsyncResource.runInAsyncScope (node:async_hooks:214:14)
    at AsyncResource.runMicrotask (node:internal/process/task_queues:148:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)

This is the code:

import { unstable_redirect } from "waku/router/server";

export default async function HomePage() {
  return (
    <form
      action={async () => {
        "use server";
        unstable_redirect("/about");
      }}
    >
      <button type="submit">
        Redirect to About Page
      </button>
    </form>
  );
}

I'm not an expert on server actions, but looking at the Next.js docs, it should be possible to redirect. Redirecting inside a server component (lingo is confusing lol, so apologize if I got it wrong) works though.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions