32

I am quite new to nodeJS backend development, and am feeling a bit stuck in choosing between NextJS and ExpressJS which to learn and use in my next project, I kind of have an idea about ExpressJS, like for building api, but not really clear about NextJS, as every time I google NextJS vs ExpressJS I get “NextJS vs React” related results.

So it will be appreciated if someone can help with what they are, their distinctions etc

Cheers

Eddie Dane
  • 1,321
  • 3
  • 13
  • 22

2 Answers2

71

ExpressJS vs NextJS: What is the difference?

A little bit about each framework:

1.) What is Express.js?

ExpressJS: Express.js, or simply Express, is a backend web development framework for Node.js. It is intended for the development of web applications and APIs. It’s been dubbed Node.js’ de facto standard server framework.

This StackOverflow answer explains what Express is in greater detail.

2.) What is NextJS?

NextJS: Next.js is the react framework for production.

Let's debunk this sentence:

  • "Framework": It has a lot of built-in features (e.g file-routing which replaces react-router-dom) that help you solve common problems.
  • "For React": NextJS just enhances your React apps and adds more features to them.
  • "For Production": There are certain problems that you will need to solve for almost all production-ready React apps. NextJS solves those for you.

Next.js gives you the best developer experience with all the features you need for production: hybrid static & server rendering, TypeScript support, smart bundling, route pre-fetching, and more. No config is needed.

ExpressJS vs NextJS features

Some ExpressJS features are:

  • Robust routing
  • HTTP helpers (redirection, caching, etc)
  • View system supporting 14+ template engines

Next.js provides the following key features:

  • Zero setup. Use the filesystem as an API ( You do not need Express to build a full-stack application)
  • Server-Side rendering (SSR)
  • Static site generation (SSG)
  • Single-Page application (SPA)
  • Development of faster applications
  • Optimization of pages
  • SEO websites
  • Automatic code splitting

Conclusion

Express.js is a backend framework for building APIs whereas Next.js is a full stack framework that builds upon React to improve the SEO, development experience, and performance of your project. One of these features IS a built-in API routing system that could replace Express.js.

It all depends on the case you have and your personal preference. If you are building a private page (admin panel that can only be accessed with authentication) that does not need to be found by search engines, you do not need Next.js and will need Express.js. If you are building a public website (e.g. e-commerce website) and you are using Next.js for SEO optimization, you could replace Express.js with it.

TLDR; You can replace an Express API with NextJS's API routing system but that only makes sense if you're building a full-stack React project. If it's a standalone API, using Next.js to replace just that API doesn't make any sense.

Community
  • 1
  • 1
Loretta
  • 1,781
  • 9
  • 17
  • 4
    I am looking to building and react app and an API that can also be used on the mobile/desktop app, which will be the best to use for this case, I’d really love to use NestJS but I feel it locks me in only react? – Eddie Dane Nov 21 '21 at 08:34
  • how do we replace that routing system? – user9560064 May 26 '22 at 07:12
  • I previously create the API with express and then the front-end, the website with react. Are you saying the nextjs api is capable to do everything: connect to the db and all of that? – relidon Aug 30 '22 at 17:11
11

Express is a general purpose tool for building HTTP servers in Node.js.

Next.JS is a tool for building an HTTP server specifically to perform server-side rendering of a React application (and which comes with some general purpose features so you can do things like build a server-side API for that React application to access in the same package).

Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
  • So means I can combine `express` with `next` for `SSR`. In there any use case which `express` fulfills but `next` doesn't? – garg10may Jan 10 '22 at 18:19
  • @garg10may Express is more low-level server (it can serve traditional templates). You could use Express with NextJS, but if you use NextJS they have their own server, so it isn't really recommended, unless you need something very custom. See: https://stackoverflow.com/a/59014214/380607 – Magne Jan 31 '22 at 18:21
  • 1
    I am seeing people are generally using `next` only as a wrapper for `react` for `ssr` and stuff. And they use there preferred backend like 'django`, `spring-boot` etc. – garg10may Feb 01 '22 at 04:44