[프로젝트 공유] 프레임워크에 덜 의존적인 UI 컴포넌트를 만들어봤습니다

안녕하세요.
프론트엔드 개발을 하면서 React, Vue 등 여러 프레임워크를 오가다 보니
항상 비슷한 고민을 하게 되었습니다.

Select, Toast 같은 기본 UI 컴포넌트는
프레임워크가 바뀔 때마다 다시 구현해야 할까?

UI 동작과 UX는 거의 같은데,
프레임워크에 묶여 있다는 이유로
매번 새로 만드는 구조가 과연 효율적인지 의문이 들었습니다.

그래서 개인 프로젝트로
프레임워크에 덜 의존적인 UI 컴포넌트를 Web Components 기반으로 만들어보았습니다.


🔧 어떤 것을 만들어봤나요?

크게 두 가지 컴포넌트입니다.

1⃣ Select 컴포넌트

  • Web Component 기반 (의존성 없음)

  • 대용량 데이터 처리를 위한 가상 스크롤

  • 한글 초성 / 일본어 / 중국어 검색 지원

  • 키보드 접근성 및 스크린 리더 대응

  • CSS Variables 기반 스타일 커스터마이징

  • React, Vue 등에서 사용할 수 있도록 래퍼 제공

2⃣ Toast 알림 컴포넌트

  • 프레임워크에 종속되지 않는 Toast UI

  • 여러 위치와 애니메이션 지원

  • 중복 메시지 자동 그룹핑

  • SSR 환경 고려

  • 접근성(ARIA) 기본 지원


🤔 Web Components를 선택한 이유

Web Components를 선택한 이유는 단순합니다.

  • 브라우저 표준 기술이라 장기 유지에 유리

  • 특정 프레임워크 라이프사이클에 묶이지 않음

  • 여러 프로젝트에서 재사용 가능

  • UI 프리미티브(Select, Toast 등)에 적합하다고 판단

물론 프레임워크 전용 컴포넌트만큼의 DX는 아닐 수 있지만,
장기적인 관점에서는 충분히 의미 있는 시도라고 생각했습니다.


💬 커뮤니티 분들께 여쭤보고 싶습니다

  • 실무에서 Web Components를 사용해보신 경험이 있으신가요?

  • 프레임워크 변경 가능성이 있는 프로젝트에서
    UI 컴포넌트를 어떻게 관리하고 계신지 궁금합니다.

  • 이런 접근 방식이 현실적인 선택일지 의견을 듣고 싶습니다.

아직은 실험적인 프로젝트이고,
피드백을 받아가며 개선해보려는 단계입니다.
편하게 의견 주시면 감사하겠습니다.


🔗 참고 링크

댓글을 작성해보세요.

채널톡 아이콘