adhub
A Flutter package that simplifies ad integration with a unified API for banner, interstitial, and rewarded ads.
0.2.7
What this package is like to depend on
Last release today
22 Aug 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 28 of 28 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
28 releases · first in 2026
28 releases in the last 12 months
see the full history below
Release timeline
28 releases · Jan 2026 to Aug 2026Releases
latest 28-
0.2.722 Aug 2026Release notes
Open source →- Chore: Bumped Android toolchain (AGP 9.3.1, Gradle 9.7.1, Kotlin 2.4.10,
compileSdk37, Java 21) and AppLovin/Unity mediation adapters to latest. Consuming apps now needcompileSdk >= 37and JDK 21. - Fix:
ios/adhub.podspec's version was stuck at0.2.3for three releases, out of sync withpubspec.yaml. Now kept in sync. - Fix: consuming apps on Flutter 3.47+/Xcode 26+ may hit iOS build failures unrelated to any dependency version - deployment target below 15.0, dynamic
use_frameworks!conflicting with AppLovin/Meta/Unity's static xcframeworks, OneSignal's SPM+CocoaPods double-embed, and Xcode 26's stricter explicit-module header checks against Google Mobile Ads. See commitffb89d9for the exact fixes. - Fix:
android/build.gradle.ktsapplied the Kotlin Gradle Plugin via the legacyid("kotlin-android")alias, which Flutter now warns "will cause build failures in future versions of Flutter." Switched to the fully-qualifiedid("org.jetbrains.kotlin.android").
- Chore: Bumped Android toolchain (AGP 9.3.1, Gradle 9.7.1, Kotlin 2.4.10,
-
0.2.620 Aug 2026Release notes
Open source →- Fix: Android notification tray icon now uses
@drawable/ic_stat_notify_defaultinstead of@mipmap/ic_launcher. Android strips all color from the tray icon and reads only the alpha channel, so a full-color launcher icon rendered as a solid white blob on stock/near-stock Android (confirmed on Motorola) or, on some OEM skins like Samsung One UI, silently fell back to showing the full-color app icon instead - neither is correct. Every consuming app must now provide its ownic_stat_notify_defaultdrawable (white silhouette, transparent background, atdrawable-{m,h,xh,xxh,xxxh}dpi) and a matchingcom.google.firebase.messaging.default_notification_iconmeta-data entry in its ownAndroidManifest.xml- mirrors the convention OneSignal itself used (ic_stat_onesignal_default).
- Fix: Android notification tray icon now uses
-
0.2.519 Aug 2026Release notes
Open source →- Fix:
HouseNativeAd(the self-promo fallback shown when a Google/AppLovin native ad fails to load) now matchesGoogleNative/ApplovinNativestyling - usesmargin ?? MainJson.nativeMargin(previously a hardcodedEdgeInsets.all(10), ignoring both the app-wide default and any per-slot override) andMainJson.nativeColor/nativeBorderColorat radius 6 (previously its own theme-brightness-derived colors at radius 12). Intentionally still excludes the "Ad" badge and the 270-402 height constraint used by the other two, since its own icon+title+stars+description+button layout doesn't fit that. - Fix:
HouseNativeAd's title/description text and logo asset could render as white-on-white in a dark-themed app - their light/dark choice was driven byTheme.of(context).brightness(the app's ambient theme) instead of the card's actual background color (MainJson.nativeColor, which defaults to white independent of app theme). Now derived viaThemeData.estimateBrightnessForColor(MainJson.nativeColor)so text always contrasts against the real background.
- Fix:
-
0.2.417 Aug 2026Release notes
Open source →- Fix:
android/build.gradle.kts'skotlinOptions { jvmTarget = ... }block used the deprecated Kotlin Gradle Plugin DSL, which newer Kotlin/AGP toolchains (as found rolling this out to a consuming app) treat as a hard build error, not just a warning -flutter build apkfailed entirely with "'var jvmTarget: String' is deprecated". Replaced with the modernkotlin { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } }DSL.
- Fix:
-
0.2.317 Aug 2026Release notes
Open source →- Fix: AppLovin interstitial/rewarded/banner loaders no longer crash when
applovin_fullscreen/applovin_reward/applovin_banneris missing from an app's remote config - they now fail gracefully viaonFailed()instead of force-unwrapping a null ad unit ID into the native SDK. - Feat: AppLovin Native ad support - new
ApplovinNativewidget (ad_config.applovin_native), wired into theNativeAddispatcher asscreenConfig['native'] == 1, alongside the existing Google (0) option. MatchesGoogleNative's visual styling (MainJson.nativeColor/nativeBorderColor/nativeMargin, rounded border, "Ad" badge) so native ads look identical regardless of which network served them. Falls back to the House Ad system on load failure, same as every other AppLovin/Google ad widget. - Fix: AppLovin banner/native ad views no longer mount before
AppLovinMAX.initialize()completes - newAppLovinInit(mirroringGoogleInit'sreadyCompleter) is now awaited by all 4 AppLovin loaders, fixing an "Attempted to load ad before SDK initialization" failure. - Fix:
ApplovinBannerrendered at zero height until its ad loaded, butMaxAdView(a platform view) only starts loading once it has real layout constraints - it could never load. Now renders at full banner height as soon as the SDK is ready. - Chore: adhub is now a real Flutter plugin (was pure-Dart) - added
android/build.gradle.kts(declares AppLovin/Meta/Unity AdMob mediation adapters +play-services-ads),android/src/main/AndroidManifest.xml,android/src/main/kotlin/com/adhub/adhub/AdhubPlugin.kt,ios/adhub.podspec(declaresGoogleMobileAdsMediationAppLovin/Facebook/Unitypods, iOS 15.0+),ios/Classes/AdhubPlugin.swift, and registered both platforms underflutter.plugin.platformsinpubspec.yaml. Required so consuming apps' AdMob mediation can actually route to AppLovin/Meta/Unity as bidding/waterfall sources.
- Fix: AppLovin interstitial/rewarded/banner loaders no longer crash when
-
0.2.211 Aug 2026Release notes
Open source →- Fix:
AdhubFcm.initialize()andmaybeReRequestPermission()no longer block app startup - Firebase init, the notification permission prompt, and topic subscriptions used to be awaited before the app's content was shown, adding 1.5-2s to every launch. They now run non-blocking in the background, mirroring the existingGoogleInit/AppLovinMAXpattern.
- Fix:
-
0.2.111 Aug 2026Release notes
Open source →- Fix:
AdhubFcm.enableNotifications()andAdhubNotifications.enableNotifications()now actually check and request OS notification permission instead of assuming it was already granted - if the OS already refused before, shows adhub's existing settings-deeplink dialog. Both now returnFuture<bool>(previouslyFuture<void>) reporting whether the user actually ended up opted in.
- Fix:
-
0.2.011 Aug 2026Release notes
Open source →- Feat: Firebase Cloud Messaging (FCM) support via a new
firebaseOptionsparam onAdhub- FCM is now the primary push channel, with OneSignal kept installed as a fallback for apps not yet configured with Firebase. Handles topic subscription (broadcast + per-app), foreground/background message display, notification tap deep-linking, and a re-ask flow for denied OS notification permission. - Feat: Native ad styling is now centralized -
Adhub/MainJsonexposenativeBorderColorandnativeMargin(alongside the existingnativeColor), andGoogleNativenow renders a rounded border plus a unified "Ad" badge overlay for both Android and iOS. - Feat:
NativeAdaccepts an optional per-callmarginoverride on top of the app-wideMainJson.nativeMargindefault. - Breaking:
AdhubNotifications.isOptedIn,enableNotifications(), anddisableNotifications()are nowFuture-based (previously synchronous) since they may need to check/update FCM topic subscription state. - Fix:
GoogleNative's loaded native ad is now disposed on widget unmount - previously leaked native ad memory every time a native ad slot recycled (e.g. inside aListView.builder). - Chore: Added
firebase_core,firebase_messaging,flutter_local_notifications, andpermission_handlerdependencies; upgradedonesignal_flutterto ^5.6.7.
- Feat: Firebase Cloud Messaging (FCM) support via a new
-
0.1.311 Jul 2026Release notes
Open source →- Chore: Upgraded dependencies -
dioto ^5.10.0,package_info_plusto ^10.2.0,onesignal_flutterto ^5.6.4.
- Chore: Upgraded dependencies -
-
0.1.219 Jun 2026Release notes
Open source →- Chore: Upgraded dependencies -
google_mobile_adsto ^9.0.0,applovin_maxto ^4.6.4,app_tracking_transparencyto ^2.0.7,onesignal_flutterto ^5.6.2.
- Chore: Upgraded dependencies -
-
0.1.122 May 2026Release notes
Open source →- Fix: House ad banner and native text styles no longer inherit the host app's theme (shadows, fonts, etc.) — ads now look consistent across all apps.
-
0.1.021 May 2026Release notes
Open source →- Feat: House ads system — show your own apps as fallback banner and native ads when real ads fail.
- Feat: SVG branding (logo + name) in house ad widgets with dark/light mode support.
- Fix: Banner and native ads now load correctly on the home screen.
- Fix: Several stability improvements and crash fixes.
- Improvement: All dialogs now support dark and light theme automatically.
- Docs: Added Google AdMob test IDs for Android and iOS to README.
-
0.0.1616 May 2026Release notes
Open source →- Fix: Implemented Google UMP (User Messaging Platform) consent flow before MobileAds initialization — resolves AdMob "Consent requirement: No CMP" and "Low coverage" policy violations.
- Fix: ATT (App Tracking Transparency) on iOS now runs before UMP consent and MobileAds init — correct order per Google's guidelines.
- Chore: Removed duplicate ATT request from the post-init callback; ATT is now handled exclusively in
BaseClass.initAdNetworks. - Fix: OneSignal notification permission is now requested only once — if the user taps "Don't Allow", the prompt will not appear again on subsequent launches.
- Fix: Tapping "Rate" on Android now opens the Play Store listing directly when the in-app review API is unavailable (debug build, quota exhausted, etc.).
-
0.0.1507 May 2026Release notes
Open source →- Fix: App Tracking Transparency (ATT) dialog now reliably appears on the very first launch on iOS.
- Fix: ATT request is now made before OneSignal notification permission to avoid iOS silently dropping the dialog when two system permission prompts collide.
- Fix: Added
trackingAuthorizationStatuscheck — ATT is only requested when status isnotDetermined, preventing unnecessary calls on subsequent launches. - Improvement: Added a 500ms settle delay before presenting the ATT dialog to ensure the root view is fully rendered when iOS shows the prompt.
-
0.0.1429 Apr 2026Release notes
Open source →- Refactor: Extracted all dialog UI definitions into a centralized utility class
AdhubDialogsto improve maintainability and reduce main file size. - Optimization: Replaced legacy inline dialog functions with clean calls to static utility methods.
- Refactor: Extracted all dialog UI definitions into a centralized utility class
-
0.0.1329 Apr 2026Release notes
Open source →- Documentation: Simplified README and updated installation instructions.
- Fix: Quick fixes and stability improvements.
-
0.0.1224 Apr 2026 -
0.0.1123 Apr 2026Release notes
Open source →- Cleaned up console output by removing unnecessary
print(),debugPrint(), andLoggerstatements throughout the package. - Removed
loggerpackage dependency. - Upgraded dependencies to latest versions (
google_mobile_ads: ^8.0.0,package_info_plus: ^10.1.0,onesignal_flutter: ^5.5.1).
- Cleaned up console output by removing unnecessary
-
0.0.1018 Apr 2026Release notes
Open source →- Fix: Added
GoogleInit.readyCompleter — all Google ad loaders now await AdMob init before loading. Splash screen ads now work correctly with non-blocking startup.
- Fix: Added
-
0.0.918 Apr 2026Release notes
Open source →- Performance:
MobileAds.instance.initialize()is now non-blocking to eliminate 2-3 second startup delay caused by waiting for all mediation adapters (including AppLovin) to finish.
- Performance:
-
0.0.818 Apr 2026Release notes
Open source →- Performance:
AppLovinMAX.initialize()is now non-blocking (fire-and-forget) to eliminate 4-5 second startup delay. - Fix: Added null-safe
?? falsecheck onappLovinad network flag to prevent crashes when the key is missing.
- Performance:
-
0.0.706 Apr 2026Release notes
Open source →- Hotfix: Prevented a crash inside
initAdNetworksby checking the app version and checking for forced update explicitly before execution.
- Hotfix: Prevented a crash inside
-
0.0.606 Apr 2026Release notes
Open source →- Hotfix: resolved a compilation error by ensuring
<bool>return type safety on OneSignal'sisOptedInmethod.
- Hotfix: resolved a compilation error by ensuring
-
0.0.506 Apr 2026Release notes
Open source →- Added fallback logic to show the update dialog with
appUrlif the specified app version isn't found in JSON. - Optimized
RateUsdialog to not repeatedly show in the same session after the user interacts with it. - Added
AdhubNotificationsutility class to easily allow developers to toggle OneSignal push notifications on and off for the end-user. - Upgraded underlying package dependencies to the newest stable versions.
- Added fallback logic to show the update dialog with
-
0.0.413 Mar 2026Release notes
Open source →- Major refactor of
Adssingleton (reduced 1200+ lines of duplicate code). - Unified ad type indexing (0: Google Inter, 1: Google Rewarded, 2: Google Rewarded Inter, 3: AppLovin Inter, 4: AppLovin Rewarded).
- Added AppLovin Rewarded ad support.
- Added descriptive logging for ad lifecycle events.
- Removed
GlobalBannerAd(logic unified into screen-level banners).
- Major refactor of
-
0.0.324 Feb 2026Release notes
Open source →- Added multi-platform support (Android & iOS).
- Stability improvements and bug fixes.
-
0.0.220 Jan 2026 -
0.0.117 Jan 2026