Releases: Purchasely/Purchasely-Android
5.7.0
What's Changed
⚠️ Breaking Changes
minSdkraised to 23 — As announced in the previous release (5.6.0), the minimum supported Android SDK version is now minSdk 23 (Android 6.0), following updates in AndroidX libraries.
Please ensure your application is configured withminSdk 23or higher.
✨ Features
📺 New Display API
Purchasely.display()method — New async API for fetching and displaying presentations in a single call, an alternative to the two-step fetch-then-display pattern- Transition type and height support in
openPlacement— TheopenPlacementaction now supports custom transition types and height ratios
🔗 Sequential Actions
- Sequential action processing — Paywall actions are now processed sequentially, preventing race conditions and ensuring thread-safe execution
- Bypass interceptor for programmatic close —
closeAllScreens()now bypasses the paywall action interceptor when triggered programmatically
🎨 Flow & Presentation Enhancements
- Non-dismissible flow modals and drawers — Flows now support non-dismissible modal and drawer transitions, blocking swipe-to-dismiss and back navigation when configured
💳 Billing
- Google Play Billing version detection and timeout — The SDK now detects the app's Google Play Billing Library version, warns on potential v7+ conflicts, and applies a 30-second timeout to prevent indefinite blocking on version mismatches
⚡ Performance
- Paywall rendering optimized (~25% faster) — Rendering engine improvements resulting in approximately 25% faster paywall display
📦 Version Bumps & Upgrades
- minSdk 23
- Kotlin 2.2.21 with K2 compiler
- OkHttp 5.3.2, Retrofit 3.0.0
- Coil 3.3.0
- Media3 / ExoPlayer 1.9.0
5.6.0
🚧 Upcoming minSDK requirement
We will soon raise the minimum supported Android SDK version of Purchasely to minSdk 23 (Android 6.0), following updates in AndroidX libraries and Google Play Billing, which now also require minSdk 23.
Please ensure your application is already configured with minSdk 23, as this change will be mandatory to integrate future versions of the Purchasely SDK.
The current release still supports minSdk 21.
🚀 New Features
🧩 Bring Your Own Screen (BYOS)
Purchasely now allows you to fully design and render your own paywall or subscription screens while still benefiting from the power of the Purchasely platform.
With Bring Your Own Screen (BYOS), you can:
- Use your own UI, your own components, and your own branding with complete freedom.
- Keep Purchasely’s purchase handling, eligibility checks, analytics, and event tracking fully intact.
- Seamlessly integrate your custom screen using a simple configuration and lightweight rendering contract.
- Access all pricing information, introductory offer eligibility, and localized content to display them exactly as you want.
This feature unlocks full creative control while maintaining a robust and reliable purchase flow powered by Purchasely.
More information in our documentation
🎛️ Advanced Conditional Blocks
You now have full control over when and how UI components appear inside your Purchasely-powered screens.
With Advanced Conditional Blocks, you can dynamically display or hide components based on:
- Introductory Offer eligibility (eligible / not eligible)
- Audience membership (e.g., churned users, new users, high-value customers…)
- Custom user attributes (country, language, subscription state, feature flags…)
- User interactions with other components such as:
- pickers
- tabs
- switches
- buttons
- and more
This allows you to build truly personalized, context-aware, and reactive screens directly from the Purchasely Console still no-code.
🛠 New Debug Screen for Developers
A brand-new Debug Screen is now available to help developers understand exactly what Purchasely is doing behind the scenes, making troubleshooting faster and integrations smoother.
You can activate it in two ways:
-
Scan the Preview Mode QR Code from the Purchasely Console
or -
Enable it directly in your app with:
Purchasely.debugMode = true
Once enabled, you’ll see a powerful information overlay on top of any Purchasely screen, including:
- Screen ID
- Placement ID
- Audience
- A/B test assignment
- SDK version
- Anonymous user ID
- And more to come…
This initial release lays the groundwork — future versions will expand visibility, provide richer context, and make it easier to share diagnostics with Purchasely support.
🐛 Bug Fixes
- Fixed an issue where displaying multiple Purchasely screens simultaneously could lead to incorrect event data or inconsistent user interactions.
- Corrected bottom content padding on devices running SDK ≥ 35 for proper UI layout.
- Resolved inaccurate promotional offer data when using the paywall action interceptor.
📦 Dependency Updates
- Android Gradle Plugin : 8.13.0 → 8.13.1
- Android Library Plugin : 8.13.0 → 8.13.1
- ZXing Core : 3.5.3 → 3.5.4
5.5.1
5.5.0
What's Changed
⚠️ Important: Kotlin 2.0 Minimum
- To compile Purchasely SDK you must use Kotlin 2.0 or higher.
- The SDK now uses Kotlin 2.1, and we plan to upgrade to 2.2 in Q1 2026 to stay aligned with Kotlin’s frequent releases and dependency updates.
💳 Web Checkout with Stripe Support
- Introduced a complete web checkout flow powered by Stripe, including receipt validation and flow tracking.
🔗 Get started with Web Payments for U.S. customers
📅 Event Tracking Enhancements
- Improved reliability and consistency across all event tracking, especially for PRESENTATION_VIEWED.
- Enhanced purchase event tracking with better context preservation.
- Optimized event batching and retry logic to ensure all events are sent, even in cases of network loss or server unavailability.
⚙️ Dependency & Build Updates
- Kotlin: 2.1.21
- Coroutines: 1.10.2
- Serialization: 1.8.1
- Coil: 3.2.0
- Media3: 1.8.0
Reference: https://docs.purchasely.com/changelog/55#/
5.4.0
What's Changed
📱 Target SDK
- The SDK now targets
API 35, ensuring compliance with the latest Google rules and guidelines.
💳 Google Billing v8 Compatibility
- While the SDK continues to use Google Billing
v7.1.1, it is now fully compatible with version8.
🔐 GDPR & Privacy Levels
- The SDK now offers built-in support for handling privacy levels.
- This enables developers to adapt their user experience to different GDPR requirements and to better manage user consent directly within Purchasely.
📐 Safe Areas Handling
- You can now choose whether Purchasely screens should respect the system’s safe areas (e.g. status bar, navigation bar).
- This provides greater flexibility for developers who want tighter control over screen layout and presentation.
↩️ Introducing PLYCloseReason
- When intercepting a close action, you can now identify whether it was triggered by the close button or a system back gesture.
🛠 Fixes & Improvements
- Fixed a bug where cached presentations with placement IDs were not being properly invalidated.
- Enhanced deeplinks handling and presentations display.
- Fixed an Out of Memory issue in the
DiagnosticManager. - Minor performance improvements and codebase refinements to ensure smoother integration and runtime stability.
5.3.4
Improvements
- Invalidate presentation cache when fetching again
- Remove deep link from queue right away when opened with the SDK
- Start new session from background only if SDK is already started
5.3.3
5.3.2
5.3.1
5.3.0
What's New
🚀 Introducing Flows
We’re introducing Flows, a powerful new feature that lets you orchestrate personalized, multi-screen journeys directly from the Purchasely Console. Whether you're onboarding users, promoting offers, or guiding upgrades, Flows are tailored to user behavior and lifecycle stages.
Integration is flexible and developer-friendly:
- Use
display(context: Context)on a pre-fetchedPLYPresentationto launch the Flow in a dedicated Activity. - Or use
getFragment()to retrieve a Fragment instance and take full control over navigation by managing it within your app’s back stack.
⚠️ Important
Flows is currently available in beta and accessible only to selected customers.
If you're interested in early access, please reach out to the Purchasely team.
🖥️ Enhanced Presentation Display API
A new display(context: Context) method has been added to PLYPresentation objects, enabling immediate rendering of pre-fetched presentations.
⚠️ Important
This API is required when using the Flows feature. It ensures presentations are displayed according to their designated mode (e.g. push, modal, fullscreen, etc.) and handles the Flow's lifecycle and navigation state seamlessly
🎨 Asset Prefetching for Seamless UX
To deliver smoother transitions, the SDK now automatically preloads image assets prior to presenting a screen, minimizing perceived latency and visual flickering.
🔧 Stability & Performance Improvements
This release includes various stability improvements, internal refinements, and minor bug fixes to enhance overall reliability and developer experience.