Devup UI is not just another CSS-in-JS library — it's the future of CSS-in-JS itself.
Devup UI is a zero-runtime CSS-in-JS preprocessor powered by Rust and WebAssembly. It transforms all your styles at build time, completely eliminating runtime overhead while providing full CSS-in-JS syntax coverage.
Traditional CSS-in-JS solutions force you to choose between:
Libraries like styled-components and Emotion offer great DX but execute JavaScript at runtime to generate styles. Zero-runtime alternatives like Vanilla Extract sacrifice some flexibility for performance.
Devup UI eliminates this trade-off entirely. Our Rust-powered preprocessor analyzes your code at build time and handles every CSS-in-JS pattern:
_hover, _focus, _active work seamlessly| Feature | Devup UI | styled-components | Emotion | Vanilla Extract |
|---|---|---|---|---|
| Zero Runtime | Yes | No | No | Yes |
| Dynamic Values | Yes | Yes | Yes | Limited |
| Full Syntax Coverage | Yes | Yes | Yes | No |
| Type-Safe Themes | Yes | Limited | Limited | Yes |
| Build Performance | Fastest | N/A | N/A | Fast |
1// You write familiar CSS-in-JS syntax 2const example = <Box _hover={{ bg: 'blue' }} bg="red" p={4} /> 3 4// Devup UI transforms it at build time 5const generated = <div className="a b c" /> 6 7// With optimized atomic CSS 8// .a { background-color: red; } 9// .b { padding: 16px; } /* 4 * 4 = 16px */ 10// .c:hover { background-color: blue; }1// You write familiar CSS-in-JS syntax 2const example = <Box _hover={{ bg: 'blue' }} bg="red" p={4} /> 3 4// Devup UI transforms it at build time 5const generated = <div className="a b c" /> 6 7// With optimized atomic CSS 8// .a { background-color: red; } 9// .b { padding: 16px; } /* 4 * 4 = 16px */ 10// .c:hover { background-color: blue; }
Numeric values are multiplied by 4.
p={4}becomespadding: 16px.
Class names use compact base-37 encoding (a, b, ... z, _, aa, ab, ...) for minimal CSS output.
If you've used styled-components or Emotion, you'll feel right at home:
1import { styled } from '@devup-ui/react' 2 3const Card = styled('div', { 4 bg: 'white', 5 p: 4, // 4 * 4 = 16px 6 borderRadius: '8px', 7 boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)', 8 _hover: { 9 boxShadow: '0 10px 15px rgba(0, 0, 0, 0.1)', 10 }, 11})1import { styled } from '@devup-ui/react' 2 3const Card = styled('div', { 4 bg: 'white', 5 p: 4, // 4 * 4 = 16px 6 borderRadius: '8px', 7 boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)', 8 _hover: { 9 boxShadow: '0 10px 15px rgba(0, 0, 0, 0.1)', 10 }, 11})
Benchmarks on Next.js (GitHub Actions - ubuntu-latest):
| Library | Version | Build Time | Build Size |
|---|---|---|---|
| tailwindcss | 4.1.13 | 19.31s | 59,521,539 bytes |
| styleX | 0.15.4 | 41.78s | 86,869,452 bytes |
| vanilla-extract | 1.17.4 | 19.50s | 61,494,033 bytes |
| kuma-ui | 1.5.9 | 20.93s | 69,924,179 bytes |
| panda-css | 1.3.1 | 20.64s | 64,573,260 bytes |
| chakra-ui | 3.27.0 | 28.81s | 222,435,802 bytes |
| mui | 7.3.2 | 20.86s | 97,964,458 bytes |
| devup-ui (per-file css) | 1.0.18 | 16.90s | 59,540,459 bytes |
| devup-ui (single css) | 1.0.18 | 17.05s | 59,520,196 bytes |
| tailwindcss (turbopack) | 4.1.13 | 6.72s | 5,355,082 bytes |
| devup-ui (single css + turbopack) | 1.0.18 | 10.34s | 4,772,050 bytes |
Ready to experience the future of CSS-in-JS? Head to the Installation guide to get started in minutes.