33</div >
44
55<h3 align =" center " >
6- Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor
6+ The Future of CSS-in-JS — Zero Runtime, Full Power
77</h3 >
88
9+ <p align =" center " >
10+ <strong>Zero Config · Zero FOUC · Zero Runtime · Complete CSS-in-JS Syntax Coverage</strong>
11+ </p >
12+
913---
1014
1115<div >
3135
3236English | [ 한국어] ( README_ko.md )
3337
38+ ## Why Devup UI?
39+
40+ ** Devup UI isn't just another CSS-in-JS library — it's the next evolution.**
41+
42+ Traditional CSS-in-JS solutions force you to choose between developer experience and performance. Devup UI eliminates this trade-off entirely by processing all styles at build time using a Rust-powered preprocessor.
43+
44+ - ** Complete Syntax Coverage** : Every CSS-in-JS pattern you know — variables, conditionals, responsive arrays, pseudo-selectors — all fully supported
45+ - ** Familiar API** : ` styled() ` API compatible with styled-components and Emotion patterns
46+ - ** True Zero Runtime** : No JavaScript execution for styling at runtime. Period.
47+ - ** Smallest Bundle Size** : Optimized class names (` a ` , ` b ` , ... ` aa ` , ` ab ` ) minimize CSS output
48+ - ** Fastest Build Times** : Rust + WebAssembly delivers unmatched preprocessing speed
49+
3450## Install
3551
3652``` sh
@@ -51,25 +67,15 @@ npm install @devup-ui/webpack-plugin
5167
5268## Features
5369
54- - Preprocessor
55- - Zero Config
56- - Zero FOUC
57- - Zero Runtime
58- - RSC Support
59- - Must not use JavaScript, client-side logic, or hybrid solutions
60- - Support Library mode
61- - Zero Cost Dynamic Theme Support based on CSS Variables
62- - Theme with Typing
63- - Smallest size, fastest speed
64-
65- ## Inspirations
66-
67- - Styled System
68- - Chakra UI
69- - Theme UI
70- - Vanilla Extract
71- - Rainbow Sprinkles
72- - Kuma UI
70+ - ** Preprocessor** — All CSS extraction happens at build time
71+ - ** Zero Config** — Works out of the box with sensible defaults
72+ - ** Zero FOUC** — No flash of unstyled content, no Provider required
73+ - ** Zero Runtime** — No client-side JavaScript for styling
74+ - ** RSC Support** — Full React Server Components compatibility
75+ - ** Library Mode** — Build component libraries with extracted styles
76+ - ** Dynamic Themes** — Zero-cost theme switching via CSS variables
77+ - ** Type-Safe Themes** — Full TypeScript support for theme tokens
78+ - ** Smallest & Fastest** — Proven by benchmarks
7379
7480## Comparison Benchmarks
7581
@@ -84,54 +90,59 @@ Next.js Build Time and Build Size (github action - ubuntu-latest)
8490| panda-css | 1.3.1 | 20.64s | 64,573,260 bytes |
8591| chakra-ui | 3.27.0 | 28.81s | 222,435,802 bytes |
8692| mui | 7.3.2 | 20.86s | 97,964,458 bytes |
87- | devup-ui(per-file css) | 1.0.18 | 16.90s | 59,540,459 bytes |
88- | devup-ui(single css) | 1.0.18 | 17.05s | 59,520,196 bytes |
93+ | ** devup-ui(per-file css)** | 1.0.18 | ** 16.90s** | 59,540,459 bytes |
94+ | ** devup-ui(single css)** | 1.0.18 | ** 17.05s** | ** 59,520,196 bytes** |
8995| tailwindcss(turbopack) | 4.1.13 | 6.72s | 5,355,082 bytes |
90- | devup-ui(single css+turbopack) | 1.0.18 | 10.34s | 4,772,050 bytes |
96+ | ** devup-ui(single css+turbopack)** | 1.0.18 | 10.34s | ** 4,772,050 bytes** |
9197
9298## How it works
9399
94- Devup UI is a CSS in JS preprocessor that does not require runtime .
95- Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor.
96- We develop a preprocessor that considers all grammatical cases.
100+ Devup UI transforms your components at build time. Class names are generated using a compact base-37 encoding for minimal CSS size .
101+
102+ ** Basic transformation: **
97103
98104``` tsx
99- const before = <Box bg = " red" />
105+ // You write:
106+ <Box bg = " red" p = { 4 } _hover = { { bg: " blue" }} />
107+
108+ // Devup UI generates:
109+ <div className = " a b c" />
100110
101- const after = <div className = " d0" />
111+ // With CSS:
112+ // .a { background-color: red; }
113+ // .b { padding: 1rem; }
114+ // .c:hover { background-color: blue; }
102115```
103116
104- Variables are fully supported.
117+ ** Dynamic values become CSS variables: **
105118
106119``` tsx
107- const before = <Box bg = { colorVariable } />
108-
109- const after = (
110- <div
111- className = " d0"
112- style = { {
113- ' --d0' : colorVariable ,
114- }}
115- />
116- )
120+ // You write:
121+ <Box bg = { colorVariable } />
122+
123+ // Devup UI generates:
124+ <div className = " a" style = { { ' --a' : colorVariable }} />
125+
126+ // With CSS:
127+ // .a { background-color: var(--a); }
117128```
118129
119- Various expressions and responsiveness are also fully supported.
130+ ** Complex expressions and responsive arrays — fully supported: **
120131
121132``` tsx
122- const before = < Box bg = { [ ' red ' , ' blue ' , a > b ? ' yellow ' : variable ] } />
123-
124- const after = (
125- < div
126- className = { ` d0 d1 ${ a > b ? ' d2 ' : ' d3 ' } ` }
127- style = { {
128- ' --d2 ' : variable ,
129- } }
130- />
131- )
133+ // You write:
134+ < Box bg = { [ ' red ' , ' blue ' , isActive ? ' green ' : dynamicColor ] } />
135+
136+ // Devup UI generates:
137+ < div
138+ className = { ` a b ${ isActive ? ' c ' : ' d ' } ` }
139+ style = { { ' --d ' : dynamicColor } }
140+ />
141+
142+ // With responsive CSS for each breakpoint
132143```
133144
134- Support Theme with Typing
145+ ** Type-safe theming: **
135146
136147` devup.json `
137148
@@ -140,33 +151,79 @@ Support Theme with Typing
140151 "theme" : {
141152 "colors" : {
142153 "default" : {
154+ "primary" : " #0070f3" ,
143155 "text" : " #000"
144156 },
145157 "dark" : {
146- "text" : " white"
158+ "primary" : " #3291ff" ,
159+ "text" : " #fff"
160+ }
161+ },
162+ "typography" : {
163+ "heading" : {
164+ "fontFamily" : " Pretendard" ,
165+ "fontSize" : " 24px" ,
166+ "fontWeight" : 700 ,
167+ "lineHeight" : 1.3
147168 }
148169 }
149170 }
150171}
151172```
152173
153174``` tsx
154- // Type Safe
155- <Text color = " $text" />
175+ // Type-safe theme tokens
176+ <Text color = " $primary" />
177+ <Box typography = " $heading" />
156178```
157179
158- Support Responsive And Pseudo Selector
159-
160- You can use responsive and pseudo selector.
180+ ** Responsive + Pseudo selectors together:**
161181
162182``` tsx
163- // Responsive with Selector
164- const box = <Box _hover = { { bg: [' red' , ' blue' ] }} />
183+ // Responsive with pseudo selector
184+ <Box _hover = { { bg: [' red' , ' blue' ] }} />
165185
166- // Same
167- const box = <Box _hover = { [{ bg: ' red' }, { bg: ' blue' }]} />
186+ // Equivalent syntax
187+ <Box _hover = { [{ bg: ' red' }, { bg: ' blue' }]} />
168188```
169189
190+ ** styled-components / Emotion compatible ` styled() ` API:**
191+
192+ ``` tsx
193+ import { styled } from ' @devup-ui/react'
194+
195+ // Familiar syntax for styled-components and Emotion users
196+ const Card = styled (' div' , {
197+ bg: ' white' ,
198+ p: 4 , // 4 * 4 = 16px
199+ borderRadius: ' 8px' ,
200+ boxShadow: ' 0 4px 6px rgba(0, 0, 0, 0.1)' ,
201+ _hover: {
202+ boxShadow: ' 0 10px 15px rgba(0, 0, 0, 0.1)' ,
203+ },
204+ })
205+
206+ const Button = styled (' button' , {
207+ px: 4 , // 4 * 4 = 16px
208+ py: 2 , // 2 * 4 = 8px
209+ borderRadius: ' 4px' ,
210+ cursor: ' pointer' ,
211+ })
212+
213+ // Usage
214+ <Card >Content</Card >
215+ <Button >Click me</Button >
216+ ```
217+
218+ ## Inspirations
219+
220+ - Styled System
221+ - Chakra UI
222+ - Theme UI
223+ - Vanilla Extract
224+ - Rainbow Sprinkles
225+ - Kuma UI
226+
170227## How to Contribute
171228
172229### Requirements
0 commit comments