Considering my android background, there has been a couple of dependency updaters I’ve had experience with it. The famous ones were:
- Gradle Versions Plugin
- Renovate and nice onboarding documentation for it here.
And with recent development, even Gemini’s Version Upgrade Agent might be a nice alternative.
For a KMP project with dependencies across different ecosystems (Gradle for JVM/Android, Swift Package Manager or CocoaPods for iOS via Gradle plugins), I find Renovate’s fine-grained configuration control super powerful. It comes with a lot of nice defaults (I think it’s one of the nicest example on how well deep interface it has). Super easy to on-board a project and super easy to remove (just a single json file). To be able to group version updates into single PR, and to be able to define the PR title, to decide when, how frequently it should be triggered, auto approve support, rate limiting PRs, etc… these are all super helpful. And I think it’s also commonly used among web projects although I’m not a web developer at all so don’t trust me on that.
In the project itself, I decided to group androidx
, jetbrains
and ktor
dependencies into their own group but you can play with any configuration that is defined here.
I myself made some wrong configuration at first PR and updated here and probably will update the configuration again if I find it not logical. For instance maybe I should have kept prHourlyLimit
as it was.
But so far, we can now tick one check in the list below and rest remains 🎉;
- Core
- ✅ Dependency management: Renovate
- Logging
- Error reporting
- Analytics
- Tracing
- Network
- Benchmarking
- Build conventions
- Flavours
- Mocks
- Test fixtures
- Build info
- Preferences
- Storage
- DI
- Feature flags (local & remote)
- Deep linking
- Push notifications
- TimeProvider
- Local Formatters
- Coroutine Dispatchers & Test helper
- Lint
- Static code analysis
- Unit testing
- Test coverage
- Obfuscation & Shrinking
- Pipelines
- Releasing
- Force updates
- UI
- Design system
- Gallery App
- Navigation
- Baseline profiles
- Compose compiler metrics
- Previews
- Network image loading
- supportsDynamicTheming
- Status bar color changing
- App settings with Resource Environment
- l10n
- i18n
- Testing
- UI Testing
- Compose Screenshot testing
Hope to see you in the next episode.
Until then may the force be with you… 🖖