DEV Community

Cover image for React 19: Server Functions
Jaime
Jaime

Posted on

2

React 19: Server Functions

Server Functions are functions referenced on the client but executed on the server.

Here’s an example:

'use client'

import { useActionState } from "react";

import { updateName } from "@/app/react-19-server-function/actions";


export default function Page() {

    const [error, submitAction, isPending] = useActionState(
        async (_previousState, formData) => {
            const error = await updateName(formData.get("name") as string);
            if (error) {
                return error;
            }

            return ""
        },
        "",
    );

    return <div>
        <h1>React 19: Server Functions</h1>
        <fieldset>
            <div>Name</div>

            <form action={submitAction}>
                <input type="text" name="name" />

                <button type="submit" disabled={isPending}>Save</button>
            </form>

            <div>
                {error && <p>{error}</p>}
            </div>
        </fieldset>
    </div>
}
Enter fullscreen mode Exit fullscreen mode

Check my earlier post for more details on useActionState

Notice how updateName is imported.

import { updateName } from "@/app/react-19-server-function/actions";
Enter fullscreen mode Exit fullscreen mode

and passed into useActionState.

This means that whenever the form is submitted, it runs submitAction, which then calls updateName.

Now, let’s check out updateName:

"use server";

export async function updateName(name) {
  if (name?.length < 2) {
    return "Name must be at least 2 characters.";
  }

  return "";
}
Enter fullscreen mode Exit fullscreen mode

It’s a very simple function that checks the length of name. If it has less than 2 characters, it returns an error; otherwise, it returns an empty string, meaning no error.

Another thing to note is the directive: "use server". This tells React the function will be executed on the server, so it creates a reference the client can use.

The UI is super straightforward and looks like this:

React 19: Server Functions UI

If the form is submitted without any value, you’ll notice a POST network request with a few interesting details:

  • content-type: is text/x-component.

React 19: Server Functions Content Type

  • The payload is passed automatically, even though it’s empty.

React 19: Server Functions Payload

  • The response is kind of like JSON.

React 19: Server Functions Response

Links

Conclusion

Server Functions are functions that run on the server. The alternative is to manually use fetch to make a request to the backend and handle things like reading the status code and parsing the payload.

With Server Functions, you don’t need to worry about the communication part. Just create a function with the "use server" directive and import it into a client file, the framework takes care of the rest.

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay