We recognize that Next.js and Typescript don't solve every problem. While we encourage you to use the primitives they provide as often as you can, there are other tools that will help simplify and improve your developer experience.
I hated the idea of Tailwind. Then I tried it.
It seems like Bootstrap. I promise it is not Bootstrap. It enables a "flow state" in UI dev I didn't know was achievable. (and yes we used it here)
This little library handles all your async React needs from data fetching to IO management. Hard to imagine doing React dev without it now. Might be able to replace your state management library too.
Prisma is to SQL what Typescript is to JS. Never thought I'd love an ORM, but man, trust me on this one.
tRPC delivers on GraphQL's promise of seamless client development against a typesafe server without all of the boilerplate. It's a clever abuse of Typescript that provides an incredible dev experience.
Need analytics? Plausible is one of the quickest ways to get them. Super minimal. It even has a simple plugin for Next.js.
Man this library makes auth easy. No ownership compromise, hooks up to your DB directly. So good that I ported two projects to Next to use it.
Note: Does not support React Native directly. Yet. 😉
Vercel took the hell of web deployments and made it a set-and-forget GitHub integration. We've scaled to hundreds of thousands of users without issue. AWS-powered, just a way better interface :)
"Modern Heroku". Easiest way to get a real server up and running. Point it at a GitHub repo and go.
(Likely the easiest place to host a database right now)
Editor's Note: State management libraries can be great, but often aren't necessary. Start with React Query and built-in React state, reach for these when you need more
The "modern, simple Redux" you didn't know you needed. Poimandres can always be trusted. I have built everything from video call apps to games to servers with this little library
For a more atomic approach, Jotai is hard to beat. Also by Poimandres, Jotai lets you define singletons that feel like global useState
. Great option for stateful behaviors that don't need a state machine just yet