I have gotten quite fed up with #NextJS and I say this as a long-time zealot. There are so many ways to do very basic things like data fetching, data preloading, mutations, etc., and no well-established patterns for all of that. In practice, it feels like a light wrapper around #React (despite all the bloat), and you end up having to add a whole bunch of other libraries just to cover your bases (next-safe-action, nuqs, server-only, #TanStack Query/SWR, etc.). (1/2)

#coding #webdev #Vercel

(2/2) And I'm actually convinced now that "use server" and "use client" were horrible conventions, evidenced by the fact that they had to patch this stuff up with "server-only" and React Taint. If you're going to do magic RPCs, just make it work like a special function, like TanStack's createServerFn(), which is much better for type safety. I've spent far too much time researching the *correct* way to fetch and mutate data in Next JS and then relaying that to my team to avoid security issues 😫

@mintydev honestly I just use React Router and my mutations never go through the frontend server, as my backend is written in another language and all Comms is generated using openAPI, meaning I can do mutations both in the server and client

I tried nextjs for a bit but the use server/client is so stupid and creates unnecessary complexity. RSC were a mistake.

@diegovsky yeah, I'm kinda done with RSC too (though I'll still use them in Next JS projects). I still very much like the full-stack developer experience of Next JS, but so far it seems like TanStack Start does it wayyyy better.