atomic-css

2 개의 포스트

meta원문

StyleX를 이용한 (새 탭에서 열림)

메타는 대규모 코드베이스에서 발생하는 CSS 관리의 어려움을 해결하기 위해 오픈 소스 스타일링 시스템인 StyleX를 개발하여 표준으로 운용하고 있습니다. StyleX는 CSS-in-JS의 편리한 개발 경험과 정적 CSS의 뛰어난 성능을 결합하여, 원자적(Atomic) 스타일링을 통한 번들 크기 최적화와 단순한 API 구조를 동시에 제공합니다. 현재 페이스북, 인스타그램 등 메타의 주요 서비스는 물론 피그마, 스노우플레이크와 같은 외부 대형 기술 기업들에서도 표준 시스템으로 채택되어 그 효용성을 입증하고 있습니다. **StyleX의 핵심 기술적 접근** * **하이브리드 아키텍처:** 런타임 오버헤드가 적은 CSS-in-JS의 사용성을 유지하면서도, 최종 결과물은 정적인 CSS 파일로 추출되어 브라우저 성능을 최적화합니다. * **원자적(Atomic) 스타일링:** 스타일 정의를 최소 단위로 쪼개어 관리하며, 중복된 정의를 제거하는 디두플리케이션(Deduplication) 과정을 통해 웹 사이트의 전체 번들 크기를 효과적으로 줄입니다. * **확장성 있는 API:** 대규모 개발 팀이 협업할 때 일관된 스타일 규칙을 적용할 수 있도록 설계되었으며, 복잡한 UI 구성 요소에서도 성능 저하 없이 스타일을 적용할 수 있습니다. **메타 내부 및 외부 생태계의 도입 현황** * **글로벌 서비스의 표준화:** 페이스북, 인스타그램, 왓츠앱, 메신저, 스레드 등 메타의 모든 주요 플랫폼에서 표준 스타일링 라이브러리로 사용되고 있습니다. * **업계 전반의 확산:** 메타 외부에서도 기술적 완성도를 인정받아 피그마(Figma)와 스노우플레이크(Snowflake) 같은 기업들이 자사 시스템에 StyleX를 도입하여 운영 중입니다. * **오픈 소스 시너지:** 프로젝트 메인테이너들은 외부 기업 및 커뮤니티와의 상호작용을 통해 프로젝트의 완성도를 높이고 있으며, 이는 기술적 발전을 가속화하는 기폭제 역할을 하고 있습니다. **실무적 가치와 권장 사항** StyleX는 대규모 웹 애플리케이션을 구축할 때 성능과 유지보수성 사이의 타협점을 찾는 팀에게 강력한 해결책이 됩니다. 특히 프로젝트의 규모가 커짐에 따라 CSS 파일 크기가 비대해지는 문제를 겪고 있다면, 메타의 검증된 원자적 CSS 기법을 제공하는 StyleX 도입을 통해 효율적인 번들링과 일관된 스타일 아키텍처를 구축할 것을 권장합니다.

figma3분 읽기큐레이션 요약

Thumbtack이 디자인

Thumbtack은 디자인 시스템 **Thumbprint**를 토큰, Atomic CSS, 컴포넌트의 3계층으로 구성해 유연성과 생산성을 함께 확보한다. 하위 계층일수록 세밀한 제어와 확장성이 높고, 상위 계층일수록 접근성·일관성·개발 생산성이 높아진다. 필요한 경우 각 계층 내부에도 추가 계층을 두어, 개발자가 일반적인 상황에서는 간편한 추상화를 사용하면서도 특수한 요구에는 더 낮은 계층으로 내려갈 수 있게 했다. ## 3단계 계층 구조 - **Thumbprint Tokens** - 시스템의 가장 낮은 추상화 계층이다. - 색상, 타이포그래피, 모서리 반경, 간격, 크기, 그림자 등 세부 디자인 속성을 변수로 정의한다. - 웹과 네이티브 클라이언트 모두에서 사용된다. - 가장 세밀하고 유연하지만, 이를 직접 조합해야 하므로 개발 생산성은 상대적으로 낮다. - **Thumbprint Atomic** - Thumbprint Tokens 위에 구축된 원자적 CSS 라이브러리다. - 개발자가 별도의 커스텀 CSS를 작성하지 않고도 UI를 구성할 수 있다. - 예를 들어 `aspect ratio` 클래스를 사용하면 YouTube나 Vimeo 같은 외부 미디어의 가로세로 비율을 일정하게 유지할 수 있다. - 토큰보다 생산성이 높지만, 완전히 자유롭게 스타일을 제어하는 것보다는 유연성이 낮다. - **Thumbprint Components** - 가장 높은 추상화 계층으로, 자주 사용하는 UI 패턴을 접근성까지 고려해 미리 구현한다. - 알림, 버튼, 날짜 선택기, 별점 등 공통 컴포넌트를 제공한다. - 개발자는 반복적인 UI 구현보다 핵심 제품 기능에 집중할 수 있다. - 제공되지 않는 컴포넌트가 필요하면 Atomic CSS를 사용해 직접 구성하고, 그보다 더 낮은 수준의 제어가 필요하거나 네이티브 환경이라면 디자인 토큰을 직접 사용할 수 있다. ## 계층에 따른 트레이드오프 - 하위 계층으로 내려갈수록: - 디자인 속성을 세밀하게 제어할 수 있다. - 새로운 제품 요구사항에 유연하게 대응할 수 있다. - 대신 구현과 유지보수에 더 많은 개발 노력이 필요하다. - 상위 계층으로 올라갈수록: - 접근성, 시각적 일관성, 개발 생산성이 높아진다. - 공통 UI를 빠르고 안정적으로 구현할 수 있다. - 대신 사전에 정해진 동작과 스타일이 많아져 특수한 요구에는 덜 유연할 수 있다. ## 계층 안의 계층 - 하나의 계층도 목적에 따라 여러 하위 계층으로 나눌 수 있다. - Thumbprint의 React 모달은 다음처럼 구성된다. - `ModalCurtain`: 시각적 스타일보다 사용성·기능에 집중한 낮은 계층 컴포넌트 - `Modal`: `ModalCurtain`을 기반으로 시각적 스타일과 일반적인 모달 사용 방식을 제공하는 상위 컴포넌트 - 대부분의 개발자는 바로 사용할 수 있는 `Modal`을 사용한다. - `Modal`이 지나치게 제한적일 때는 `ModalCurtain`으로 내려가 더 자유롭게 구성할 수 있다. - 이후 반복적으로 필요한 기능은 다시 상위 `Modal`에 추가해 시스템을 발전시킬 수 있다. ## 디자인 토큰의 다단계 추상화 - 디자인 토큰도 여러 단계로 상속·추상화할 수 있다. - Adobe Spectrum의 예처럼: - `button-cta-background-color` - `cta-background-color` - `blue-400` - 토큰이 구체적인 의미에서 일반적인 색상 값으로 이어지는 구조다. - 개발자는 자신의 상황에 적용 가능한 가장 높은 수준의 토큰을 사용하는 것이 일반적이다. - 이를 통해 제품별 요구에는 대응하면서도 디자인 언어의 일관성을 유지할 수 있다. ## 실용적인 적용 방향 Thumbprint의 방식은 모든 개발자가 가장 낮은 수준의 API를 직접 다루게 하는 대신, 기본적으로는 접근성과 생산성이 높은 컴포넌트를 제공하고 필요할 때만 Atomic CSS와 토큰으로 내려가도록 설계한다. 따라서 디자인 시스템을 만들 때는 단일 추상화 계층에 모든 요구를 담기보다, **일반적인 사용 사례를 위한 높은 계층과 예외적인 요구를 위한 낮은 계층을 함께 제공하는 구조**가 효과적이다.

원문 읽기(새 탭에서 열림)