Главная ловушка: Server Action — публичный endpoint. Без auth и validate внутри любой может вызвать с любым payload.
Разбор
- «Server Action — public endpoint.»
'use server' — не authorization boundary.
- Always validate payload.
formData attacker-controlled. Zod/valibot; never spread straight в DB write.
useFormStatus читает nearest parent form и живёт в child inside <form> — sibling → pending: false forever.
useFormState → useActionState. React 19 rename, из react-dom в react.
- Closed-over variables encrypted, но sent. Не пихайте huge objects или per-request secrets в bound closure.
- Revalidate после mutate, иначе reader cached data — UI «не обновляется» до hard refresh.
redirect() throws — не глотайте в try/catch action body.
Итог
На интервью: action = route handler по безопасности; validate, auth, revalidate — обязательный минимум.