Розробка React-сайтів на Chakra UI: доступні компоненти та темна тема
Ви інтегруєте сторонню дизайн-систему в React-застосунок, а на виході отримуєте різнорідні HTML/CSS-класи, проблему з темною темою та недоступні інтерактивні елементи. Ми стикалися з цим на десятках проєктів, тому для клієнтів з фокусом на доступність та швидку верстку пропонуємо Chakra UI. За 5+ років у веб-розробці та 50+ проєктах на React ми виробили підхід, при якому верстка посадкової сторінки займає 1-2 дні, а не тиждень. Економія бюджету на верстці досягає 30% за рахунок готових компонентів — це підтверджується відгуками клієнтів.
Chakra UI — не чергова UI-бібліотека, а система, де кожен компонент з коробки відповідає WCAG 2.1. Style props API дозволяє керувати CSS прямо в JSX, відмовляючись від зайвих файлів. Вбудована темна тема будується на семантичних токенах, які автоматично перемикають кольори без перезбирання. Наприклад, в одному проєкті ми замінили 500 рядків CSS-змінних на 20 рядків токенів — темна тема запрацювала без жодного багу.
Як Chakra UI вирішує проблему темної теми?
До появи Chakra UI розробники зберігали колірні змінні в CSS і вручну змінювали їх через [data-theme="dark"]. У Chakra v3 темна тема — це вбудована фіча: в описі токена через _dark задається колір для темного режиму. Провайдер автоматично підхоплює атрибут data-theme на <html> і застосовує правильну палітру. Приклад налаштування:
import { createSystem, defaultConfig, defineConfig } from '@chakra-ui/react';
const customConfig = defineConfig({
theme: {
tokens: {
colors: {
brand: { 500: { value: '#3b82f6' } },
},
},
semanticTokens: {
colors: {
'bg.canvas': { value: { base: '#f9fafb', _dark: '#0f172a' } },
},
},
},
});
const system = createSystem(defaultConfig, customConfig);
export default system;
Тепер компонент Box bg="bg.canvas" сам адаптується до теми. Жодних медіа-фіч, жодних перемикань класів. Вартість підтримки такої теми знижується в 2-3 рази порівняно з кастомними рішеннями.
Чому Chakra UI швидше за Material-UI для MVP?
| Параметр | Chakra UI (v3) | Material-UI (MUI) |
|---|---|---|
| Style props | Так, вбудовані | Через sx-prop, але більше boilerplate |
| Темна тема | Токени + _dark, 5 хвилин |
Теми через ThemeProvider, ~15 хвилин |
| Accessibility | WCAG AA з коробки | Частково, потребує доопрацювань |
| Розмір бандла | ~25 kB gzip | ~40 kB gzip |
| Адаптивність | Об'єкти в props: w={{ base: 'full', md: '50%' }} |
Через useMediaQuery або breakpoints у sx |
Chakra UI виграє за швидкістю прототипування: в 2-3 рази менше коду для адаптивної grid-сітки та форм. Додаткова економія — вбудована система токенів, яка виключає дублювання стилів.
Порівняння Chakra UI v2 та v3
| Особливість | Chakra UI v2 | Chakra UI v3 |
|---|---|---|
| Провайдер | ChakraProvider + ColorModeScript |
Єдиний ChakraProvider з конфігом |
| Токени | CSS-змінні + useColorMode |
Семантичні токени з _dark |
| Style props | Через chakra factory |
Вбудовані в усі компоненти |
| Розмір | ~30 kB gzip | ~25 kB gzip |
Міграція з v2 на v3 потребує правки провайдера та заміни useColorMode на _dark токени, але окупається за рахунок спрощеної архітектури.
Як налаштувати тему Chakra UI за 3 кроки?
-
Встановіть пакет:
npm install @chakra-ui/react @emotion/react. - Створіть конфігурацію в окремому файлі (як у прикладі вище), визначте базові токени та семантичні токени для темної теми.
- Підключіть провайдер в корені застосунку:
import { ChakraProvider } from '@chakra-ui/react';
import system from './theme/system';
function Root() {
return (
<ChakraProvider value={system}>
<App />
</ChakraProvider>
);
}
Після цього в усіх компонентах доступні style props та автоматична підтримка темної теми.
Верстка hero-секції з style props
Style props — основа прискорення: адаптивний padding задається об'єктом py={{ base: '12', md: '20', lg: '28' }}. Вся секція пишеться в одному JSX-блоці:
import { Box, Flex, Heading, Text, Button, Stack } from '@chakra-ui/react';
const Hero = () => (
<Box as="section" bg="bg.canvas" py={{ base: '12', md: '20' }}>
<Flex maxW="7xl" mx="auto" direction={{ base: 'column', lg: 'row' }}>
<Box flex="1">
<Heading as="h1" size={{ base: '2xl', lg: '4xl' }} color="text.primary">
Заголовок продукту
</Heading>
<Text fontSize={{ base: 'md', lg: 'lg' }} color="text.muted" mb="8">
Опис цінності
</Text>
<Button colorPalette="brand" size="lg">Почати безкоштовно</Button>
</Box>
</Flex>
</Box>
);
Сітка карток та форма з валідацією
Для карток використовуємо SimpleGrid, який автоматично змінює колонки залежно від breakpoint. Форма — стандартний Field + Input, валідація через React Hook Form та Zod:
import { Field, Input, Button, Stack } from '@chakra-ui/react';
import { useForm } from 'react-hook-form';
import { z } from 'zod';
const schema = z.object({ name: z.string().min(2) });
const Form = () => {
const { register, handleSubmit, formState: { errors } } = useForm({ resolver: zodResolver(schema) });
return (
<Stack gap="5">
<Field.Root invalid={!!errors.name}>
<Field.Label>Ім'я</Field.Label>
<Input {...register('name')} />
{errors.name && <Field.ErrorText>{errors.name.message}</Field.ErrorText>}
</Field.Root>
<Button type="submit">Відправити</Button>
</Stack>
);
};
Колірний режим через семантичні токени
У Chakra v3 не потрібно змінювати CSS — достатньо хука useColorMode. Приклад кнопки для перемикання описано вище. Для економії місця та зниження надмірності коду ми часто виносимо логіку перемикання в окремий хук. Гарантуємо, що кожен компонент пройде тестування на Core Web Vitals: оптимізація бандла, lazy-loading іконок, виключення N+1 запитів.
Поширені помилки при верстці на Chakra UI
- Використання
!important— перевизначення токенів черезcssprop ламає систему. - Відсутність
_darkв семантичних токенах — темна тема не відображається. - Некоректний breakpoint
base— без нього адаптивність ламається на мобільних. - Ігнорування
asprop — семантична верстка порушується. - Пряме маніпулювання DOM замість використання state — компоненти Chakra UI реактивні.
Що входить в роботу з верстки на Chakra UI?
Ми надаємо не лише готовий код, але й документацію по токенах, компонентах та кольоровій схемі. До складу deliverables входять:
- Налаштована тема Chakra UI з семантичними кольорами та шрифтами
- Всі сторінки проєкту, адаптовані під мобільні та десктопні Breakpoints
- Форми з валідацією (React Hook Form + Zod)
- Документація по стилях (Storybook або Markdown)
- Доступ до репозиторію з історією комітів
- Навчання команди (1-2 години) по style props та налаштуванню теми
Зв'яжіться з нами — ми запропонуємо рішення під ключ з Chakra UI. Економія бюджету на верстці досягає 30% за рахунок готових компонентів та відсутності кастомних CSS-класів.
Терміни та вартість
Орієнтовні терміни:
- Налаштування системи та теми — 3-4 години
- Посадкова сторінка — 1-2 дні
- Продуктовий сайт (5+ розділів, форма, дашборд) — 4-7 днів
Підсумкова вартість розраховується індивідуально. Замовте консультацію, щоб отримати точну оцінку. У кожного клієнта — єдиний менеджер та повний технічний контроль (сертифіковані спеціалісти, 5+ років досвіду з React).
У вас проєкт на React і потрібна верстка з темною темою та доступністю? Замовте рішення під ключ з Chakra UI на нашому сайті.







