약관·개인정보 페이지 푸터 링크 통일
목차
최근 팀 내 컴플라이언스 검토 중에 동적 라우팅을 쓰는 페이지들에서 푸터 링크가 일관되게 노출되지 않는 문제를 발견했다. 약관과 개인정보처리방침은 사용자가 언제든 접근할 수 있어야 하는 핵심 법적 문서인데, 특정 페이지 구조에서 이 링크들이 빠져 있던 거다.
왜 이 작업이 필요했나
처음엔 "푸터 링크 정도야 큰 문제 아닌 거 아니냐"고 할 수 있지만, 생각을 좀 더 해보면 복잡하다. 서비스 규모가 커질수록 법적 책임과 사용자 신뢰는 분리할 수 없는 문제다. 약관이나 개인정보처리방침에 접근하는 걸 불편하게 하면 (또는 일부 페이지에서만 안 보이면) 사용자는 "이 서비스가 뭔가 숨기는 건 아닐까" 하는 의심을 품는다. 법적으로도 여러 관할권에서 이런 문서의 "쉬운 접근성"을 강제하고 있다.
더 중요한 건 이미 서비스하고 있는 페이지들 사이의 일관성이다. 홈이나 메인 페이지에서는 푸터에 약관 링크가 있는데, 특정 기능 페이지(/d/[dayKey], /s/[epoch])로 가면 갑자기 사라진다면? 사용자 경험이 깨진다. 팀이 성장할수록 이런 "작은 일관성 깨짐"이 누적되면 서비스 전체의 신뢰도가 떨어진다.
어디서 어떻게 고쳤나
변경 파일을 보면 세 개 경로를 건드렸다:
| 파일 | 역할 | 변경 의도 |
|---|---|---|
src/app/d/[dayKey]/page.tsx |
동적 라우트 페이지 (특정 항목 상세) | 푸터 컴포넌트 추가/링크 노출 |
src/app/s/[epoch]/page.tsx |
동적 라우트 페이지 (다른 엔티티 상세) | 동일하게 푸터 일관성 유지 |
src/app/terms/page.tsx |
약관/개인정보 페이지 자체 | 링크 구조 정의 또는 메타 업데이트 |
Next.js 동적 라우팅을 쓰는 페이지들은 종종 레이아웃 상속이나 푸터 공유 로직이 빠지기 쉽다. 보통 이런 페이지들은 "특정 데이터를 fetch하고 표시하는 것"에만 신경 쓰느라, 전역 UI 요소(푸터)를 빼먹기 쉽기 때문이다. 이번 작업은 그런 페이지들에 푸터 컴포넌트를 명시적으로 추가하거나, 레이아웃 상속을 정확히 하는 식으로 일관성을 되찾은 거다.
이 작업을 통해 배운 것
-
레이아웃과 라우팅 구조의 명확함이 중요하다
Next.js 앱 라우터에서 여러 depth의 동적 라우트가 생기면, 각 레벨에서 어느 컴포넌트가 상속되고 어디서 푸터가 렌더되는지 명시적으로 정의해야 한다. "암묵적 상속"은 나중에 이런 빠짐을 만든다. -
법적/규정 요소는 "선택" 아니라 "필수"다
개발팀에서 보면 약관 링크는 마케팅이나 법무 팀 담당으로 보일 수 있지만, 실제론 사용자 신뢰와 서비스 지속성에 직결된다. 이런 요소들은 코드 리뷰에서 특히 신경 써서 체크해야 할 항목으로 문서화하면 좋다. -
페이지 구조 변경 시 전역 UI 요소를 빠트리기 쉽다
새로운 동적 라우트를 만들 때 기능 구현에만 집중하면, 푸터, 헤더, 토글, 광고 같은 "어디든 있어야 하는 것들"을 빼먹을 수 있다. 온보딩 체크리스트나 PR 템플릿에 "전역 UI 요소 확인" 항목을 추가하는 게 도움이 된다.
이 작업은 크지 않지만, 꼼꼼함이 드러나는 지점이다. 사용자가 느끼진 않지만, 그렇기에 더 중요한 부분들을 챙기는 거니까.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.