Migrating from Renovate
On this page 25
This guide provides detailed instructions for migrating from Renovate to Buddy, including configuration mappings and best practices.
Automated Migration
Buddy can automatically detect and migrate most Renovate configurations:
buddy setup
The migration process will:
- 🔍 Detect Renovate config files (
renovate.json,.renovaterc,package.json) - ⚙️ Convert settings to Buddy format
- ⚠️ Identify incompatible features
- 📋 Generate detailed migration report
Configuration Mapping
Basic Settings
| Renovate Setting | Buddy Equivalent | Notes |
|---|---|---|
extends | N/A | Use explicit configuration instead |
schedule | schedule.cron | Converted to cron expressions |
timezone | schedule.timezone | Direct mapping |
automerge | pullRequest.autoMerge.enabled | Boolean mapping |
automergeStrategy | pullRequest.autoMerge.strategy | Strategy mapping |
ignoreDeps | packages.ignore | Array of package names |
assignees | pullRequest.assignees | Direct array mapping |
reviewers | pullRequest.reviewers | Direct array mapping |
Schedule Conversion
Renovate Text Schedules → Cron:
// Renovate
{
"schedule": ["before 6am"]
}
// Buddy
{
schedule: {
cron: '0 4 * * *', // 4 AM daily
timezone: 'UTC'
}
}
Common Schedule Mappings:
| Renovate | Buddy Cron | Description |
|---|---|---|
"before 6am" | 0 4 * * * | Daily at 4 AM |
"every weekend" | 0 2 * * 6 | Saturday 2 AM |
"after 10pm every weekday" | 0 22 * * 1-5 | Weekdays 10 PM |
"before 5am on Monday" | 0 4 * * 1 | Monday 4 AM |
"on the first day of the month" | 0 2 1 * * | Monthly, 1st at 2 AM |
Package Rules Migration
Simple Package Rules:
// Renovate
{
"packageRules": [
{
"matchPackageNames": ["react", "react-dom"],
"groupName": "React packages"
}
]
}
// Buddy
{
packages: {
groups: [
{
name: 'React packages',
patterns: ['react', 'react-dom'],
updateType: 'all'
}
]
}
}
Pattern-Based Rules:
// Renovate
{
"packageRules": [
{
"matchPackagePatterns": ["^@types/"],
"groupName": "TypeScript definitions",
"schedule": ["before 6am on Monday"]
}
]
}
// Buddy
{
packages: {
groups: [
{
name: 'TypeScript definitions',
patterns: ['@types/*'],
updateType: 'all',
schedule: {
cron: '0 4 * * 1' // Monday 4 AM
}
}
]
}
}
Update Type Rules:
// Renovate
{
"packageRules": [
{
"matchUpdateTypes": ["major"],
"enabled": false
},
{
"matchUpdateTypes": ["patch"],
"automerge": true
}
]
}
// Buddy
{
packages: {
strategy: 'minor', // Excludes major updates
groups: [
{
name: 'Patch Updates',
patterns: ['*'],
updateType: 'patch',
autoMerge: true
}
]
}
}
Advanced Features
Dependency Dashboard:
// Renovate
{
"dependencyDashboard": true,
"dependencyDashboardTitle": "Dependency Updates"
}
// Buddy
{
dashboard: {
enabled: true,
title: 'Dependency Updates',
pin: true,
labels: ['dependencies']
}
}
Auto-merge Configuration:
// Renovate
{
"automerge": true,
"automergeType": "pr",
"automergeStrategy": "squash",
"packageRules": [
{
"matchUpdateTypes": ["patch"],
"automerge": true
},
{
"matchUpdateTypes": ["major"],
"automerge": false
}
]
}
// Buddy
{
pullRequest: {
autoMerge: {
enabled: true,
strategy: 'squash'
}
},
packages: {
groups: [
{
name: 'Patch Updates',
patterns: ['*'],
updateType: 'patch',
autoMerge: true
},
{
name: 'Major Updates',
patterns: ['*'],
updateType: 'major',
autoMerge: false
}
]
}
}
Incompatible Features
Some Renovate features don't have direct equivalents in Buddy:
❌ Not Supported
- Preset Extensions (
extends): Use explicit configuration - Regex Managers (
regexManagers): Manual configuration needed - Custom Datasources: Limited to npm, Composer, GitHub Actions
- Complex Scheduling Logic: Use cron expressions instead
- Branch Prefix Customization: Fixed
buddy/prefix
⚠️ Requires Manual Setup
- Custom PR Templates: Configure in
pullRequest.bodyTemplate - Platform-specific Settings: Adapt to GitHub Actions workflows
- Complex Grouping Logic: Simplify to pattern-based groups
Migration Examples
Conservative Setup
For teams wanting minimal changes:
// Equivalent to Renovate's config:base
export default {
schedule: {
cron: '0 2 * * 1', // Weekly
timezone: 'UTC'
},
packages: {
strategy: 'minor', // No major updates
ignore: [
// Add packages you want to manage manually
]
},
pullRequest: {
autoMerge: {
enabled: false // Manual review required
},
reviewers: ['@team-leads'],
labels: ['dependencies']
}
} satisfies BuddyConfig
Advanced Setup
For teams using complex Renovate configurations:
export default {
schedule: {
cron: '0 2 * * *', // Daily
timezone: 'America/New_York'
},
packages: {
strategy: 'all',
rules: [
{
matchPackages: ['@types/*', 'typescript'],
groupName: 'TypeScript',
autoMerge: true
},
{
matchPackages: ['eslint*', '@typescript-eslint/*'],
groupName: 'ESLint',
strategy: 'minor',
schedule: '0 2 * * 1' // Only proposed on a Monday run
},
{
matchPackages: ['react', 'react-dom', '@types/react'],
groupName: 'React Ecosystem',
strategy: 'minor',
autoMerge: false // Requires review
},
{
matchUpdateTypes: ['patch'],
groupName: 'Patch Updates',
autoMerge: true,
labels: ['auto-merge']
}
]
},
pullRequest: {
autoMerge: {
enabled: true,
strategy: 'squash',
conditions: ['patch-only']
},
titleFormat: 'chore(deps): {action} {packages}',
labels: ['dependencies', 'automated']
},
dashboard: {
enabled: true,
title: 'Dependency Dashboard',
pin: true,
includePackageJson: true,
includeGitHubActions: true
}
} satisfies BuddyConfig
Step-by-Step Migration
1. Backup Current Configuration
# Backup Renovate config
cp renovate.json renovate.json.backup
# or for package.json config
jq '.renovate' package.json > renovate-config.backup.json
2. Run Automated Migration
buddy setup
Review the migration report and note any warnings or incompatible features.
3. Test Configuration
# Test scanning
buddy scan --verbose
# Test update process (dry run)
buddy update --dry-run
4. Validate Generated Workflows
Check the generated GitHub Actions workflows:
.github/workflows/buddy-dashboard.yml.github/workflows/buddy-check.yml.github/workflows/buddy-update.yml
5. Gradual Transition
- Week 1: Run both Renovate and Buddy in parallel
- Week 2: Compare PR quality and timing
- Week 3: Disable Renovate, monitor Buddy
- Week 4: Remove Renovate configuration
6. Cleanup
# Remove Renovate files
rm renovate.json .renovaterc .renovaterc.json
# Remove package.json renovate config
npm pkg delete renovate
# Disable Renovate app in GitHub (if installed)
# Visit: https://github.com/settings/installations
Troubleshooting
Common Issues
Complex scheduling not migrated correctly:
// Convert manually using cron expressions
// Use: https://crontab.guru/ for help
Package rules too complex:
// Simplify to basic patterns and groups
// Use multiple groups instead of complex rules
Custom managers not working:
// Buddy focuses on standard package managers
// For custom files, consider manual updates
Getting Help
- 📖 Check the main Migration Guide
- 🔧 Review Configuration options
- 💬 Ask in Discord
- 🐛 Report issues on GitHub
Best Practices
✅ Do
- Start with automated migration
- Test thoroughly before removing Renovate
- Simplify complex configurations
- Use standard cron expressions
- Monitor PR quality during transition
❌ Don't
- Remove Renovate immediately
- Ignore migration warnings
- Use overly complex grouping
- Skip dry-run testing
- Forget to update team documentation
Renovate's flexibility comes with complexity. Buddy aims for simplicity while maintaining power - your migration might be a good opportunity to simplify your dependency management strategy.