TypeScript has been in my toolbelt since early in its lifespan, back in 2015. I originally used it with Angular, but I have come to love it so much that I use it in every project I start. In my opinion, TypeScript is a necessity for writing maintainable code, especially when working in a larger team or with cross-functional teams.
I have been using React in almost all of my projects since 2017. Throughout the years, I have developed a deep understanding of the inner workings of the framework, as well as how to utilize functional paradigms and React hooks.
NodeJS is easily my favorite language for writing servers and CLI utilities. It encompasses everything I love about the JS/TS ecosystem, and allows it to run natively outside of a browser. A key tool in my repertoire that allows me to iterate quickly, and a key component to understanding things like Next.js.
I only have about 1 year of experience with Next.js and its app router, but I've found server components to be a powerful tool for building React applications. In addition, the use of server actions makes the reusability of server-side code a breeze and largely makes things like REST endpoints unnecessary, especially in combination with a tool like tRPC.
I'm constantly striving to learn new things, and TanStack Start is one of the latest tools I'm adding to my tool-belt. I've always been impressed by every project in the TanStack suite that I've ever interacted with, and TanStack Start is no exception.
I have experience developing both GraphQL backends in node and Java as well as frontends with React. It's a great tool for being able to fetch exactly the data you need to avoid over or under fetching. Even so, unless it's the right tool for the job, I've found that it is overkill for most scenarios.
I have used tRPC in a few personal projects, and have enjoyed the experience greatly. While REST and GraphQL are great options, I believe that tRPC is the best solution for codebases where the frontend and backend live in the same repo, such as Next.js projects.
React Query is my go-to solution for asynchronous state management in React. I've used it in enterprise-scale applications as well as small ones, and it's great in either. I don't start new React projects without it.
I have a small amount of experience with creating truly native applications, and realized early on that I don't enjoy it. That's why I'm thrilled with how easy React Native (especially with Expo) makes it to create beautiful, feature-rich, and fast applications using the technologies I'm most comfortable with.
I've created a couple of small apps using Gleam, and love the language. It still feels a little young, but the community is amazing. It's a typesafe, functional language that compiles down for either the Erlang BEAM VM or JavaScript. Running on BEAM means it is powerful enough to handle highly concurrent workloads with ease, and running on JS means it is portable enough to run on any browser.