서버 액션 폼은 idle에서 결과까지 상태를 순환한다

pending 표시와 서버 결과를 분리하면 중복 제출과 조용한 실패를 줄일 수 있다.

Idle입력 가능하며 이전 성공·오류 메시지를 표시하는 상태
SUBMIT

Idle → Pending

버튼을 잠그고 입력값을 서버로 전달

VALID

Pending → Saving

서버가 권한·schema를 검증하고 변경

INVALID

Saving → Result

직렬화한 필드 오류와 입력을 다시 표시

SUCCESS

Saving → Idle

revalidatePath·updateTag·revalidateTag(tag, 'max') 중 목적에 맞는 API를 호출한 뒤 복귀

핵심클라이언트 검증은 UX를 돕고 서버 검증은 신뢰 경계를 지키므로 둘의 역할을 바꾸지 않는다.