As frontend developers, we often need to choose between many libraries and tools. In this post, I will present a few questions and crude checks that can help you make a better decision.

A stick figure holding two boxes with question marks close to their head

What do you want it to do?

It is helpful to have a written list of what you want a library or tool to do. This gives you some solid criteria to evaluate the potential options against.

What other libraries or tools should it work alongside?

Add these to the list of criteria as well.

e.g. React, Typescript, eslint, webpack, vite

Is it mature enough?

It takes time for a library or tool to become stable and versatile enough to handle real world scenarios. While newer libraries and tools make bold claims, they usually fall short when it comes to complex use cases, documentation and platform support. A quick and very crude way to check the maturity of a library or tool is to see if it is older than 2 years and is above version 2. Of course, you can choose newer libraries and tools but be prepared to face and solve more issues.

Is it actively maintained?

Libraries and tools are discontinued when a better alternative comes along or when the maintainer steps down. Check the readme or the website for a deprecation or "maintenance mode" notice.

Screenshot of Moment.js library's project status on Github
Moment.js is in maintenance mode

Does its direction align with your use case?

Open source projects are constantly changing. A library or tool that suits your needs now can become insufficient in the future. Skimming over the news on a library or tool's blog or the release notes will give you a quick idea of what the maintainers are currently focused on. It will take a more through look over a longer time period to understand the real direction.

Screenshot of React blog
React is currently focused on adding more server side rendering features

How is it like to work with?

Does the library or tool have a dedicated documentation site? Is it easy to understand? Are the accompanying developer tools easy to setup and use?

The real gaps in documentation and issues with tools come up through practice. So,

Try it before you commit to it

Don't immediately decide to adopt a library or tool into a big codebase. Try it out at a smaller scale first. Build a few prototypes with the features you expect to use.

Prabashwara Seneviratne (bash)

Written by

Prabashwara Seneviratne (bash)

Lead frontend developer