Server Functions
Server Functions are async functions that run on the server for form submissions and mutations.
Example: createPost
From data/actions/post-actions.ts:
'use server';
export async function createPost(formData: FormData): Promise<ActionResult> {
const rawData = { title: formData.get('title'), ... };
const result = postSchema.safeParse(rawData);
if (!result.success) {
return { error: result.error.issues[0].message, formData: rawData, success: false };
}
await prisma.post.create({ data: result.data });
updateTag('posts');
return { success: true };
}Returning Errors
export type ActionResult =
| { success: true }
| { success: false; error: string; formData?: FormValues };Return submitted data on errors so forms can repopulate.
Cache Invalidation
export async function updatePost(slug: string, formData: FormData) {
// ... validate and update
updateTag('posts'); // Invalidate the list
updateTag(`post-${slug}`); // Invalidate this post
}