-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
Replace Dependabot with Renovate to improve dependency update workflow in our Rush monorepo.
Current Problems with Dependabot
-
Separate PRs per package: When the same dependency (e.g.,
jwks-rsa) exists in multiple packages, Dependabot creates separate PRs for each package directory. This creates noise and requires multiple merge cycles. -
Cannot run custom commands: Dependabot only modifies
package.jsonfiles. It cannot runrush changeto generate the required change files, causing CI to fail on therush change --verifystep. -
Manual workaround required: We currently use a "sub-PR" pattern where Copilot/Claude creates follow-up PRs (e.g.,
copilot/sub-pr-649) to add change files. This adds friction and delays to the dependency update process.
Proposed Solution: Renovate
Renovate has better monorepo support:
Key Benefits
-
Single PR for same dependency across packages: Renovate can update the same dependency in all packages within a single PR using its monorepo grouping feature.
-
Post-upgrade tasks: Renovate supports
postUpgradeTasksto run custom commands after updating dependencies, allowing us to automatically runrush change. -
Native Rush support: Renovate has a
rushmanager that understands Rush monorepo structure.
Example Configuration
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch"],
"groupName": "all non-major dependencies",
"groupSlug": "all-minor-patch"
}
],
"postUpgradeTasks": {
"commands": [
"node common/scripts/install-run-rush.js change --bulk --message \"chore(deps): update dependencies\" --bump-type patch"
],
"fileFilters": ["common/changes/**/*.json"],
"executionMode": "branch"
},
"ignoreDeps": ["@types/node"]
}Migration Steps
- Create
renovate.jsonconfiguration file in repo root - Install Renovate GitHub App on the repository
- Test with a few dependencies to verify change file generation works
- Remove
.github/dependabot.ymlonce Renovate is working - Update
CLAUDE.mdto reflect new workflow
References
- Renovate Documentation
- Renovate Rush Manager
- Post-upgrade Tasks
- Current Dependabot config:
.github/dependabot.yml - Example sub-PR workaround: PR chore: add rush change file for jwks-rsa dependency update #665
Notes
- Renovate is free for public repositories and has a self-hosted option
- The GitHub App approach requires no infrastructure to maintain
- Consider running Renovate on a schedule similar to current Dependabot (daily)