Next.js 14: All you need to know
Tags: nextjs, nextjs14, frontend, webdev
Published: 2023-12-31 22:29:45

Hey there! Did you miss this year's [Next.js Keynote](https://nextjs.org/conf) or want to get a summary of what you've heard? No worries, I got you covered.

---

[Next.js](https://nextjs.org/) is a Framework built on React and they are determined to bring the power of full-stack to the frontend. They've been extremely innovative and have been chosen by Notion, Twitch, DoorDash and TikTok just to mention a few. Next.js 13 introduced the `app/ directory`, `next/font` and `next/image` as well as many other things. This year we have been gifted again and to be honest, there's never been a better time to be a Frontend developer.

## Next.js is (almost) "Turbocharged"

With Next.js 13, Vercel introduced the alpha version of [Turbopack](https://turbo.build/pack). Turbopack is an incremental bundler optimized for JavaScript and TypeScript, written in Rust. After merging the knowledge of Vercel and a few ex-Webpack engineers, a new contender arose on the horizon of bundlers.

Vercel is heavily invested in creating a better experience for developers and as a result, Turbopack is closer to stable than ever before. They are passing +5000 tests of `next dev`. According to the Framework giant, they witnessed a **53%** faster local server startup and almost a **95%** faster code update using `next dev --turbo`. The best part is; that the larger your project, the bigger improvements you'll run into.

Once Turbopack passes all the required tests, it will be tagged as stable. You can follow the process here: [https://areweturboyet.com/](https://areweturboyet.com/).

## Server Actions is now stable

There is no need to create API Routes manually or write event handlers. With Server Actions, you can define functions that run on the server but can be called directly from a component.

For example, a simple create function can be done in a single file:

```typescript
export default function Page() {
  async function create(formData: FormData) {
    'use server'; // the use server directive is a must
    const id = await createItem(formData);
  }
 
  return (
    <form action={create}>
      <input type="text" name="name" />
      <button type="submit">Submit</button>
    </form>
  );
}
```

With Typescript, using server actions will give you an end-to-end type safety between the client and server. Also, you will get a ton of built-in functions when using the App router. You can redirect through routes with `redirect()` and read/set cookies with `cookies()` etc.

This is proof that Vercel's goal is clearly to provide the easiest access to all the full-stack opportunities on the front end. Isn't this cool?

## Metadata changes

Metadata is just "data about the data", it may sound simple, but metadata plays a huge role in SEO and accessibility. To ensure a smooth user experience, Next.js will remove `viewport`, `colorScheme` and `themeColor` from metadata.

They wouldn't let us empty-handed, so from Next.js 14 you can customize the initial viewport of the page using the `viewport` object or the `generateViewport` function.

> Note: both options are only supported in Server Components and only one of them can be exported from the same route.

```typescript
// How to use the Static Viewport object in your layout.tsx / page.tsx
import { Viewport } from 'next'
 
export const viewport: Viewport = {
  themeColor: 'black',
}
 
export default function Page() {}

/* How to use the Dynamic generateViewport function 
 in your layout.tsx / page.tsx */
export function generateViewport({ params }) {
  return {
    themeColor: '...',
  }
}
```

## Next.js teaches Next.js

Probably the biggest blessing to us WebDevs, is that now we can learn directly from the creators of Next.js. The course is entirely free of charge, and I'm not surprised by the exceptional comprehensiveness and depth of the curriculum they've assembled.

A few things you can and will learn at [Next Learn](https://nextjs.org/learn):

* App Router
    
* Styling
    
* Setting up your Database
    
* Fetching data with Server Components
    
* Adding search and pagination
    
* Accessibility
    
* Authentication
    
* and more!
    

---

Well, that is it for this year's Next.js conf. If you would like to dig deeper into the things I mentioned, I recommend you check out the [official release](https://nextjs.org/blog/next-14#nextjs-compiler-turbocharged) note or watch back the [keynote](https://nextjs.org/conf).

## **Call to action**

Hi, I am Gergo, but everybody calls me StariGeri — I am a Frontend Developer Intern as well as a Computer Science student and I am sharing many things around these topics.

If any of this sounds interesting to you subscribe to my newsletter, so you won't miss anything in the future. Also if you have some thoughts you’d like to share, a topic suggestion or you found a mistake, do not hesitate to reach out to me via [LinkedIn](https://www.linkedin.com/in/gergo-starosta/) or [Instagram](https://www.instagram.com/starigeri/).