Automated, secure, and effortless code migrations.

For maintainers of large and distributed codebases to effortlessly orchestrate large-scale migrations across your organization.

– Focus on building the future, not fixing the past.

export default function transform(file, { j }) {
  const ast = j(file.source);

  const leftPadImports = ast.find(j.ImportDeclaration, {
    source: { value: "left-pad" },
  });

  const leftPadLocalName = getSpecifierName(
    leftPadImports.find(j.ImportDefaultSpecifier)
  );

  leftPadImports.remove();

  ast
    .find(j.CallExpression, { callee: { name: leftPadLocalName } })
    .forEach((callPath) => {
      const args = callPath.node.arguments;

      if (args.length >= 2) {
        const stringArg = args[0];
        const targetLength = args[1];
        const padString = args.length > 2 ? args[2] : j.literal(" ");

        j(callPath).replaceWith(
          j.callExpression(
            j.memberExpression(stringArg, j.identifier("padStart")),
            [targetLength, padString]
          )
        );
      }
    });

  return ast.toSource();
}

function getSpecifierName(specifiers) {
  if (!specifiers.length) return null;
  return specifiers.nodes()[0].local.name;
}

Input
import leftPad from 'left-pad';

const foo = 'bar';
const baz = 'qux';

leftPad(foo, 5);
leftPad(baz, 5);

Output
loading
Read-only

Batched pull requests

Deploy code transformations as batched pull requests, across your entire organization.

Scanners

Deploy scanners to detect technical debt and security vulnerabilities. Catch them before they reach your customers.

Analytics & Insights

Monitor the impact of your migrations over time, with detailed codebase analytics tools.

AI Integration

Leverage AI to generate code codemods for your specific use case.

Workflows

Compose multiple codemods together to create powerful workflows.

Dependency Management

Automatic dependency management for your codebase.

How it works

Deploy batched pull-requests

We allow easy deployment of batched pull requests across your organization.

Connect your repositories

Integrate Hypermod with repositories from Github, GitLab and Bitbucket.

Connect your repositories to Hypermod to get started.

Pull request previewPull request preview

Build Codemods

Build AST-powered codemods or generate them with AI, to automate tedious or complex code changes across an unlimited amount of code.

With support for transformation libraries you already know and love. Such as JSCodeshift, AST-Grep, PostCSS, Babel, Magicast and more.

🧀
Pull request previewPull request preview

Deploy

Compose multiple codemods together to create powerful workflows, then select the repositories you want to deploy them to.

Deploy your codemods as batched pull requests across your organization.

Pull request previewPull request preview

Review

Developers across your organization will receive consice and ready to merge pull requests.

Review the changes and merge them with confidence.

Pull request previewPull request preview

Monitor

Deploy scanners to help you track and analyze the impact of your migrations over time. Detect the reduction of technical debt or trigger alerts for security vulnerabilities across your codebases.

Pull request previewPull request preview

Meet the Hypermod Editor

The Hypermod Editor is a powerful completely in-browser editor, that allows you to create codemods and preview them live in a sandbox environment before deploying them to your repositories.

export default function transform(file, { j }) {
  const ast = j(file.source);

  const leftPadImports = ast.find(j.ImportDeclaration, {
    source: { value: "left-pad" },
  });

  const leftPadLocalName = getSpecifierName(
    leftPadImports.find(j.ImportDefaultSpecifier)
  );

  leftPadImports.remove();

  ast
    .find(j.CallExpression, { callee: { name: leftPadLocalName } })
    .forEach((callPath) => {
      const args = callPath.node.arguments;

      if (args.length >= 2) {
        const stringArg = args[0];
        const targetLength = args[1];
        const padString = args.length > 2 ? args[2] : j.literal(" ");

        j(callPath).replaceWith(
          j.callExpression(
            j.memberExpression(stringArg, j.identifier("padStart")),
            [targetLength, padString]
          )
        );
      }
    });

  return ast.toSource();
}

function getSpecifierName(specifiers) {
  if (!specifiers.length) return null;
  return specifiers.nodes()[0].local.name;
}

Input
import leftPad from 'left-pad';

const foo = 'bar';
const baz = 'qux';

leftPad(foo, 5);
leftPad(baz, 5);

Output
loading
Read-only
Pricing

Simple, transparent pricing

Choose the plan that works best for you. All plans include a 14-day free trial.

Lifetime deal

Lifetime access to all features for a one-time payment. Offer only available during beta.

  • Deploy to private repos
  • AI features
  • Unlimited Codemods
  • Unlimited Repositories
  • Create & share Codemods

$129

One-time payment

Get Lifetime Plan
Community

Our community

Join our community of developers, maintainers, and organizations who are using Hypermod to automate code migrations.

Community first

Learn with others in a supportive community Share your work and get the help you need in the Hypermod Community Discord: an inclusive space to share ideas and explore what‘s possible.

Join our Discord

Secure by design

Your source code never leaves its repository for processing. We instead dispatch requests to GitHub actions / Bitbucket Pipelines which run transformations safely within your repository.

See our security policy

Hypermod-GPT

Hypermod-GPT can be used to assist in generating codemods. It is trained on a large dataset of code and can be used to generate code codemods for your specific use case.

Go to Hypermod-GPTHypermod-GPT AI model for generating codemods.Hypermod-GPT AI model for generating codemods.

Open source

We provide a open source CLI and API to help you build and share codemods with the community. Running local or public tranforms via our CLI is completely free.

Get started with the CLI

Deploy your first codemod in minutes.