Android SDK release notes

Minimum version: Supports Android 2.3.3 (API Level 10) and above. Push notifications and geolocation require Google Play services 8.3.0+.

SDK file size: ~300kb

New releases and release notes will be posted on GitHub.


October 19, 2017

View release notes on GitHub


September 21, 2017

View release notes on GitHub.


July 12, 2017

View release notes on GitHub.


View release notes on GitHub.


April 24, 2017

  • Fixed proguard errors.


April 14, 2017

  • App Inbox images and custom data field.
  • Chain to existing message.
  • Support HTML survey template (coming soon).
  • Fixed merging manifest and proguard error.
  • Other bug fixes and enhancements.


March 28, 2017

  • Renames Newsfeed to Inbox.
  • Adds automatic manifest merging in aar for easier setup.
  • Bugfixes and enhancements.


March 15, 2017

  • Adds method to specify device geolocation.
  • Split SDK and UI Editor into two separate artifacts.
  • Bugfixes and enhancements. 


January 30, 2017

  • Adds support for Firebase Cloud Messaging.
  • Bugfixes and enhancements.


December 19, 2016

  • Adds support for rich push notifications with images.
  • Adds trackAllAppScreens feature.
  • Improves retrieval of GCM token with 3rd party SDK's.
  • Avoids connection to development server if start response fails.
  • Fixes a java verification issue when running unit tests with Roboelectric and Leanplum.
  • Additional bug fixes and code improvements.


November 21, 2016

  • Adds control group tracking for in-app messages.
  • Adds access to raw message meta data.
  • Adds support to defer message displaying for certain activities.
  • Improves handling of track when called before start.
  • Several internal maintenance and bug fixes.

October 07, 2016

  • Fixes a bug that could lead to unwanted traffic on the Leanplum API.
  • Removed an internal error log message that could be triggered on certain push messages.

October 05, 2016 - Fixes an issue that prevents geofencing from working.


October 3, 2016

  • The Leanplum SDK now collects the device location only if your app already has location permission from the user. To completely disable sending location to Leanplum, call Leanplum.disableLocationCollection() before Leanplum.start().
  • Added support for the Leanplum UI Editor.
  • Fixed an issue with overriding resources.
  • Fixed an issue where pending actions should not be executed until Leanplum.start.
  • Added possibility for remote logging.
  • Other Bugfixes.

Location tracking

Our SDK will now only collect the device's location if your app has explicit location permission from the user.

And, if you want, you can completely disable sending a user's location. To do so, be sure to call disableLocationCollection before start.


Leanplum UI Editor support

You can now use the Leanplum UI Editor with our newest Android SDK. Editing your app's UI, A/B testing different designs, and more are possible through the Leanplum dashboard.

To enable the UI Editor, be sure to call allowInterfaceEditing before start:


After enabling this in your code, you'll need to sync your interface using a development device in the dashboard.  You can then make changes in the Leanplum UI editor.  See how to get started here.


June 29, 2016 - Allows users to explicitly sync variables and message templates from the SDK. Improves logging and stability.


May 6, 2016 - Fixes an issue when evaluating matching triggers for in-app messages.


April 4, 2016 - Improves stability of Leanplum.start in the application class and geofence-triggered push notifications in production mode. Improves GCM registration error logging.


March 16, 2016 - Improves Leanplum.start latency. Fixes a crash when registering a test device in the background. Fixes an OpenURL error when no Activity is present.


March 7, 2016 - Fixes a rare issue when in-app messages change while waiting to be displayed. Adds error logging for invalid resource syncing patterns.


March 1, 2016 - Fixes an issue where locally triggered push notifications may not display. Fixes the accuracy of certain in-app message timing limits. Fixes a bug where user IDs and device IDs may get corrupted or set to an IP address. You can now call Leanplum.start in your application class instead of the main activity.

Note: You will have to update your AndroidManifest.xml file (as explained here) to enable locally triggered push notifications.


February 2, 2016 - Fixes an issue with duplicate layout inflation when resource syncing is not used. Migrates the push notification service to use GCMReceiver and GcmListenerService. Adds a method to manually set the GCM registration ID for push notifications.

Note: You will have to update your AndroidManifest.xml file (as explained here) to reflect the new services and receivers.


December 4, 2015 - Various fixes and improvements. Geofencing requires Google Play Services v8.1 and higher.


November 17, 2015 - Supports the new standalone Newsfeed messaging channel. To send a new message, go to Messaging, and select Newsfeed Message as a Message Type. Geofencing now supports Google Play Services 5.0 and higher. Fixes an issue where images within push open actions might not be downloaded. Improves general exception handling and reliability of the SDK. Adds an option in LeanplumPushService to set the default callback Activity class when a push notification is opened.


Fixes a rare concurrency issue when setting user attributes.


Fixes bug where custom in app messages duplicated instead of replaced Leanplum versions with the same name. Fixes bug handling nested files in in-app-message templates. Fixes geofence detection. Fixes md5 device identifier calculation. Fixed an exception that may be thrown when a push notification is received when the app is not running and the Context has not been set.


Adds support for triggering in-app messages on the nth occurrence of a trigger. Fix 1.2.13 file download regression. Fix Android concurrency exception during resource syncing. Don't require ".gcm" to be appended to the package for GCM push permissions. Allow customization of notification ID.


Supports user attribute lists and dates. Fixes an issue with currency conversion with in-app purchases. Fixes a memory leak if not all activities' lifecycles are tracked by Leanplum.


Removes the network delay before running push notification open actions. Supports in app message triggers on user attributes and event parameters, and personalized fields based on the message trigger. Improves stability for devices with an invalid Google Play Services setup.


Improve ProGuard compatibility. API change: Rename Leanplum.DeviceIdMode to LeanplumDeviceIdMode. Fix issue with triggered push notifications with delays of more than 24 days.


Improve ProGuard compatibility. Push notification customizer API change: Rename the interface LeanplumPushService.NotificationCustomizer to LeanplumPushNotificationCustomizer.


Adds syncResourcesAsync to prevent resource syncing from blocking the main thread. Improves stability with hundreds of resource files.


Supports Geofencing. Geofencing requires additional setup. Refer to Help > Docs > Android for more details. Proactively checks the app manifest to make sure push notifications are setup properly.


Fixes rendering issue for Center Popup messages on Android versions below 4.1. Fixes a compatibility issue with Segment.


New Web Interstitial message type. Improves async performance. Allows you to customize the event name for in-app purchases. Fixes compatibility with other push notification providers. The setup has changed for this version. You now need to call LeanplumPushService.setGcmSenderId before calling Leanplum.start to enable push notifications.


Fixed an issue with getting the push token in Android Lollipop. Fixed a bug with determining the number of times a message has occurred. Supports background events.


Removes requirement of having Google Play Services linked to your app for push notifications to work. Other stability improvements.


Fixes an issue with triggering messages on states. Adds method to track in-app purchases with receipt validation (Leanplum.trackGooglePlayPurchase).


Fixes an issue in the Center Popup message format where certain images may not round corners consistently with the background.


Allows you to retrieve the variants from the SDK. Supports triggering messages based on the app coming to the foreground. Supports null default values for variables.


Includes Android messaging and push notifications. Adds Color variables. Supports background sessions.


Fixes an issue with detecting layout. files while syncing. Adds an option to use the advertising ID as the device ID, or to use a custom device ID. You can also install the SDK with Gradle or Maven.


Removed registration prompt. You can register devices from the dashboard now.


Stability improvements. Improves request batching in development mode.


Fixes an exception that can occur in Android 3.0-3.2. Improve validation and error messages in the SDK. Fixes an issue that may cause some Robolectric tests to fail.


Fixes an issue cuased by the changes in 1.1.10 that prevents variables using the static @Variable annotation from being updated.


Fixed a memory leak that can occur when using the @Variable annotation. Fixed an issue with loading XML drawables. Improved logging. Merged Leanplum+ActionBarSherlock into the Leanplum SDK to simplify installation.


Extends support to Android 2.2 devices, although 2.3 is recommended for best performance.


Added method in SDK to switch between using the hashed MAC address and the ANDROID_ID for device IDs. Optimized performance when saving data locally on the device. Added method to force variables to update after the app has started.


Improves resource syncing. Allows you to specify regular expression patterns for including/excluding files. Supports swapping out layout files from fragments using the LeanplumInflater class.


Improves stability, error messages, and logging in the SDK. Added compatibility methods for Google Analytics and Flurry. Adds new activity superclasses. Note: All activity classes have been moved to com.leanplum.activities.


Fixes a rare exception that may occur when multiple threads are manipulating callbacks at the same time.


Added ability to update the user ID after it's already set, and ability to force show or hide the registration prompt. Also, fixes a bug that prevents certain callbacks from being fired while the device is offline. Improves error handling and stability while multithreading.


New setUserAttributes method, ability to override the email registration prompt, batch file uploading, and variable encryption on the device.


Fixes a rare exception that can be thrown when a view is loaded.


Performance improvements.


Fix an issue with Device Registration and Update Available dialogs that can occur in certain apps.


Adds base classes for fragment activities.


Fixes various bugs and improves logging in the SDK.


Removes some of the required permissions for the SDK to work.


Was this article helpful?
Have more questions? Submit a request