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 transforms for your specific use case.

Workflows

Compose multiple transforms 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 transforms

Build AST-powered transforms 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 transforms together to create powerful workflows, then select the repositories you want to deploy them to.

Deploy your transforms 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 transforms and preview them 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 Transforms
  • Unlimited Repositories
  • Create & share transforms
  • Premium onboarding
  • Premium support

$39

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 transforms. It is trained on a large dataset of code and can be used to generate code transforms for your specific use case.

Go to Hypermod-GPTHypermod-GPT AI model for generating code transforms.Hypermod-GPT AI model for generating code transforms.

Open source

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

Get started with the CLI

Deploy your first transform in minutes.