TGViewer
Dev News от Максима Соснова Dev News от Максима Соснова @msosnovfeed · 2.79K subscribers
Post #349 567
Notes on maintaining an internal React component library

Записки мейнтейнера внутреннего ui-kit команды DigitalOcean.

Автор описывает практики и прицнипы, которые считает основопологающими для создания хорошего ui-kit'а. Большая часть советов - правильные и хорошие.
Часть советов, на мой взгляд, не то что неправильные, просто очень субьективны и в некоторых контекстах могут причинить вред.

Философия ui-kit:
- Должно быть легко перенести дизайн в код
- Компонент должен быть черным ящиком для родителя, использующего его
- Решение в ui-kit'е должны быть одновременным очевидными, простыми и правильно в большинстве случаев
- Делать плохие вещи должно быть как минимум некомфортно, как максимум - невозможно.

Советы:
- У kit'а должен быть мейнтейнер или группа мейнтейнеров. Без мейнтейнерства измененися будут вноситься абы как, что через какое-то время сделает использование системы невозможной
- Интерфейс компонента должен лаконично представлять варианты использования компонента. Т.е. условно по одним пропсам можно понять, как компонент можно использовать
- Компонент не должен позиционировать себя сам
- Компоненту следует занимать все доступное горизонтальное пространство. Ограничения по размеру накладывает клиентский код.
- Не следует предоставлять API для изменения стилей. Однако, иногда следует все таки добавить для разработчиков для очень редких кейсов максимально неудобное API. И им должно быть очевидно что то, что они делают - неправильно и надо идти заводить задачу на команду ui-kit'а.
- Не следует стараться быть максимально похожими на базовые элементы
- Избегайте spread оператора в JSX
- Композиция компонентов должна быть бесплатной.
- Перед удалением чего-то из библиотеки, лучше пару мажорных версий обьявлять это как deprecated
- Код-моды позволяют ускорить массовые изменения по коду.
- Анализируйте то, как используются ваши компоненты. Лучше делайте это автоматически.
- Пишите скриншот-тесты

Я прошелся только по заголовкам. Вообще там в каждом пункте достаточно много мыслей про то, почему так стоит делать, с примерами кода. Если вы разарабываете ui-kit - must read.

https://www.gabe.pizza/notes-on-component-libraries/

#development #ui-kit
gabe.pizza Gabe's blog A personal blog by Gabe Scholz
  • 🔥 10
  • 👍 2
More from @msosnovfeed
  1. Sep 14, 2026Дайджест за 2026-09-07 - 2026-09-09 Playwright v1.62.0 Вышел релиз Playwright 1.62. Обычно…
  2. Sep 9, 2026Mobile View — see your site on desktop & mobile at once Расширение для Chrome от подписчик…
  3. Sep 7, 2026Playwright v1.62.0 Вышел релиз Playwright 1.62. Обычно я не пишу про релизы Playwright, но…
  4. Sep 7, 2026Дайджест за 2026-08-31 - 2026-09-04 How to find a Next.js memory leak in production Очень…
  5. Sep 4, 2026Measuring soft navigations Web Vitals стали основным мерилом скорости работы сайтов. Но пр…
  6. Sep 2, 2026Canvas UI Canvas UI — open-source библиотека готовых компонентов для создания красивых эфф…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →