서버 액션 폼은 idle에서 결과까지 상태를 순환한다
pending 표시와 서버 결과를 분리하면 중복 제출과 조용한 실패를 줄일 수 있다.
Idle → Pending
버튼을 잠그고 입력값을 서버로 전달
Pending → Saving
서버가 권한·schema를 검증하고 변경
Saving → Result
직렬화한 필드 오류와 입력을 다시 표시
Saving → Idle
revalidatePath·updateTag·revalidateTag(tag, 'max') 중 목적에 맞는 API를 호출한 뒤 복귀
핵심클라이언트 검증은 UX를 돕고 서버 검증은 신뢰 경계를 지키므로 둘의 역할을 바꾸지 않는다.