본문 바로가기
개발

Next.js + TypeScript에서 shadcn/ui 사용 후기 - 진짜 써보고 느낀 장단점

by earning3 2025. 1. 9.
반응형

안녕하세요, 개발자 여러분! 😊
오늘은 제가 최근 프로젝트에서 직접 사용해본 shadcn/ui 라이브러리 후기를 공유해보려고 합니다.
Next.js와 TypeScript 환경에서 적용해봤는데, 개인적으로 정말 강추하고 싶은 경험이었어요.

사실 처음엔 '이런 UI 라이브러리 또 나왔구나' 싶었는데, 막상 써보니 Radix UI와 Tailwind CSS 기반이라 그런지 생산성이 꽤 올라가더라고요. 특히 TypeScript랑 궁합이 좋아서 타입 안정성도 챙기면서 개발할 수 있었습니다.


🛠️ 초기 설정부터 깔끔했다

프로젝트에 shadcn/ui를 설치할 때 npx shadcn-ui@latest init 명령어를 사용했는데, 옵션이 정말 직관적이더라고요.

👉 TypeScript 적용 여부부터 색상 테마 선택까지 쭉 나와서 하나씩 고르다 보니 금방 세팅 완료.
이 단계에서 "이거 초보자들도 쉽게 따라오겠다" 싶었어요.


🧩 필요한 컴포넌트만 골라 쓰는 구조가 좋았다

shadcn/ui의 가장 큰 장점 중 하나가 바로 필요한 컴포넌트만 뽑아서 쓸 수 있다는 점이었는데요.

예를 들어 Button 하나만 추가하고 싶으면 정말 이렇게 끝납니다:

 

npx shadcn-ui@latest add button

 

예전엔 이런 UI 라이브러리 설치하면 필요 없는 덩어리까지 같이 깔리는 경우 많았는데, shadcn/ui는 딱 필요한 것만 추가돼서 프로젝트도 가벼워지고 마음에 들더라고요.


💻 실제로 써본 코드 예시 (Button 컴포넌트)

직접 Button을 추가하고 이렇게 사용해봤습니다:

import { Button } from "@/components/ui/button"

export default function Home() {
  return (
    <div>
      <h1>shadcn/ui 테스트</h1>
      <Button variant="outline">클릭해보세요</Button>
    </div>
  )
}

TypeScript랑 잘 맞아서 오타나 타입 실수도 거의 안 나고, 코드 작성할 때마다 확실히 안정감 있더라고요.


🎨 진짜 좋았던 건 ‘커스터마이징’

프로젝트 하다 보면 라이브러리 컴포넌트 디자인 바꾸고 싶을 때 많잖아요?
shadcn/ui는 아예 컴포넌트 소스를 내 프로젝트에 들고 오니까 그냥 열어서 수정하면 끝.

저 같은 경우 버튼 디자인을 프로젝트 맞게 살짝 수정했는데, 정말 편했습니다.
다른 라이브러리였다면 style override 하느라 삽질했을 텐데… 여긴 그런 스트레스가 없더라고요.


📝 폼 구현도 쉽게 됐다 (실제 써봄)

이걸로 로그인 폼도 만들어봤는데, react-hook-form이랑 zod랑도 잘 붙어요.

<Form {...form}>
  <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
    <FormField ... />
    <Button type="submit">Submit</Button>
  </form>
</Form>
 

실제로 API 연동까지 해봤는데, 타입도 잘 잡아주고 검증도 편하고, 확실히 이 조합 강추입니다.


써보면서 느낀 아쉬운 점

  • 파일 개수가 조금 많아져서 관리가 번거로울 수도 있다
  • 커스터마이징이 쉬운 대신, 초보자에겐 구조 파악이 어려울 수도 있다

저도 처음에 폴더 구조 열어보고 "이거 뭐가 이렇게 많지?" 했는데, 막상 쓰다 보니 금방 적응됐습니다.


🚀 결론 - Tailwind 잘 쓰는 분들께 특히 추천

솔직히 Tailwind CSS 자주 쓰시는 분들은 바로 적응해서 생산성 뻥튀기 할 수 있어요.
저는 개인적으로 "앞으로 개인 프로젝트는 무조건 이거 쓴다" 싶을 정도로 마음에 들었습니다.


💬 여러분 생각은 어떤가요?

혹시 shadcn/ui 써보신 분 계신가요?
아니면 써보고 싶은데 궁금한 점 있으시면 댓글 남겨주세요!
제가 써보면서 느낀 점들 더 공유해드릴게요. 😊

반응형