API Reference
createSafeActionClient()
createSafeActionClient creates a new safe action client instance. This is the entry point for defining type-safe server actions.
import { createSafeActionClient } from "next-safe-action";
const actionClient = createSafeActionClient(opts);Parameters
createSafeActionClient accepts an optional options object:
Prop
Type
Return value
Returns a SafeActionClient instance with all chainable methods available.
Examples
Minimal client
import { createSafeActionClient } from "next-safe-action";
export const actionClient = createSafeActionClient();Custom error handling
import { createSafeActionClient } from "next-safe-action";
export const actionClient = createSafeActionClient({
handleServerError: (error, { metadata }) => {
// Log to your error tracking service
reportError(error, { metadata });
// Return a user-friendly message
if (error instanceof DatabaseError) {
return "A database error occurred. Please try again.";
}
return "Something went wrong.";
},
});With metadata schema
import { createSafeActionClient } from "next-safe-action";
import { z } from "zod";
export const actionClient = createSafeActionClient({
defineMetadataSchema: () =>
z.object({
actionName: z.string(),
}),
});
// All actions using this client must now call .metadata()
export const myAction = actionClient
.metadata({ actionName: "myAction" })
.action(async () => {
// ...
});Flattened validation errors
import { createSafeActionClient } from "next-safe-action";
export const actionClient = createSafeActionClient({
defaultValidationErrorsShape: "flattened",
});
// All actions using this client return flattened errors:
// { formErrors: string[], fieldErrors: { [field]: string[] } }ServerErrorFunctionUtils
The second argument passed to handleServerError:
Prop
Type
See also
- Action Client — conceptual overview of the client pattern
- SafeActionClient methods — all chainable methods available on the returned client
- Metadata — using
defineMetadataSchemafor type-safe action metadata - Error Handling — understanding
handleServerErrorin context