NextJS for a SSR app, or Vite for a create-react-app style SPA.
Vite has been great for the whole web-dev ecosystem, since it's super easy to configure, and very pluggable, so most frameworks are built around it now. That means you can write, e.g. a new CSS preprocessor, and if you make a Vite plugin, it works with (almost) every framework without extra effort
But this isn't even true, and NextJS is well into egregiously complexity. Remix was an alternative option in the space that is now deprecated in all-but-name for React Router v7, which (for those just tuning back in), react router is now a framework.
If you wrote your app in NextJS 2 years ago, you would already have to rewrite chunks of it to get it to compile today. These tools are NOT solidified, they are releasing breaking changes at least once a year.
Vite has been great for the whole web-dev ecosystem, since it's super easy to configure, and very pluggable, so most frameworks are built around it now. That means you can write, e.g. a new CSS preprocessor, and if you make a Vite plugin, it works with (almost) every framework without extra effort