> nextjs-server-actions
Handle mutations, forms, and RPC-style calls with Next.js Server Actions. Use when implementing Server Actions, form mutations, or RPC-style data mutations in Next.js. (triggers: app/**/actions.ts, src/app/**/actions.ts, app/**/*.tsx, src/app/**/*.tsx, use server, Server Action, revalidatePath, useFormStatus)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/nextjs-server-actions?format=md"Server Actions
Priority: P1 (HIGH)
[!WARNING] If the project uses the
pages/directory instead of the App Router, ignore this skill entirely.
Handle form submissions and mutations without creating API endpoints.
Implementation Guidelines
-
Directive: Always start the file or function with
'use server'. AccessformData.get('title')for typed form fields. Export async functions for mutations. -
Form Handling: Use the
actionprop of<form>to trigger actions viaaction={createPost}. UseuseFormStatus()forpendingstates —disabled={pending}on buttons. UseuseActionState(React 19/Next.js 15) foraction={action}form state with<form action={action}>. -
Data Refresh: Trigger UI updates using
revalidatePath('/')orrevalidateTag('tag-name')after a successful mutation. -
Interactivity: For non-form triggers, invoke actions using the
useTransitionhook to handle loading UI and prevent the page from blocking. -
Optimistic Updates: Use
useOptimisticto show the expected UI state immediately before the server confirms the mutation. -
Security: Sanitize all inputs from
FormData. Perform auth checks inside every action (await auth()). Limit file uploads by size and MIME type. -
Form:
<form action={createPost}>(Progressive enhancements work without JS). -
Event Handler:
onClick={() => createPost(data)}. -
Pending State: Use
useFormStatushook (must be inside a component rendered within the form).
P1: Operational Standard
1. Secure & Validate
Always validate inputs with z.object({ schema and safeParse before processing. Check authorization within the action. See Secure Action Example.
2. Pending States
Use useActionState (React 19/Next.js 15+) for state handling and useFormStatus for button loading states.
Constraints
- Closures: Avoid defining actions inside components to prevent hidden closure encryption overhead and serialization bugs.
- Redirection: Use
redirect()for success navigation; it throws an error that Next.js catches to handle the redirect.
Anti-Patterns
- No unvalidated Server Action inputs: Always validate with Zod before processing.
- No skipped auth checks: Verify session/user inside every action, not just middleware.
- No actions defined inside components: Define in
actions.tsto avoid closure bugs. - No
redirect()in try/catch:redirect()throws; catching it suppresses the redirect.
> related_skills --same-repo
> common-store-changelog
Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve
> golang-tooling
Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)
> common-ui-design
Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)
> common-owasp
OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)