Summary
We use adapty_flutter for custom paywalls only, without Adapty Paywall Builder / AdaptyUI rendering.
According to the Flutter docs, Adapty consists of:
- Core Adapty
- optional AdaptyUI module for Paywall Builder
Docs:
However, in the current Flutter SDK, AdaptyUI-related native dependencies are linked unconditionally, even when the app does not use Builder UI and activates Adapty with withActivateUI(false).
This makes app size significantly larger than necessary.
Version
What we use in our app
We only use the core SDK APIs:
Adapty().activate(...)
getPaywall(...)
getPaywallProducts(...)
makePurchase(...)
We do not use AdaptyUI views / Builder rendering APIs.
We also explicitly keep UI activation disabled:
Why this looks wrong
The docs describe AdaptyUI as optional for Paywall Builder usage.
But in the published Flutter SDK source for 3.15.5, the native dependencies include UI modules unconditionally:
iOS
ios/adapty_flutter.podspec declares:
Adapty
AdaptyUI
AdaptyPlugin
Source:
Android
android/build.gradle declares:
io.adapty:android-sdk
io.adapty:android-ui
io.adapty:android-ui-video
Source:
So even apps that only use core purchase / profile / paywall-fetch APIs still ship Builder-related binaries.
Real size impact from our app
We profiled our release iOS app after aggressively optimizing assets, so the SDK cost is not hidden by large media files.
Final iOS release app size
Breakdown inside the final app
Adapty family: 17.6 MB total
App.framework/App (our compiled app code): 14.8 MB
So the Adapty-related binaries are larger than our own app code.
Adapty-related frameworks inside the final iOS app
AdaptyUIBuilder.framework: 8.8 MB
Adapty.framework: 5.2 MB
AdaptyPlugin.framework: 1.5 MB
AdaptyUI.framework: 0.94 MB
- plus wrapper/logger pieces on top
In practice, the Builder/UI part alone is a very large chunk of the total app size for apps that do not use it.
Why this matters
For apps that build their own paywalls:
- there is no benefit from shipping AdaptyUI / Builder binaries
- runtime flag
withActivateUI(false) does not help binary size
- app store download size and install size are both unnecessarily increased
Expected behavior
There should be a supported way to install core Adapty only in Flutter apps that do not use Builder UI.
Possible solutions
Any of these would help:
- Split the Flutter package into:
adapty_flutter_core
adapty_flutter_ui
- Add a core-only install mode with build-time dependency selection
- On iOS, use subspecs / separate pod products so
AdaptyUI is optional
- On Android, avoid linking
android-ui / android-ui-video unless UI APIs are actually needed
- Publish clear migration guidance for apps using custom paywalls only
Request
Would you consider adding a supported core-only installation path for Flutter?
This would be very valuable for apps that:
- use custom paywalls
- need to keep binary size under control
- do not want to ship Builder UI code they never use
Summary
We use
adapty_flutterfor custom paywalls only, without Adapty Paywall Builder / AdaptyUI rendering.According to the Flutter docs, Adapty consists of:
Docs:
However, in the current Flutter SDK, AdaptyUI-related native dependencies are linked unconditionally, even when the app does not use Builder UI and activates Adapty with
withActivateUI(false).This makes app size significantly larger than necessary.
Version
adapty_flutter: 3.15.5What we use in our app
We only use the core SDK APIs:
Adapty().activate(...)getPaywall(...)getPaywallProducts(...)makePurchase(...)We do not use AdaptyUI views / Builder rendering APIs.
We also explicitly keep UI activation disabled:
..withActivateUI(false)Why this looks wrong
The docs describe AdaptyUI as optional for Paywall Builder usage.
But in the published Flutter SDK source for
3.15.5, the native dependencies include UI modules unconditionally:iOS
ios/adapty_flutter.podspecdeclares:AdaptyAdaptyUIAdaptyPluginSource:
Android
android/build.gradledeclares:io.adapty:android-sdkio.adapty:android-uiio.adapty:android-ui-videoSource:
So even apps that only use core purchase / profile / paywall-fetch APIs still ship Builder-related binaries.
Real size impact from our app
We profiled our release iOS app after aggressively optimizing assets, so the SDK cost is not hidden by large media files.
Final iOS release app size
Runner.app:81.2 MBBreakdown inside the final app
Adapty family:17.6 MBtotalApp.framework/App(our compiled app code):14.8 MBSo the Adapty-related binaries are larger than our own app code.
Adapty-related frameworks inside the final iOS app
AdaptyUIBuilder.framework:8.8 MBAdapty.framework:5.2 MBAdaptyPlugin.framework:1.5 MBAdaptyUI.framework:0.94 MBIn practice, the Builder/UI part alone is a very large chunk of the total app size for apps that do not use it.
Why this matters
For apps that build their own paywalls:
withActivateUI(false)does not help binary sizeExpected behavior
There should be a supported way to install core Adapty only in Flutter apps that do not use Builder UI.
Possible solutions
Any of these would help:
adapty_flutter_coreadapty_flutter_uiAdaptyUIis optionalandroid-ui/android-ui-videounless UI APIs are actually neededRequest
Would you consider adding a supported core-only installation path for Flutter?
This would be very valuable for apps that: