사용자 입력을 시맨틱하게 묶는 컨테이너. div로 비슷한 시각 효과를 낼 수 있지만 — form 태그가 주는 Enter 키 제출, 브라우저 autofill, 검증 자동화, 스크린리더 폼 모드 같은 무료 동작들이 모두 빠진다.
SEO 관점에서 form 자체가 ranking factor는 아니다. 다만 폼이 완료되는 비율(전환율, task success)이 페이지의 사용자 만족 신호로 작용. form 시맨틱이 갖춰진 페이지는 완료율이 더 높다는 통계적 패턴.
GEO 관점에서 AI 에이전트가 "이 사이트에서 회원가입 해줘" 같은 작업을 받았을 때 — form 태그가 입력 그룹의 명확한 경계. div 폼은 에이전트가 어디까지가 한 폼인지 추측. form이 명시되면 그 안의 input들이 한 묶음임을 즉시 인지.
A11y 관점에서 스크린리더가 form 진입 시 폼 모드로 전환. F 키 같은 단축키로 다음 폼 컨트롤로 점프, 필드 정보 모드로 라벨 + 입력값 발화. 시각 사용자가 Tab으로 필드 이동하는 것과 동등한 청각 경험.
자주 보는 안티패턴: div로 form 대체(가장 흔함 — Enter 제출 안 됨), form 중첩(HTML 명세 명시적 위반), submit 버튼이 type="button"(Enter 키로 제출 안 됨 — 시리즈 #1 button vs a 글의 type 명시 패턴), 검색 form에 role="search" 누락(검색 landmark 손실).
form의 action/method 속성 — 어디로, 어떻게 전송할지 명시. 같은 페이지 안에서 JavaScript로 처리하더라도 — action="/api/contact"와 method="post"를 박아두면 JS 비활성화 환경에서도 fallback. 점진적 향상(progressive enhancement)의 표준.
novalidate 속성 — 브라우저 native validation을 끄고 라이브러리 검증으로 일원화. 시리즈 #9 form-error에서 본 패턴 — react-hook-form 등 라이브러리 검증을 쓸 때 native 메시지가 언어·디자인 통제 불가라 noValidate가 표준.
검색 form의 role="search" — 일반 form이 아닌 검색 전용임을 명시. 스크린리더의 D 키 landmark 점프에서 search 영역으로 노출. 사이트 내 검색을 자주 쓰는 시각장애 사용자에게 결정적 단축.
UI 라이브러리 — Radix Form, Headless UI Field 등이 form + label + input + 검증 메시지의 자동 연결을 제공. 시맨틱 + a11y의 정답을 기본값으로 가져오는 가장 안전한 선택.