Should I Use?
Good ideas always come back. You don't forget about them. They sit in the corner of your mind, craving your attention. For me, Should I Use? was one of those ideas. This is the story behind the idea, building it, and finally releasing it.
Should I Use? is a web application that aims to help developers evaluate what JavaScript packages to use based on a baseline set of criteria.
The idea came to me years ago while using Can I use..., an indispensable resource for identifying which features are supported across browsers and versions. With the expanding popularity of JavaScript — and the explosion of third-party packages released on NPM — I felt a significant need for a tool to help evaluate which packages to use in projects. But instead of building it, I sat on it, waiting for someone else to build it.
And I waited...
And waited...
But it never happened.
Fast-forward to our 2019 company meetup...
I was talking with a few of my coworkers at Differential, explaining the idea stewing in my head for years. To avoid the headaches of releasing it under my personal brand (feedback, maintenance, support, etc.), I spoke with folks at Differential about releasing under Differential's brand.
Before I got the "green light", I decided to finally get it out of my head and build a very basic MVP of the product. I spent every spare minute I had building it. And once I received the official "green light", I built a more refined first version, opening up an Alpha version for internal testing. After getting feedback, I iterated and released the Beta. The feedback slowed, and we made plans to polish and officially release the v1.
https://shouldiuse.app is now officially live! 🚀
It's actually been live for some time, but we're officially announcing it, which is why I'm talking about it here and now.
I'm incredibly thankful to work for a company that invests in passions that align with the overall company vision. It's been a blast to build it, get feedback, iterate, and put something out into the world that will (hopefully) help developers everywhere.
While this is a tool for helping developers evaluate which packages to use, I hope, too, that it helps the open-source community by identifying projects in need of additional support. We're looking at more ways we can promote those aspects within the app. Stay tuned.
Some nerdy technical notes
- It is hosted on Netlify.
- The app is built in React using Create React App.
- It uses a plain, vanilla
style.cssfile with CSS variables. - It uses the npms and GitHub GraphQL APIs to fetch all the data.
- It uses Apollo to connect to the GitHub API and run GraphQL queries.
- It uses Downshift for the autocomplete search input.
- It uses a state machine via XState for managing all of the logic.
This is the state
machine, visualized courtesy of XState and its killer
visualizer.