개발 slecs

이전 입력값 패널 추가로 재방문 마찰 제거

목차

사용자가 다시 방문했을 때 이전에 입력했던 값을 빠르게 재사용할 수 있도록 로컬스토리지 기반 히스토리 패널을 추가했다. 재방문율을 높이고 입력 과정의 마찰을 줄이려는 의도다.

왜 이 기능이 필요했나

Retention을 개선하려는 목표를 잡았을 때, 우리가 직면한 현실은 이랬다. 사용자가 첫 방문에선 입력 페이지를 쉽게 통과하지만, 재방문할 때는 같은 형태의 입력을 다시 처음부터 타이핑해야 한다는 게 생각보다 큰 불편함이었다. 특히 모바일 사용자들은 더욱 그렇다.

우리가 한 설문이나 사용성 테스트에서도 "이전에 입력한 것처럼 빠르게 하고 싶다"는 피드백이 여러 번 나왔다. 이걸 해결하는 게 간단해 보이지만, 실제로는 몇 가지 고민할 거리들이 있었다. 서버에 저장할 것인가, 브라우저 로컬에만 저장할 것인가. 개인정보로 분류되는 입력값을 어떻게 다룰 것인가. 히스토리가 쌓일수록 느려지진 않을까.

결국 우린 로컬스토리지로 결정했다. 첫 번째 이유는 빠르다는 거다. 서버 왕복 없이 브라우저에서 즉시 렌더링되니까. 두 번째는 프라이버시다. 민감한 입력값을 서버에 저장하지 않으면 보안/개인정보 관리 리스크가 훨씬 낮아진다. 세 번째는 비용이다. 별도 데이터베이스 공간이나 API 엔드포인트를 관리할 필요가 없다.

구현 전략: 로컬스토리지 + UI 패널

Astro 페이지에 localStorage를 활용한 히스토리 패널을 구현했다. 기본 흐름은 단순하다. 사용자가 입력값을 제출할 때마다 그 값을 로컬스토리지에 저장하고, 페이지를 로드할 때 저장된 히스토리를 읽어서 사이드 패널이나 드롭다운으로 노출한다. 사용자가 히스토리에서 하나를 선택하면 입력 폼에 자동으로 채워진다.

고려 사항 서버 저장 로컬스토리지
응답성 느림 (API 대기) 빠름 (즉시)
보안 관리 필요 (암호화, 전송) 낮음 (브라우저 내부)
용량 제한 무제한 (비용 증가) 5~10MB
기기 간 동기화 가능 불가능

이 경우에는 로컬스토리지가 딱 맞았다. 재방문 편의성이 목표고, 한 기기에서의 빠른 재사용이 핵심이니까.

설계 시 생각했던 것들

히스토리 개수와 용량 관리

로컬스토리지는 용량 제한이 있으므로, 무한정 히스토리를 쌓을 순 없다. 보통 최근 10개 정도만 유지하고, 초과분은 자동으로 제거하는 방식을 썼다. 이렇게 하면 스토리지 부담을 줄이면서도 사용자 입장에선 충분한 편의성을 제공한다.

개인정보 취급

입력 폼에 따라 민감도가 다르다. 공개해도 되는 값(예: 검색어, 카테고리)과 민감한 값(예: 비번, 결제 정보)이 섞여 있을 수 있다. 그래서 우린 히스토리 패널 자체에 "이 데이터는 로컬에만 저장되며 언제든 삭제할 수 있습니다"라는 명시적인 안내를 넣었고, 사용자가 한 번에 전체 히스토리를 지우는 버튼도 제공했다.

디버깅과 테스트

로컬스토리지는 개발자 도구에서 보이므로, 테스트할 때는 쉽지만 제품 배포 후에는 사용자 브라우저에 저장되는 데이터를 제어할 수 없다. 그래서 충분한 로컬 테스트와 스테이징 환경에서의 검증이 중요했다. 특히 다양한 브라우저에서 localStorage 동작이 동일한지 확인해야 했다.

회고와 배운 점

이번 작업을 통해 다시 한 번 깨달은 게 있다. 때론 거대한 인프라 투자보다 작은 UX 개선이 사용자 만족도를 크게 높일 수 있다는 거다. 로컬스토리지를 활용한 이 기능은 코드 라인도 많지 않고, 배포도 간단하지만, 사용자 입장에선 "아, 이게 왜 없었지?"라고 느낄 정도의 편의성을 제공한다.

또 한 가지는 팀 내에서 retention과 개발 우선순위를 논의할 때다. 때론 우리는 큰 기능부터 만들고 싶어 한다. 새로운 페이지, 새로운 API, 대대적인 리팩토링. 하지만 현실의 retention 문제는 종종 이런 작은 마찰 지점에서 비롯된다. 그 마찰을 해소하는 게 결국 사용자를 붙잡는 길이다.

다음 번에는 유사한 입력 패턴들의 히스토리를 통합 관리하거나, 다기기 동기화를 고려해볼 만할 것 같다. 물론 그 땐 서버 스토리지로의 전환과 개인정보 정책 검토가 필수겠지만.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.