Kickstart your library of shared React components
Initial observation
"I have a great idea: It would be awesome if we could create sharable components in order to sell them to other company departments, and even one day sell them outside!"
Quote from our client in April 2018
More realistically: our client produces many apps for different users but with the same business behind. Many identical features were remade from scratch on several projects.
First Attempt: Commando
- Owned and sustained by all the projects at the same time without owner
- One unique repository with one JS project: one package.json
- The components built altogether and served online on a unique un-versioned JS Script
Second Attempt: Tapas
- Owned and sustained by one project not thinking reusability when developing
- Still one unique repository with one JS project: one package.json
- A unique build on another GitHub branch where commits hashes were used as versions of the package
Failed attempts
Last Attempt: Component Studio
- The ownership of a dedicated core team whose only focus is to make a robust project of reusable components
- An architecture of several packages with their own scope and responsibility
- A mono-repository to develop faster
- A proper library versioning system pushed on a package store (like NPM)
Our last successful attempt
Demonstration
The resulting architecture
Inside packages
The necessary development flow
In detail...
The objective: At first, save money by reusing components across different projects
Our success indicator
Return on Investment
Problems met by the other teams
Beyond being reused, we need to make sure our project does not take more time to other projects than it would have if they made them from scratch, so we track and resolve their issues!
Issues VS Contibutions
We set up a process of issue solving that allows us to prioritise issues and focus on the most impactful problems
How to onboard the other teams
We proved that having a dedicated technical team on an advanced design system is worth the cost.
I hope this talk gave you the confidence to maintain one if need be.
Final words
Merci
Any Questions?
Kickstart your library of shared React components
By Xavier Lefèvre
Kickstart your library of shared React components
How to sustain a successful and complex design system thanks to our return of experience
- 1,200