Luděk Vepřek
@elvepor
Three pillars of components
in the design system
Luděk Vepřek
• Design System Engineer at Kiwi.com
• Working on our Design System called
Orbit
• 6+ years of experience with design and
frontend development
What design systems are about?
What design systems are about?
1. Design principles
2. Visual style & brand
3. Components & patterns
1. Design principles
2. Visual style & brand
3. Components & patterns
What design systems are about?
Three essential pillars for frontend components
25 % 35 % 40 %
Three essential pillars for frontend components
25 %
35 % 40 %
Three essential pillars for frontend components
Development
25 % 35 %
40 %
Three essential pillars for frontend components
Development Documentation
25 % 35 % 40 %
Three essential pillars for frontend components
Development Documentation Communication
Development
🤩
Development
• Which principles can we use?
• How should we develop our components?
• What naming should we use?
• How can we prevent unwanted breaking changes?
Which principles can we use?
Lean approach
Which principles can we use?
Which principles can we use?
https://platzi.com/blog/por-que-atomic-design/
How should we develop our components?
How should we develop our components?
styled-components
How should we develop our components?
Main benefits
• Thinking in components
• Only the styles which are currently in use on your screen are
also in the DOM
• Bundle size
• Unit tests
• Full CSS and JS support
What naming should we use?
What naming should we use?
• Inspire in other components libraries
• Make it the most self-descriptive as you can
• Document it somewhere for future reference
What naming should we use?
hasError is not the same as error
How can we prevent unwanted breaking changes?
Have unit tests!
How can we prevent unwanted breaking changes?
Have unit tests!
How can we prevent unwanted breaking changes?
Jest + enzyme
How can we prevent unwanted breaking changes?
Use static type checking!
How can we prevent unwanted breaking changes?
Use static type checking!
How can we prevent unwanted breaking changes?
Visual regression testing
Documentation
😬
Documentation
Create a website for the documentation
Documentation
At Kiwi.com, we had specific requirements
Documentation
Documentation
• Using the power of custom taxonomies
• Friendly also to non-developers
• Fetching different files from GitHub
• Built-in full text search
• SEO friendly
• Easily extendable
Documentation
How should we document components?
Documentation
• Design & usages
• Developer API
• Code examples
• Accessibility
Documentation
https://orbit.kiwi
🤐
Communication
Communication
• How to get their trust?
• How to announce changes?
• Where and how to discuss requests?
• How to ensure two-way communication?
• How to communicate breaking changes?
Communication
Slack
Communication
#channel for frontend components
#channel for design
#channel for various requests
Communication
Communication
What about requests?
What about requests?
What about requests?
• Be opened to discuss changes
• Be assertive
• Be proactive
• Respond to everything
• Respond quickly
Feedback
Feedback
• Teams all over Europe
• Slack isn’t the best way always
• The best solution is feedback loop
• Do it physically!
Breaking changes
Breaking changes
• Announce breaking changes in advance
• Put it somewhere
Breaking changes
Takeaways
• Development is just small part of the whole
• Focus on consistency and maintainability
• Document everything you can
• Announce breaking changes in advance
• Be as transparent as you can
Thank you for your attention.
Luděk Vepřek
@elvepor
https://github.com/kiwicom/orbit-components

https://orbit.kiwi/

Three pillars of components in the design system