Install Fewer Libraries – Not to Be “Pure”, But to Be Smarter 🔻📦 👉 🎉
Wild Boar Dev

Wild Boar Dev @wildboar_developer

About: I'm a software developer who enjoys building useful things and sharing my knowledge. Just putting my thoughts, tips, and lessons out there—hoping they help someone else on their journey too.

Location:
Ho Chi Minh city, Vietnam
Joined:
May 21, 2025

Install Fewer Libraries – Not to Be “Pure”, But to Be Smarter 🔻📦 👉 🎉

Publish Date: May 26
7 0

📌 Note before we begin:

You might already know (or do) most of what’s in this post — and that’s great.
Think of this as a quick reference, not a rulebook. Use it to reflect, refine, or share with your team.


🔰 Introduction

In modern software development, there's a library for almost everything:

Debouncing, date formatting, data validation, API calls, routing, state management, database queries, caching, logging...

And that abundance creates a common habit:

“Found a library? Just install it.”

But every npm install does more than just add functionality.

It introduces:

  • More bundle size
  • More maintenance overhead
  • More potential security risks
  • And less control over your system

So let’s break down the benefits of using fewer libraries — and more importantly, when it actually makes sense to avoid or include them.


🎯 Benefits of Using Fewer Libraries

1️⃣ Smaller Bundles = Better Performance

Every library adds weight:

  • On the frontend: increased bundle size → slower load time
  • On the backend: longer startup time, more memory usage

📌 Example: Instead of importing all of lodash, just use lodash/debounce — or better yet, write your own debounce() in ~10 lines.


2️⃣ Greater Control Over Your Codebase

Less third-party code = fewer black boxes.

You can:

  • Understand what your code is doing
  • Debug faster
  • Refactor with confidence

You're not stuck waiting for a library to fix a bug you can't see.


3️⃣ Reduced Dependency Risk

Every dependency is a risk:

  • ❗ Could contain security vulnerabilities
  • ⚠️ Could introduce breaking changes in future updates
  • ⛔ Could be deprecated or unmaintained at any time

The fewer dependencies you have, the lower the blast radius.


4️⃣ Lower Technical Debt

Some libraries solve problems now, but create long-term pain.

📌 Example: Using a rigid UI kit or ORM might seem fast at first — but if you want to switch frameworks or change structure later, it can be a nightmare to decouple.


5️⃣ Easier Maintenance & Upgrade Path

Less to track. Less to break.

  • Fewer version mismatches
  • Fewer conflicts in package trees
  • Faster CI/CD pipelines
  • Simpler testing

6️⃣ Deepen Your Understanding

Writing small utility code yourself helps you:

  • Learn native Web APIs or Node.js internals
  • Understand how libraries/frameworks work under the hood
  • Develop better architectural thinking and engineering discipline

The goal isn’t to avoid libraries — but to not use them as a crutch.


⚖️ When Should You Use a Library?

Scenario Should Use? Why
Simple data validation ❌ No A few lines of logic is enough
Complex schema validation ✅ Yes Use zod, yup, etc. for clarity and scalability
Basic state or cache management ❌ No useState, useContext or in-memory store is sufficient
Complex state logic, persistence needed ✅ Yes Use Zustand, Redux, or modular state services
Basic date formatting ❌ No Intl.DateTimeFormat covers most needs
Handling timezones or calendars ✅ Yes Use dayjs, date-fns, luxon

🧪 Case Study: Context vs State Manager

❌ When You DON’T Need a Library:

  • Your app is small
  • You only pass props down a few levels
  • Your CRUD logic is straightforward

✅ When You DO:

  • You manage different types of state (UI, data, server)
  • You want to optimize rendering or cache data
  • You need persistence or modularization
  • You require shared logic across multiple parts of the app

In those cases, libraries like Zustand, React Query, Prisma, or Sequelize provide real value — they solve complex problems in a clean, scalable way.


🚫 Don’t Be Extreme: Know When to Use a Library

This isn’t about being a “pure coder”. It’s about being intentional.

Use a library when:

✅ The problem is complex and error-prone (e.g. timezone handling, debounce, API caching).
✅ You need reliability and coverage (e.g. encryption, auth, validation).
✅ The library adds productivity with minimal downside.


📌 A Pre-Install Checklist

Before typing npm install, ask yourself:

  1. Do I really understand the problem I'm trying to solve?
  2. Can I write this in under 20 lines myself?
  3. What are the performance, maintenance, or security trade-offs of this library?

👉 If it's simple → Write it yourself.

👉 If it's complex → Install it — but do it intentionally.


🎯 Conclusion

Using libraries isn't wrong.
Using them blindly is.
You don’t have to code everything from scratch.

You don’t have to “purify” your project of all external tools.
But you should stay deliberate about what you bring in — because it directly impacts:

  • Performance
  • Maintainability
  • Long-term flexibility
  • And your own growth as a developer

Use fewer libraries not to prove a point — but to build smarter.

Comments 0 total

    Add comment