Drew BarontiniProduct Director at Differential

Should I Use?


April 02, 2020

Reading Time

2 min.


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.css file 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.

Should I Use? State Machine This is the state machine, visualized courtesy of XState and its killer visualizer.