Skip to main content

Command Palette

Search for a command to run...

Automating Next.js Code Changes with Codemods

Learn About NextJS CodeMods and take benifit of them

Published
3 min readView as Markdown
Automating Next.js Code Changes with Codemods
S

I'm a Developer that enjoys designing scalable computational solutions to issues and optimizing them to build usable goods & services. Web Development is a technology that excites me. Till date i have participated in different hackathons and competitions, I have built the frontend as well as backend interfaces for multiple early-stage businesses while still a student by working at them. I love problem solving. I try to practice different questions and then finding optimized solutions for same on different coding platforms such as LeetCode and GFG. I consistently work on improving my problem solving skills by learning new concepts and practicing on daily basis. I have a unique understanding leadership, public speaking and building things in a structured manner as I have lead and worked with amazing people from different technical communities. I love to empower the community by doing community work such as sharing useful content, teaching in different workshops, and spreading awareness related to web development and DSA.

Introduction :

Codemods are transformations that run on your codebase programmatically. This allows for a large number of changes to be applied without having to manually go through every file. Next.js provides codemod transformations to help upgrade your Next.js codebase when an API is updated or deprecated.

Here is an example of how a codemod works:

Let's say that the Next.js team deprecates the next/image component and introduces a new next/image-experimental component. You can use the next-image-to-legacy-image codemod to automatically migrate your codebase to use the new component.

The codemod will first scan your codebase for all imports of the next/image component. Then, it will replace each import with the next/image-experimental component. Finally, it will save the changes to your files.

Codemods are a great way to save time and effort when upgrading your Next.js codebase. They can also help you avoid making mistakes.

Here are some of the benefits of using Next.js codemods:

  • Save time and effort: Codemods can automate the process of upgrading your codebase, which can save you a lot of time and effort.

  • Avoid mistakes: Codemods can help you avoid making mistakes when upgrading your codebase. This is because codemods are programmatically applied, which means that there is less chance of human error.

  • Stay up-to-date: Codemods can help you stay up-to-date with the latest Next.js features. This is because codemods can be used to apply changes to your codebase when new features are released.

If you are looking for a way to save time and effort when upgrading your Next.js codebase, then codemods are a great option. They can also help you avoid making mistakes and stay up-to-date with the latest Next.js features.

Most commonly used Next.js codemods:

  • next-image-to-legacy-image: This codemod renames imports of the next/image component to the deprecated next-image component.

  • next-image-experimental: This codemod migrates your codebase to use the new next/image component.

  • new-link: This codemod removes the <a> tags from Link components and replaces them with the href prop.

  • cra-to-next: This codemod migrates your codebase from Create React App to Next.js.

  • add-missing-react-import: This codemod adds import React from 'react' to files that do not already have it.

  • name-default-component: This codemod transforms anonymous components into named components.

  • withamp-to-config: This codemod transforms the withAMP HOC into a page config.

  • url-to-withrouter: This codemod replaces uses of the url prop with the withRouter component.

To use a codemod, you can run the following command in your terminal:

npx @next/codemode <transform> <path>

Eg) npx @next/codemod next-image-to-legacy-image ./
This would run the codemod on all files in the current directory.

You can also use the --dry flag to run the codemod in a dry run mode, which will print the changes that would be made without actually making any changes to your code.

The --print flag can be used to print the changed output for comparison.

Safely renames next/image imports in existing Next.js 10, 11, or 12 applications to next/legacy/image in Next.js 13. Also renames next/future/image to next/image.

pages/index.js

import Image1 from 'next/image'
import Image2 from 'next/future/image'

export default function Home() {
  return (
    <div>
      <Image1 src="/demo1.jpg" width="300" height="400" />
      <Image2 src="/demo1.png" width="600" height="500" />
    </div>
  )
}

pages/index.js

// 'next/image' becomes 'next/legacy/image'
import Image1 from 'next/legacy/image'
// 'next/future/image' becomes 'next/image'
import Image2 from 'next/image'

export default function Home() {
  return (
    <div>
      <Image1 src="/demo1.jpg" width="300" height="400" />
      <Image2 src="/demo1.png" width="600" height="500" />
    </div>
  )
}

Conclusion

Codemods are a powerful tool that can help you upgrade your Next.js codebase. If you are looking for a way to save time and effort, then codemods are a great option.

I hope this article has helped you understand Next.js codemods. If you have any further questions, please feel free to ask me.

Follow Sanket Jagdale for more !!

My LinkTree : https://linktr.ee/Devgrammer