vercel/turborepo · error · ConvertError

package_manager-unsupported_version

package_manager-unsupported_version

Error message

Unsupported package manager version.

What it means

install() maps the requested manager name to a known entry (getPackageManagerMeta looks up PACKAGE_MANAGERS[name] and takes its default entry) to get the install command and args. An unknown name or an entry without a default throws ConvertError type package_manager-unsupported_version, stopping before any install subprocess runs.

Solutions

  1. Check the exact spelling/casing of the manager name you passed
  2. Upgrade @turbo-workspaces/turbo to a version that supports the manager
  3. Inspect PACKAGE_MANAGERS keys in your installed version to see accepted names
  4. If calling programmatically, validate the name against the exported list before calling install

Example fix

// before
await install({ to: { name: "pnpm3", version: "3.0.0" }, options }); // unknown name -> throws

// after
await install({ to: { name: "pnpm", version: "9.1.0" }, options });
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = new Set(["npm", "pnpm", "yarn", "bun" /* + managers your version supports */]);

function isSupportedManager(name: string): boolean {
  return SUPPORTED.has(name.toLowerCase());
}
// if (!isSupportedManager(to.name)) fail with a clear message before install();

Type guard

function isKnownManager(name: string): name is "npm" | "pnpm" | "yarn" | "bun" {
  return ["npm", "pnpm", "yarn", "bun"].includes(name);
}

Try / catch

try {
  await install({ to, options });
} catch (err) {
  if (err instanceof ConvertError && err.type === "package_manager-unsupported_version") {
    throw new Error(`Unsupported manager '${to.name}' - upgrade @turbo-workspaces?`, { cause: err });
  }
  throw err;
}

Prevention

When it happens

Trigger: Calling install with a manager name not present in the PACKAGE_MANAGERS registry, or a registry entry with no default version - e.g. asking to install with an unreleased/unknown manager identifier or a version-specific key that has no default.

Common situations: Typos in the --to manager name, depending on a newer manager supported by a newer @turbo-workspaces version than the one installed, or passing a versioned identifier where a plain name is expected.

Related errors


AI-assisted analysis of vercel/turborepo@f9245100cf (2026-08-17). Data as JSON: /api/errors/142ab1b9ada4d585. Report an issue: GitHub.

Appendix: source

Thrown at packages/turbo-workspaces/src/install.ts:130

  const { version, name } = packageManager;
  if (version) {
    return PACKAGE_MANAGERS[name].find((manager) =>
      satisfies(version, manager.semver)
    );
  }
  return PACKAGE_MANAGERS[name].find((manager) => {
    return manager.default;
  });
}

export async function install(args: InstallArgs) {
  const { to, logger, options } = args;

  const installLogger = logger ?? new Logger(options);
  const packageManager = getPackageManagerMeta(to);

  if (!packageManager) {
    throw new ConvertError("Unsupported package manager version.", {
      type: "package_manager-unsupported_version"
    });
  }

  installLogger.subStep(
    `running "${packageManager.command} ${packageManager.installArgs.join(
      " "
    )}"`
  );
  if (!options?.dry) {
    let spinner;
    if (installLogger.interactive) {
      spinner = ora({
        text: "installing dependencies...",
        spinner: {
          frames: installLogger.installerFrames()
        }
      }).start();

View on GitHub (pinned to f9245100cf)