Skip to content
Renovate

Renovate

Category: SCA
License: Free (Open-Source, AGPL-3.0)

Renovate is an open-source dependency update tool with 20.7k GitHub stars, 1,489 contributors, and over 5,000 releases. It monitors repositories for outdated packages and creates pull requests to keep dependencies current.

Renovate dependency update pull request showing version bump, changelog, and merge confidence badge

With support for over 90 package managers and highly flexible configuration, Renovate is the go-to Dependabot alternative for teams that need advanced scheduling, grouping, and automerge rules. It works on GitHub, GitLab, Bitbucket, Azure DevOps, and Gitea.

What is Renovate?

Renovate scans your project files, detects dependencies across all supported package managers, and creates pull requests when updates are available. Each PR includes changelogs, compatibility information, and (optionally) merge confidence scores.

The tool runs as a GitHub App (hosted by Mend for free), a self-hosted CLI, or a Docker container. Configuration lives in a renovate.json file in your repository root, and presets let you share settings across an organization.

90+ Package Managers
Supports npm, pip, Maven, Gradle, Cargo, Go modules, Composer, Bundler, Helm, Docker, Terraform, GitHub Actions, and 80+ more. Detects package files automatically and handles lockfile updates.
Merge Confidence
Adds badges to PRs showing how likely an update is to break your build. Uses aggregated CI data from millions of updates across the Mend Renovate user base.
Regex Managers
Define custom patterns to update versions in non-standard files (Dockerfiles, CI configs, Makefiles). If it has a version string, Renovate can probably update it.

Key features

Package manager highlights

CategoryManagers
JavaScriptnpm, yarn, pnpm, Bun, Bower
Pythonpip, Poetry, Pipenv, uv, pip-compile
Java/KotlinMaven, Gradle, sbt
GoGo modules
.NETNuGet
RustCargo
PHPComposer
RubyBundler
SwiftCocoaPods, Swift PM
InfrastructureDocker, Helm, Terraform, Kubernetes
CI/CDGitHub Actions, GitLab CI, CircleCI, Azure Pipelines
CustomRegex managers for any version string

Scheduling and grouping

Renovate supports scheduling beyond simple daily/weekly intervals. Use cron expressions, time windows, and timezone-aware scheduling. Group updates by package name patterns, dependency type (production vs. development), or semver level to reduce PR noise.

Security updates

When a CVE is published for a dependency, Renovate creates a pull request immediately, bypassing normal scheduling rules. The PR includes vulnerability details and severity ratings. Security updates get priority treatment in the queue.

Automerge

Set up automerge for low-risk updates. Renovate can automatically merge patch and minor updates that pass CI checks, keeping your dependencies current without manual intervention. Configure conditions per package or update type.

Monorepo support

For monorepos with multiple packages, Renovate understands workspace structures and updates internal dependencies correctly. It groups related updates and respects package-specific version constraints.

Installation

1
Install the GitHub App – Go to github.com/apps/renovate, click Install, and select your repositories. Renovate creates an onboarding PR with default configuration.
2
Review the onboarding PR – The PR shows what Renovate will do and lets you customize settings before merging. Merge it to activate.
3
Customize configuration – Edit renovate.json in your repository root to set scheduling, grouping, automerge rules, and package-specific policies.
4
Monitor PRs – Renovate starts opening update PRs based on your schedule. Review, test, and merge.

GitHub App (Hosted)

The easiest option is the Mend-hosted Renovate GitHub App:

  1. Install from github.com/apps/renovate
  2. Select repositories to enable
  3. Renovate creates an onboarding PR with default configuration

Self-Hosted

Run Renovate on your own infrastructure:

# Install CLI
npm install -g renovate

# Run with GitHub token
export GITHUB_TOKEN=your-token
renovate --platform github --token $GITHUB_TOKEN owner/repo

# Docker
docker run --rm \
  -e GITHUB_TOKEN \
  -e RENOVATE_PLATFORM=github \
  renovate/renovate owner/repo

GitLab CI Runner

renovate:
  image: renovate/renovate:latest
  script:
    - renovate
  variables:
    RENOVATE_PLATFORM: gitlab
    RENOVATE_TOKEN: $GITLAB_TOKEN
    RENOVATE_AUTODISCOVER: "true"

Configuration

Create renovate.json in your repository root:

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended",
    "security:openssf-scorecard"
  ],
  "schedule": ["before 6am on monday"],
  "timezone": "America/New_York",
  "labels": ["dependencies"],
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch"],
      "matchCurrentVersion": "!/^0/",
      "automerge": true
    },
    {
      "groupName": "linting",
      "matchPackagePatterns": ["eslint", "prettier"]
    },
    {
      "matchPackagePatterns": ["aws-sdk"],
      "enabled": false
    }
  ]
}

Common Configurations

{
  "extends": ["config:recommended"],

  "prHourlyLimit": 5,
  "prConcurrentLimit": 10,

  "vulnerabilityAlerts": {
    "enabled": true,
    "labels": ["security"]
  },

  "lockFileMaintenance": {
    "enabled": true,
    "schedule": ["before 5am on monday"]
  },

  "regexManagers": [
    {
      "fileMatch": ["Dockerfile"],
      "matchStrings": ["ENV NODE_VERSION=(?<currentValue>.*?)\\n"],
      "depNameTemplate": "node",
      "datasourceTemplate": "node"
    }
  ]
}

Integration

GitHub Actions (Self-Hosted)

name: Renovate
on:
  schedule:
    - cron: '0 3 * * *'
  workflow_dispatch:

jobs:
  renovate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: renovatebot/github-action@v40
        with:
          token: ${{ secrets.RENOVATE_TOKEN }}
          configurationFile: renovate.json

Automerge with GitHub Actions

# In renovate.json
{
  "packageRules": [
    {
      "matchUpdateTypes": ["patch"],
      "automerge": true,
      "automergeType": "pr",
      "platformAutomerge": true
    }
  ]
}

Slack Notifications

{
  "extends": ["config:recommended"],
  "hostRules": [
    {
      "matchHost": "hooks.slack.com",
      "encrypted": {
        "token": "encrypted-webhook-url"
      }
    }
  ]
}

When to use Renovate

Renovate suits teams that need fine-grained control over dependency updates. Its configuration flexibility handles complex scenarios like monorepos, custom version schemes, and organization-wide policies.

Strengths:

  • 90+ package managers, far more than any competitor
  • Works on GitHub, GitLab, Bitbucket, Azure DevOps, and Gitea
  • Merge confidence scoring from aggregated CI data
  • Regex managers for non-standard files
  • Free and open-source (AGPL-3.0)

Limitations:

  • Configuration complexity can be overwhelming for small teams
  • No built-in vulnerability database (uses upstream advisories)
  • Self-hosted mode requires infrastructure management
Best for
Teams that need advanced dependency update automation across multiple platforms, monorepos, or non-standard package files. The configuration power is worth the learning curve.

How it compares:

vs.Key difference
DependabotDependabot is simpler and GitHub-only. Renovate supports more platforms, more package managers, and more configuration options.
Mend SCAMend SCA uses Renovate technology for remediation but adds vulnerability scanning, reachability analysis, and license compliance.

Frequently Asked Questions

What is Renovate?
Renovate is an open-source tool that automatically creates pull requests to keep your project’s dependencies up to date. It supports over 90 package managers and runs as a GitHub App, GitLab bot, or self-hosted service.
Is Renovate free?
Yes, Renovate is free and open-source under the AGPL-3.0 license. Mend also offers a hosted version through the Renovate GitHub App at no cost. Mend’s commercial product adds enterprise features like merge confidence scoring.
How does Renovate compare to Dependabot?
Renovate supports more package managers (90+ vs 30+), works on GitHub, GitLab, Bitbucket, Azure DevOps, and Gitea (Dependabot is GitHub-only), and offers more advanced configuration including custom scheduling, grouping, automerge rules, and regex managers for non-standard files.
What is merge confidence?
Merge confidence is a feature that adds badges to Renovate PRs showing how likely an update is to break your build. It uses aggregated data from millions of updates across the Mend Renovate App user base to calculate confidence levels.

Complement with SAST

Pair dependency scanning with static analysis for broader coverage.

See all SAST tools

Comments

Powered by Giscus — comments are stored in GitHub Discussions.