React 프로젝트에 Tailwind CSS 도입 후기

배경

재택근무가 시작되면서 새 프로젝트를 맡게 됐다. 기존에는 Styled-components를 주로 사용했는데, 유틸리티 퍼스트 접근법이 궁금해서 Tailwind CSS를 도입해보기로 했다.

설정 과정

CRA 프로젝트에 적용하는 건 생각보다 간단했다. CRACO를 사용해 PostCSS 설정을 커스터마이징했다.

npm install -D [email protected] @craco/craco autoprefixer postcss
npx tailwindcss init
// craco.config.js
module.exports = {
  style: {
    postcss: {
      plugins: [
        require('tailwindcss'),
        require('autoprefixer'),
      ],
    },
  },
};

실사용 후기

처음엔 클래스명이 너무 길어서 거부감이 있었다. 하지만 일주일 정도 쓰니 CSS 파일을 왔다갔다 하는 시간이 확실히 줄었다.

// Before (Styled-components)
const Button = styled.button`
  padding: 0.5rem 1rem;
  background-color: #3b82f6;
  color: white;
  border-radius: 0.375rem;
  &:hover {
    background-color: #2563eb;
  }
`;

// After (Tailwind)
<button className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">

반응형 작업도 훨씬 직관적이었다. md:, lg: prefix만 붙이면 되니 미디어쿼리를 따로 관리할 필요가 없었다.

팀 반응

디자이너와 협업할 때는 장단점이 있었다. 디자인 시스템의 spacing, color를 강제할 수 있어서 일관성은 좋아졌다. 대신 pixel-perfect 디자인을 요구받으면 tailwind.config.js를 계속 수정해야 했다.

Junior 개발자 한 명은 처음엔 클래스명 외우기 힘들어했지만, Intellisense 확장 설치 후엔 오히려 CSS 문법 몰라도 작업할 수 있다며 좋아했다.

결론

개발 속도는 확실히 빨라졌다. 다만 커스텀이 많이 필요한 컴포넌트는 여전히 Styled-components를 병행하고 있다. 당분간은 두 방식을 섞어 쓰면서 적절한 균형점을 찾아볼 예정이다.

React 프로젝트에 Tailwind CSS 도입 후기