피드로 돌아가기
InfoQInfoQ
Frontend

History API의 한계를 극복한 Navigation API의 Baseline 달성

Navigation API Reaches Baseline Newly Available as Replacement to the History API

Daniel Curtis2026년 5월 18일3intermediate

Context

기존 History API의 파편화된 이벤트 처리와 pushState 호출 시 popstate 미발생으로 인한 상태 동기화 문제 발생. History Stack의 전체 조회 불가능 및 임의 항목 이동 제약으로 인해 SPA 라우팅 구현 시 과도한 Boilerplate 코드 작성 필요.

Technical Solution

  • 모든 내비게이션 트리거를 통합 처리하는 navigate event 중심의 중앙 집중식 인터페이스 설계
  • event.intercept() 도입을 통한 URL 업데이트 및 Focus Management의 자동화 처리
  • precommitHandler와 handler의 분리를 통한 URL 변경 전 데이터 페칭과 변경 후 콘텐츠 교체 로직의 명확한 구분
  • navigation.entries() 및 traverseTo(key) 제공으로 History Stack의 가시성 확보 및 임의 엔트리 이동 가능 구조 구현
  • AbortSignal 기반의 취소 가능 내비게이션 및 내장 Scroll Restoration 기능 통합으로 브라우저 기본 동작 제어력 강화

- SPA 라우팅 로직 설계 시 Navigation API의 navigate event를 통한 중앙 제어 가능 여부 검토 - URL 변경 전 전처리 로직이 필요한 경우 precommitHandler 도입 및 Safari 브라우저 지원 현황 확인 - 기존 History API 기반의 복잡한 래퍼 함수를 navigation.entries()와 traverseTo()로 대체하여 코드 단순화 추진

원문 읽기