Kinvey SDK Download

Version 3.8.1 - Aug 25, 2017
We recommend you use our CDN to include the latest version.
or download the library directly


Want to see how the rest of your backend is evolving? Check out the timeline.

Our SDKs are now open source! If you'd like to contribute code, suggest improvements or just take a look at how things work, check out the source on github.

- Aug 25, 2017

  • Fixed: Kinvey.initialize() fixed to resolve with either an instance of Kinvey.User or null.

- Aug 24, 2017

  • Added: Requests are logged using loglevel. Please refer to the Troubleshooting Guide for more information.
  • Added: Support for multiple MIC providers in a single app. The SDK adds a micId to the client_id value when it makes a request to authenticate with Mobile Identity Connect.
  • Added: Replace native node modules with npm packages.
  • Fixed: In previous SDK versions, the active user was read and stored asychronously using the storage adapter used to cache data loaded from the datastore. This caused us to make the initialization of the SDK asychronous to read the active user from storage. Some SDK environments do not work well with an asynchronous initialization process. To fix this problem each SDK can now override the storage location to make this process work correctly for that particular SDK. The Titanium SDK will store the active user in bencoding.securely if it is installed and will fallback to Ti.App.Properties. If you have installed the bencoding.securely module then you will also need to provide an encryptionKey to encrypt and decrypt the active user.
  appKey: '<appKey>',
  appSecret: '<appSecret>',
  encryptionKey: '<encryptionKey>' // Key must be the same everytime. This is only required for the bencoding.securely module.
  • Fixed: Default to removing a user with hard equal to false. Please refer to the User Guide for more information.
  • Fixed: Throw any errors encountered when trying to load a storage adapter use to cache data loaded with a data store.
  • Deprecated: Kinvey.initialize() has been deprecated. Please use Kinvey.init() instead. Kinvey.init() does not return a promise.

Warning If you start using Kinvey.init() and have been using Kinvey.initialize() you will not have an active user anymore. You will need to migrate the active user to the new storage location by continuing to use Kinvey.initialize(). After the active user has been migrated you can replace Kinvey.initialize() with Kinviey.init(). You can also just logout using Kinvey.User.logout() and ask the user to login again.

// --------------------------------------------------
// Example code snippet on how to migrate active user.
// ---------------------------------------------------

var promise = Promise.resolve();

// Initialize the SDK using Kinvey.init()
  appKey: '<appKey>',
  appSecret: '<appSecret>'

// Check if you have an active user.
if (!Kinvey.User.getActiveUser()) {
  promise = Kinvey.initialize({
    appKey: '<appKey>',
    appSecret: '<appSecret>'

  .then(function() {
    // ...

- Jul 8, 2017

  • Fixed: Allow special characters ('.', '$', '~', '>', '<', '!', '@') to be in the _id for an entity. #134
  • Fixed: Import es6-promise to prevent Promise Undefiend errors on environments that do not have a native promise implementation. #135
  • Fixed: Errors will now show the message property properly when logging errors to the console. #136
  • Fixed: The database connection is closed when the associated database operations have completed. #11
  • Added: usePopupClass() as a static function to the User class for registering a popup class to be used for MIC authentication.
  • Added: operation property to results returned when pushing sync items to the backend. The property will either be equal to Kinvey.SyncOperation.Create, Kinvey.SyncOperation.Update, or Kinvey.SyncOperation.Delete.
var store = Kinvey.DataStore.collection('books', Kinvey.DataStoreType.Sync);
var query = new Kinvey.Query().equalTo('title', 'Kinvey');
  .then(function(response) {
    // response.count contains the count of books removed matching the query
    return store.push();
  .then(function(results) {
    // Results is an array of responses from the pushing the sync items.
    // Each result object now contains an operation set to Kinvey.SyncOperation.Delete
  • Changed: restore() static function on the User class to throw an error whenever it is called. This function required the master secret for an application. We strongly advise not to do this in your application.
  • Changed: All toJSON() functions have now been replaced by toPlainObject(). The returned result is the exact same.
  • Changed: save(), create(), and update() on datastore instances to no longer accept an array of entities. See the example below to see how to save an array of entities.
var books = [{ name: 'book1' }, { name: 'book2' }];
var store = Kinvey.DataStore.collection('books');
var promises = [];

// Loop through each of the books and save them one by one.
// You can now reference a book easily in the event an error
// occurs when saving a book.
books.forEach(function(book) {
  var promise =
    .catch(function(error) {
      console.log('Error saving book ' +;

// Using a third party library wait for all the promises to complete
  .then(function(books) {
    // ...
  • Changed: remove() and removeById() on datastore instances to now return the count of entities removed and not the actual entity removed.
var store = Kinvey.DataStore.collection('books');

// Remove books using a query
var query = new Kinvey.Query().equalTo('title', 'Kinvey');
  .then(function(response) {
    // response.count contains the count of books removed matching the query

// Remove a book using an id
  .then(function(response) {
    // response.count will equal 1 if the book was removed or 0 if the book was not removed
  • Removed: init() static function on Kinvey namespace. This was deprecated with v3.3.3.
  • Removed: baseUrl, protocol, and host properties on a client instance. These were deprecated with v3.0.0.
  • Removed: syncCount() and purge() on CacheStore and SyncStore instances. These were deprecated with v3.2.0.
  • Removed Kinvey.Users and Kinvey.UserStore. These were deprecated with v3.2.0.

- Apr 13, 2017

  • Share active user information with 1.x SDK. Just use version 3.4.5 to share active user information. No changes are needed to your 3.x application.
  • Use query to push a subset of sync entities to the backend. #120
  • Add more tests for query. #121
  • Allow multiple sync push operations to be in progress at the same time for difference collections.. Only one sync push operation is allowed to be in progress for the same collection. This fixes an issue caused with #117 that only allowed one sync push operation to be in progress regardless of the collection. #123

- Mar 27, 2017

  • Don't perform a sync push operation while one is already in progress. #117
  • Use tls: true by default when fetching files. #118
  • Catch a NotFoundError thrown when trying to store an active user in the cache. #119

- Mar 16, 2017

  • Clone body of CacheRequest. #112
  • Add back es6-promise. #113
  • Add method to remove user by id. #114

- Feb 24, 2017

  • Correctly refresh MIC sessions. #104
  • Add missing error objects. #105
  • Fixed a bug that prevented files from being uploaded to GCS. #106
  • Add more unit tests for user logout. #110
  • Fixed push notifications. #3 #7

- Jan 25, 2017

  • Add User.lookup() API to perform user discovery. #96
  • Fix a bug that causes any requests sent to the backend after updating a user to respond with a 401 status code. #101

- Dec 14, 2016

  • Bugfix: Fixed push notifications on iOS. Since ti.cloudpush is only supported on Android, it will now be ignored for iOS.

  • Bugfix: Fixed a compilation problem due to changes in RxJS - a library used by the Kinvey SDK (details). The Kinvey SDK is now compiled with an older version of RxJS, which avoids the problem.

- Dec 13, 2016

  • Bugfix: Require ti.cloudpush module correctly to fix push notifications on the Android platform.

- Oct 26, 2016

  • Bugfix: Import UserStore from correct path. Kinvey.UserStore is now not undefined.
  • Bugfix: Add missing group function to data stores.

- Oct 6, 2016

  • Bugfix: Return entity that was removed with removeById rather then the object { count: 1, entities: <entity> }.

- Oct 6, 2016

  • Enhancement: Added the ability to do interactive push notifications.
  • Enhancement: Default apiHostname protocol to https: if one is not provided.
  • Bugfix: Fix push notifications.
  • Bugfix: Prevent delta fetch from loading all entities when they are not needed.

- Aug 30, 2016

- Apr 20, 2016

  • Fixed sync bug that prevented entities from being added to the sync table to be synced at a later time.

- Mar 29, 2016

  • Added adapters for http, popup, and device.

- Mar 25, 2016

  • Bug fixes.

- Mar 25, 2016

  • Initial release.

Download Older Versions

We recommend using the latest version.

Version Download Date
3.8.1 Download Aug 25, 2017
3.8.0 Download Aug 24, 2017
3.5.2 Download Jul 8, 2017
3.4.5 Download Apr 13, 2017
3.4.4 Download Mar 27, 2017
3.4.2 Download Mar 16, 2017
3.4.1 Download Feb 24, 2017
3.3.5 Download Jan 25, 2017
3.2.5 Download Dec 14, 2016
3.2.4 Download Dec 13, 2016
3.2.3 Download Oct 26, 2016
3.2.2 Download Oct 6, 2016
3.2.1 Download Oct 6, 2016
3.0.3 Download Aug 30, 2016
3.0.0-beta.17 Download Apr 20, 2016
3.0.0-beta.13 Download Mar 29, 2016
3.0.0-beta.11 Download Mar 25, 2016
3.0.0-beta.10 Download Mar 25, 2016