Next.js takes the parts of a dynamic React application that usually get hand rolled and moves them into the framework: server side rendering, static generation and API routing. Code splitting happens automatically, and CSS and Sass work without extra configuration. The performance defaults are set in advance, which is what shows up once an application grows. It sits on top of React rather than replacing it.