Skip to content

[EXTERNAL] Integrate convention plugins into Version Catalogs (#3181) contributed by @AlexanderTalledo#3194

Merged
tonidero merged 1 commit into
mainfrom
external/AlexanderTalledo/integrate-convention-plugins-into-version-catalogs
Mar 11, 2026
Merged

[EXTERNAL] Integrate convention plugins into Version Catalogs (#3181) contributed by @AlexanderTalledo#3194
tonidero merged 1 commit into
mainfrom
external/AlexanderTalledo/integrate-convention-plugins-into-version-catalogs

Conversation

@tonidero

@tonidero tonidero commented Mar 9, 2026

Copy link
Copy Markdown
Contributor

Checklist

  • If applicable, unit tests
  • If applicable, create follow-up issues for purchases-ios and hybrids

Motivation

While developers' priority is always the end-user, improving the development experience (DX) and making the daily workflow more comfortable for developers is equally vital. By integrating convention plugins into Version Catalogs we do unlock a lot of benefits for development with a very few small changes:

  • Standardization: If we already add third party's plugins via aliases, why should we add our plugins in a different way?
  • Single source of truth: libs.versions.toml is the only place to go.
  • Less error prone: Avoid failure builds because of a typo or misscopying the ID from somewhere else. This also safe us some time.
  • IDE capabilites: Enables those helpfull features that make our life easier.
    • Code auto-completion
    • Refactoring/renaming
    • Error highlighting
    • ctrl/cmd + click for jumping to definition or finding usages

Note: I did not create any associated issue because I did not find any category that matches the purpose of this PR. If this is mandatory, please do let me know and point to under what category should be created.

Description

Integrate convention plugins into Version Catalogs to enable typesafe alias accessors for locally registered custom convention plugins.

Changes

  • Declare gradle convention plugins registered in build-logic/convention/build.gradle.kts on gradle/libs.versions.toml.
  • Replace hardcoded convention plugins IDs across all modules by the equivalent typesafe alias accessors.
    • Before: id("revenuecat-android-application")
    • After: alias(libs.plugins.revenuecat.android.application)

Testing

  • Verified that all modules successfully build after switching from hardcoded IDs to aliases.

contributed by @AlexanderTalledo in #3181


Note

Low Risk
Build configuration-only change that replaces plugin IDs with version-catalog aliases; risk is limited to potential Gradle misconfiguration causing build failures.

Overview
Gradle convention plugins are now sourced from the version catalog. The PR adds entries for RevenueCat’s locally-registered convention plugins to gradle/libs.versions.toml.

All affected modules switch from id("revenuecat-…") to the type-safe alias(libs.plugins.revenuecat.… ) form (apps, libraries, samples, and test modules), standardizing plugin application and centralizing plugin IDs.

Written by Cursor Bugbot for commit 11f3cab. This will update automatically on new commits. Configure here.

<!-- Thank you for contributing to Purchases! Before pressing the
"Create Pull Request" button, please provide the following: -->

### Checklist
- [x] If applicable, unit tests
- [x] If applicable, create follow-up issues for `purchases-ios` and
hybrids

### Motivation
<!-- Why is this change required? What problem does it solve? -->
While developers' priority is always the end-user, improving the
development experience (DX) and making the daily workflow more
comfortable for developers is equally vital. By integrating convention
plugins into Version Catalogs we do unlock a lot of benefits for
development with a very few small changes:
- **Standardization**: If we already add third party's plugins via
aliases, why should we add our plugins in a different way?
- **Single source of truth**: `libs.versions.toml` is the only place to
go.
- **Less error prone**: Avoid failure builds because of a typo or
misscopying the ID from somewhere else. This also safe us some time.
- **IDE capabilites**: Enables those helpfull features that make our
life easier.
    - Code auto-completion
    - Refactoring/renaming
    - Error highlighting
    - `ctrl/cmd + click` for jumping to definition or finding usages
<!-- Please link to issues following this format: Resolves #999999 -->

**Note:** I did not create any associated issue because I did not find
any category that matches the purpose of this PR. If this is mandatory,
please do let me know and point to under what category should be
created.

### Description
Integrate convention plugins into Version Catalogs to enable typesafe
alias accessors for locally registered custom convention plugins.
#### Changes
- Declare gradle convention plugins registered in
`build-logic/convention/build.gradle.kts` on
`gradle/libs.versions.toml`.
- Replace hardcoded convention plugins IDs across all modules by the
equivalent typesafe alias accessors.
    - Before:  `id("revenuecat-android-application")`
    - After: `alias(libs.plugins.revenuecat.android.application)`
#### Testing
- Verified that all modules successfully build after switching from
hardcoded IDs to aliases.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Touches Gradle configuration across multiple modules by changing how
core convention plugins are applied, so mistakes would surface as
build/IDE resolution failures. No runtime or library logic changes.
> 
> **Overview**
> Standardizes application of internal RevenueCat convention plugins by
moving their IDs into `gradle/libs.versions.toml` and using
`alias(libs.plugins...)` accessors instead of hardcoded
`id("revenuecat-...")`.
> 
> Updates the affected app and library modules (`purchases`, `ui/*`,
`feature/*`, `examples/*`, `integration-tests`, `api-tester`) to use the
new catalog aliases for the same convention plugins.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
7b1fe62. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@tonidero tonidero requested a review from a team as a code owner March 9, 2026 09:25
@tonidero tonidero requested a review from skydoves March 9, 2026 09:26

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix prepared a fix for the issue found in the latest run.

  • ✅ Fixed: Unused catalog entry for never-applied convention plugin
    • Removed the unused revenuecat-android-library plugin alias from gradle/libs.versions.toml since it has no consumers.

Create PR

Or push these changes by commenting:

@cursor push d40e1dd398
Preview (d40e1dd398)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -193,7 +193,6 @@
 android-test = { id = "com.android.test", version.ref = "agp" }
 baselineprofile = { id = "androidx.baselineprofile", version.ref = "baselineprofile" }
 revenuecat-android-application = { id = "revenuecat-android-application" }
-revenuecat-android-library = { id = "revenuecat-android-library" }
 revenuecat-api-tester-application = { id = "revenuecat-api-tester-application" }
 revenuecat-public-library = { id = "revenuecat-public-library" }
This Bugbot Autofix run was free. To enable autofix for future PRs, go to the Cursor dashboard.

Comment thread gradle/libs.versions.toml
@codecov

codecov Bot commented Mar 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.32%. Comparing base (2353213) to head (11f3cab).
⚠️ Report is 7 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3194   +/-   ##
=======================================
  Coverage   79.32%   79.32%           
=======================================
  Files         351      351           
  Lines       14164    14164           
  Branches     1933     1933           
=======================================
  Hits        11235    11235           
  Misses       2126     2126           
  Partials      803      803           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rickvdl rickvdl left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

Comment thread gradle/libs.versions.toml
@tonidero tonidero added this pull request to the merge queue Mar 11, 2026
Merged via the queue into main with commit aa62672 Mar 11, 2026
37 checks passed
@tonidero tonidero deleted the external/AlexanderTalledo/integrate-convention-plugins-into-version-catalogs branch March 11, 2026 12:17
github-merge-queue Bot pushed a commit that referenced this pull request Mar 11, 2026
### Description
Currently we don't need the Android library convention plugin since we
only have public libraries that use a different convention plugin. We
remove it for now, we can always add it back later if needed.

Based on #3194

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: this removes an unused Gradle convention plugin and its
version-catalog alias, affecting only build configuration and only if
any module still referenced the removed plugin ID.
> 
> **Overview**
> Removes the `revenuecat-android-library` Gradle convention plugin from
build logic by dropping its registration in
`build-logic/convention/build.gradle.kts` and deleting
`AndroidLibraryConventionPlugin`.
> 
> Cleans up the version catalog by removing the
`revenuecat-android-library` plugin alias from
`gradle/libs.versions.toml`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
380a00c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Alexta <8045196+AlexanderTalledo@users.noreply.github.com>
This was referenced Mar 11, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Mar 12, 2026
**This is an automatic release.**

## RevenueCat SDK
### ✨ New Features
* [EXPERIMENTAL]: Beta Galaxy Store Support (#2903) via Will Taylor
(@fire-at-will)
### 🐞 Bugfixes
* Skip installation on GCP CLI in run-firebase-test (#3218) via Will
Taylor (@fire-at-will)
* Fix reduced timeouts being used for HTTP requests when a proxy URL is
configured (#3188) via Rick (@rickvdl)

## RevenueCatUI SDK
### 🐞 Bugfixes
* Fix missing ripple effect in View-based paywall wrappers (#3206) via
Toni Rico (@tonidero)
### Paywallv2
#### ✨ New Features
* Rules v0 Integration branch (#3117) via Cesar de la Vega (@vegaro)

### 🔄 Other Changes
* [Galaxy]: Add promotionEligibilities comment (#3214) via Will Taylor
(@fire-at-will)
* [EXTERNAL] Migrate deprecated buildDir to layout API (#3202)
contributed by @AlexanderTalledo (#3212) via Toni Rico (@tonidero)
* Remove automatic Claude code review workflow (#3211) via Cesar de la
Vega (@vegaro)
* Remove unused convention plugin (#3195) via Toni Rico (@tonidero)
* [EXTERNAL] Integrate convention plugins into Version Catalogs (#3181)
contributed by @AlexanderTalledo (#3194) via Toni Rico (@tonidero)
* [EXTERNAL] Migrate androidx cardview dependency to version catalogs
(#3192) contributed by @AlenxanderTalledo (#3193) via Toni Rico
(@tonidero)
* Improve AdMob adapter test coverage (#3204) via Pol Miro (@polmiro)
* Bump fastlane-plugin-revenuecat_internal from `f5c099b` to `e146447`
(#3197) via dependabot[bot] (@dependabot[bot])
* Fix integration tests (#3196) via Toni Rico (@tonidero)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk release bookkeeping: version strings and deployment paths are
updated from `9.24.0-SNAPSHOT` to `9.24.0`, plus changelog/docs refresh.
Main risk is accidental publishing/docs deployment to the wrong
versioned location.
> 
> **Overview**
> Cuts the `9.24.0` release by updating all version references from
`9.24.0-SNAPSHOT` to `9.24.0` (root `.version`, `gradle.properties`, and
`Config.frameworkVersion`), and aligning sample/test app version
catalogs to consume the released artifact.
> 
> Updates documentation publishing to point at the `9.24.0` directory
(CircleCI S3 sync and `docs/index.html` redirect) and refreshes
`CHANGELOG.latest.md`/`CHANGELOG.md` with the `9.24.0` release notes.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
8e6d567. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants