Skip to Content
useS v2.0.0 is released 🎉
DocsWhy useS?

Why useS?

Simplifying State Management in React

I created use-s-react with a clear goal: to make state management in React easier, cleaner, and more powerful.

Most state management libraries today ask too much: new concepts to learn, boilerplate to write, and setup code that bloats your project. Even React’s built-in tools like useState, useReducer, and context don’t offer a complete solution that’s both simple and scalable.

So I asked myself:

What if there were a hook as easy to use as useState, but with superpowers?


What’s Broken with the Current Approach?

1. Sharing Global State is Overcomplicated

To share state across components, you’re usually stuck doing this:

  • Create a context using createContext
  • Define and export a Provider
  • Wrap your app or component tree with the Provider
  • Use useContext in each component
  • Optionally write custom hooks to abstract logic

This isn’t just verbose—it also introduces re-render traps and scalability headaches.

2. useState Doesn’t Scale for Real-World Needs

useState is great for simple values—but not for:

  • Complex data (e.g., deeply nested objects)
  • Built-in immutability
  • Declarative derived state

If you reach for useReducer, now you’re:

  • Learning a new paradigm
  • Writing action types and reducer functions
  • Manually handling immutability
  • Sacrificing simplicity for flexibility

The Answer: useS

useS was built to offer the best of both worlds:

  • ✅ API as intuitive as useState
  • ✅ Manage local and global state with one line
  • ✅ No context, providers, or boilerplate
  • ✅ Immutable by default—even for complex objects
  • ✅ Support for declarative derived state
  • ✅ Full TypeScript support
  • ✅ Powered by useSyncExternalStore for consistency and performance

Why useSyncExternalStore?

React 18 introduced useSyncExternalStore to provide safe, efficient subscriptions to external stores. It became the perfect foundation for useS, delivering:

  • Automatic reactivity that integrates naturally with React’s lifecycle
  • Scalability without relying on third-party libraries
  • Flexibility to define local or global state based on your needs

A Dev-Friendly Hook Without the Overhead

After working with nearly every popular state library, I realized none of them nailed the balance between simplicity and power. So I built one:

Powerful enough for professionals, simple enough for everyone.


🚀 Give It a Try

Tired of boilerplate, context, and configuration hell? Give useS a spin—you might never look back.

And if you find it useful, share it with your team or the community. Let’s make React state management simple again.


🧠 Clean code, no headaches. 💬 Have feedback or ideas? Contributions are welcome on GitHub!

Last updated on