CSS-in-JS는 JavaScript 코드 안에서 CSS 스타일을 정의하고 사용하는 방식을 말합니다. 전통적인 방식에서는 .css 파일에 스타일을 작성하고, 클래스명을 HTML에 붙여서 사용했지만, CSS-in-JS는 스타일을 JavaScript 코드 내부에서 직접 작성해서 컴포넌트와 스타일을 더 강하게 결합할 수 있도록 도와줍니다. 대표적으로는 styled-components, emotion, vanilla-extracct등이 있습니다.
장점
단점
최근에는 TailwindCSS나 vanilla-extract처럼 정적 CSS 시스템을 선호하는 경향도 커졌습니다.
App Router + TailwindCSS + ShadCN조합을 사용한다면, CSS-in-JS보다 utility-first 스타일링을 더 많이 활용할 수 있죠. 다만, ShadCN에서 사용하는@emotion도 일종의 CSS-in-JS 방식입니다.
대부분의 CSS-in-JS 라이브러리는 브라우저에서 실행될 때(즉, 런타임)에 실제 스타일 태그(<style>)를 생성해 DOM에 삽입됩니다.
특히, styled-components나 emotion처럼 런타임 기반 라이브러리는 다음 과정을 거칩니다