본문으로 이동
@use-funnel 개발기 #2: 기존 라이브러리를 어떻게 뜯어 고칠 것인가?
문서

@use-funnel 개발기 #2: 기존 라이브러리를 어떻게 뜯어 고칠 것인가?

강민우 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

기존 퍼널 라이브러리는 Next.js 의존성, 단계별 상태 검증의 부재, 이전 단계 상태를 활용하기 어려운 점 때문에 다양한 라우터와 UI 요구를 수용하기 힘들었다. 이를 해결하기 위해 핵심 로직을 `@use-funnel/core`로 분리하고, 라우터별 패키지가 `createUseFunnel`에 구현을 주입하는 구조로 바꿨다. 단계별 상태는 TypeScript 제네릭과 구별된 유니온으로 표현하고, 상태 타입 비교를 통해 다음 단계에 필요한 데이터가 빠지면 타입 오류가 나도록 했다. 또 `Render.overlay`와 `Render.with`를 제공해 이전 화면을 유지하는 오버레이와 조건별 전환을 지원하며, 공통 로직과 확장 인터페이스를 분리하는 설계의 중요성을 보여준다.

  • 라우터별 구현과 퍼널 핵심 로직을 분리하면 Next.js에 종속되지 않는 라이브러리를 만들 수 있다.
  • 단계별 상태를 제네릭으로 선언하고 구별된 유니온을 활용하면 단계 전환과 데이터 전달을 컴파일 시점에 검증할 수 있다.
  • 기존 단계의 상태를 유지해야 하는 오버레이 UI는 렌더링할 단계를 배열로 관리해 구현할 수 있다.
  • 복잡한 퍼널에서는 이벤트와 화면 렌더링을 분리해 전환 규칙의 응집도를 높일 수 있다.

소개

이번 아티클에서는 @use-funnel 라이브러리의 구현 과정과 방법에 대해서 더 자세히 살펴볼게요.

비슷한 학습 자료

컨퍼런스 SLASH

매끄럽고 우아한 사용자 경험을 위한 개발자의 경험도 우아할 수 있을까요? 수많은 화면과 쏟아지는 분기를 효과적으로 관리하는 ‘퍼널’ 설계에 대해 소개합니다. 진유림 / 토스 Frontend Developer 발표 자료 👉🏻 https://bit.ly/3WZip27 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://bit.ly/43kW3tO 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im 토스에 합류하고 싶다면 👉🏻 https://toss.im/career/jobs #퍼널 #라이브러리 #frontenddeveloper #토스 #개발자컨퍼런스 #SLASH *본 발표자료의 저작권은 연사에 있으며, 저작권자의 사전 서면 동의 없이 자료의 일부 또는 전부를 이용하거나 배포할 수 없습니다. *또한 해당 자료를 복제하여 SLASH 행사 홈페이지를 제외한 온라인상에 게재하는 행위는 연사가 동의한 저작권 및 배포전송권에 위배됩니다....

프론트엔드

문서 권선영

단계별 상태 관리 라이브러리 @use-funnel을 어떻게 만들게 되었는지 소개드릴게요. 문제의식을 공유하고 해결방법을 찾으려는 분들께 도움이 되면 좋겠어요.

프론트엔드 개발 도구

문서 토스 프론트엔드 챕터

프론트엔드 개발에서 프레임워크는 정말 필수 일까요? 토스 정진우, 조유성 님이 전하는 프레임워크와 라이브러리의 정의부터 실제 업무에서의 활용법까지, 실용적인 예시를 통해 함께 알아보시죠!

프론트엔드

문서 임지훈

여러분은 라이브러리를 만들어봤거나, 만들어야겠다고 생각해본 적이 있나요? 이번에는 프론트엔드 개발 환경에서 높은 범용성을 나타내는 용어 중 하나인 “Framework Agnostic”에 대해 이야기 해보려고 합니다.

웹 개발 프론트엔드

문서 강현구

매일 “사용”만 하는 transpiler, 토스뱅크에서는 한 단계 더 잘 “활용”해 보기로 했어요. 오늘은 transpiler로 로깅 과정을 개선한 사례를 소개 드릴게요.

프론트엔드 프로그래밍 언어

문서 권가은

디자인 컴포넌트 라이브러리 빌드 및 구조 개선기

프론트엔드 UI/UX