Kinvey SDK Download

Version 7.0.0 - Oct 25, 2021
We recommend you use NPM to install the latest library.
npm install kinvey-angular-sdk


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.

Breaking Change: Starting with our 4.0.0 release we have renamed the package from kinvey-angular2-sdk to kinvey-angular-sdk. You can find out more information by taking a look at the Getting Started Guide.

- Oct 25, 2021

  • Unset WebSQL as a default storage. #627

- Jul 30, 2021

  • Introduce MFA functionality. #593
  • Improve the login process. #592
  • Change the default API version to 6. #602
  • Implement async SessionStore API. #598
  • Do not use the authToken in me() method. #596
  • Remove the option to set active user on signup. #616

- Apr 12, 2021

  • Fixed: The pull function returns an error with Auto store when called with autoPagination: true and there are no items. #590

- Apr 8, 2021

  • Fixed: Auto DataStore disregards skip and limit and fetches up to 10000 items per call. #581

- Jul 22, 2020

  • Multi Insert validations. #569

- Jul 10, 2020

  • Introducing the Multi Insert functionality.
  • Update the default KCS api version to 5. #566
  • Add lastLoginTime to Kinvey metadata. #562

- Jul 22, 2019

  • Fixed: Added validation for User signup(). #430
  • Fixed: Added signup() as an instance function on the User class. #431

- Jul 5, 2019

  • Fixed: Change auto protocol from https to https:. #423
  • Fixed: Verify arguments for query.ascending() and query.descending(). #424
  • Fixed: Verify arguments for query.exists(). #425
  • Fixed: Verify arguments for query.notContainedId(). #426
  • Fixed: Verify arguments for query.notEqualTo(). #427
  • Fixed: Verify arguments for query.or(), query.and(), and query.nor(). #428

- Jun 19, 2019

  • Fixed: Added a default version to all MIC API requests. #415

- Jun 7, 2019

  • Fixed: A TimeoutError is will be thrown when a request times out.
  • Enhancement: Added support for mulit-insert to the Network datastore type. #414
import { NgModule } from '@angular/core';
import { KinveyModule } from 'kinvey-angular-sdk';

// You will need to set the API version to 5 when you initialize the SDK
  imports: [
      appKey: '<appKey>',
      appSecret: '<appSecret>',
      apiVersion: 5

export class AppModule { }
import { Component } from '@angular/core';
import { DataStoreService, DataStoreType } from 'kinvey-angular-sdk';

export class DataStoreComponent {
  collection: any;

  constructor(datastoreService: DataStoreService) {
    this.collection = datastoreService.collection('Books', DataStoreType.Network);

  // Insert an array of books using the new multi insert API
  save(docs: any) {

- May 31, 2019

  • Fixed: init() returns some missing properties that were returned in v3.x. #411
  • Enhancement: Add Auto datastore type. This new datastore type prioritzes using the network first. If a network connection is not available then it will fall back to using the local cache until a network connection is re-established. #409
  • Deprecated: We have deprecated the Cache datastore type. You should now use the Auto datastore type to instead.
  • Deprecated: We have deprecated the use of initialize() to initialize the SDK. You should use init() instead.

- May 3, 2019

The sdk has been updated to allow you to use dependency injection to inject Kinvey services into your modules. You can find out more information by taking a look at the updated Getting Started Guide.

  • Enhancement: We have added services that can be used with the Angular dependency injection system. Take a look at the guides to explore each of the new services and how they are to be used.
  • Enhancement: We have added support for AOT. If you follow our Getting Started Guide you will be able to use AOT.
  • Changed: All errors are available under the Errors namespace. Take a look at our Troubleshooting Guide on how to use errors.

- Feb 12, 2019

  • Fixed: Prevent duplicate Live Service messages after a reconnection is made to PubNub. #389

- Nov 2, 2018

  • Enhancement: Allow loginWithMIC() to work properly when viewing a NativeScript application with the NativeScript Preview App. #377
  • Fixed: Use default AuthorizationGrant if null is provded to loginWithMIC(). #372
  • Fixed: Merge _socialIdentity properly with response from /me endpoint. #374 #375
  • Fixed: Return the correct error message if Files.findById() is called without a file id. #373

- Oct 4, 2018

  • Fixed: Mobile Identity Connect now works on Microsoft Edge and IE browsers. #364

- Oct 3, 2018

  • Fixed: Send custom properties to the backend using the x-kinvey-custom-request-properties header when creating an entity. #360

- Sep 20, 2018

  • Fixed: Update rxjs to 6.x. #353
  • Enhancement: Add new defice info header. #343

- Aug 2, 2018

  • Fixed: Added instanceId?: string to ClientConfig TypeScript definition. #341
  • Fixed: Return response from backend when calling datastore.find(). #342
  • Enhancement: Updated rxjs to 6.x. #340

- Jul 25, 2018

  • Fixed: X-Kinvey-Device-Info header nows sends the correct information. #330
  • Fixed: The error returned from the server when Kinvey.Files.downloadByUrl() fails is now thrown properly. #333
  • Fixed: An error is not thrown when trying to upload a file and no metadata is provided. #334
  • Changed: A query is not longer accepted to push a subset of items to the backend. #331

- Jul 9, 2018

  • Fixed: Use correct Authorization header value when sending a request to refresh a MIC access token. #315
  • Fixed: Queue network requests while in the middle of refreshing a MIC access token. This prevents other requests from invalidating the newly refreshed access token. #321

- Jun 29, 2018

  • Enhancement: Calculate and validate file size before uploading the file. Any size provided to Files.upload() will be overridden with the size calculated by the SDK. #313
  • Fixed: Remove _kmd.local property on an entity before it is send to the backend. _kmd.local is a property created by the SDK used to track if an entity was created using the SDK. #310
  • Fixed: The active user will no longer be removed if local storage is being used to cache data loaded with the DataStore and the cache is cleared. #311

- Jun 15, 2018

  • Enhancement: Add support to handle Mobile Identity Connect OAuth errors in redirectUri response. #307

- Jun 1, 2018

  • Fixed: When calling to update the active users data, any data that was deleted since the last call will also be removed from the active user stored on the device. #299
  • Fixed: Any error thrown in the onNext function while using an observable will cause the onError function to be called with the thrown error. The subscriber will also be unsubscribed from the observable. #302

- May 23, 2018

  • Enhancement: Add support for Server Side Delta Set. #270
var datastore = Kinvey.DataStore.collection('books');

// Turn on for datastore instance
datastore.useDeltaSet = true; // Default is false

// Pass options.useDeltaSet to override datastore default for a pull() request.
// It will use value of datastore.useDeltaSet as default.
var promise = datastore.pull(query, { useDeltaSet: true });

// Pass options.useDeltaSet to override datastore default for a pull() request.
// It will use value of datastore.useDeltaSet as default.
var promise = datastore.find(query, { useDeltaSet: true });

- May 4, 2018

  • Enhancement: Add validation that checks if a redirectUri provided to mic.login() is a string. If the redirectUri is not a string then an Error will be thrown. #283
  • Fixed: Add support for kinveyFileTTL and kinveyFileTLS query parameters for KinveyFile references on a DataStore collection. #289
var dataStore = Kinvey.DataStore.collection('pets');
dataStore.findById('3f583e9f-d064-4a25-a953-6cf0a3dc2ff1', { kinveyFileTTL: 3600, kinveyFileTLS: true })
  .subscribe(function(pet) {
        "_id": "3f583e9f-d064-4a25-a953-6cf0a3dc2ff1",
        "_acl": {...},
        "dogName": "Bob",
        "furColor": "brown with black spots",
        "pawPrintPicture": {
          "_type": "KinveyFile",
          "_id": "325620e4-93dd-4a26-9f84-8a5e62c0db11",
          "_filename": "bobsPawPrint.png",
          "_acl": { ... },
          "_downloadURL": <Google Cloud Storage download URL>,
          "_expiresAt": "2018-06-18T23:07:23.394Z"
  }, function(error) {
    // ...

- Mar 29, 2018

  • Enhancement: Previously, a datastore instance would implicitly push pending entity changes before performing a request that would overwrite the local entity changes. This change removes the implicit push and will instead return an error stating that there are entities that need to be synced before you complete the action. #276
  • Enhancement: You can now provide a instanceId as a config option to init(). This will setup the backend and Mobile Identity Connect API urls to use your instanceId properly. #278
  appKey: '<appKey>',
  appSecret: '<appSecret>'
  instanceId: '<my-subdomain>'
  • Fixed: Check that a value is an object before calling Object.keys() in Query.isSupportedOffline(). #245
  • Fixed: Use es6-promise for promises in live service related files instead of native promises. #272

- Mar 13, 2018

  • Enhancement: The default API version used by Mobile Identity Connect is now v3. #259 #268
  • Enhancement: Auto Pagination Support. #260

The Kinvey backend imposes a limit of 10,000 entities on data requests. If your app needs to pull a larger number of entities to the cache, you can request the SDK to "auto-paginate". The SDK will then retrieve the entire set of entities page by page. This feature only applies to Cache and Sync stores.

var dataStore = Kinvey.DataStore.collection('books', Kinvey.DataStoreType.Sync);

//Pull the entire collection page by page.
var promise = dataStore.pull(null, { autoPagination: true })
  .then(function onSuccess(count) {
    // "count" represents the number of entities retrieved
  }).catch(function onError(error) {
    // ...

Breaking change: Previously, DataStore.pull() returned an array of the retrieved entities. With this release, the response of pull has changed to the count of retrieved entities.

If you need the array of entities retrieved by a pull in your app, you should call find after the pull has completed.

  • Fixed: The authorization header for Mobile Identity Connect token requests now uses the long-form OAuth Client ID. This fix is only relevant to apps that use multiple auth providers. A detailed discussion on OAuth Client IDs can be found in the Mobile Identity Connect guide. #263

- Feb 26, 2018

  • Enhancement: We've restructured our class hierarchy for working with data, to facilitate future performance improvements.
  • Enhancement: CacheStore methods create() and update() can now handle more concurrent requests.
  • Enhancement: CacheStore.delete() method now applies the same query both locally and against the backend, instead of making separate "by-id" requests for entities found in the cache.
  • Enhancement: The clear() method for a CacheStore or SyncStore now clears the sync queue.
  • Enhancement: Sync items found for entities which are no longer present in cache will be cleared when a sync push is performed to prevent errors.
  • Enhancement: Improved the throttling of requests when doing a sync push.
  • Fixed: Database connections to WebSQL are now cached. #241
  • Fixed: Some browsers don't support Number.isNaN() so we added a polyfill. #243
  • Fixed: Update typescript definitions to allow anonymouse user signup. #242
  • Fixed: Export LiveServiceFacade instead of LiveService. #254

- Feb 9, 2018

  • Use correct config property for setting storage providers #228
  • _id field not returned when specifying fields for a query #233

- Jan 26, 2018

  • Enhancement: You can now specify which storage provider to use to cache data. See the code snippet below for an example. #213
  appKey: '<appKey>',
  appSecret: '<appSecret>'
  storage: Kinvey.StorageProvider.WebSQL // or [Kinvey.StorageProvider.WebSQL, Kinvey.StorageProvider.IndexedDB]

// Possible Values
enum StorageProvider {
  • Enhancement: You can now use a datastore to perform actions on a subset of data in a collection without providing a query each time to match that subset of data. See the code snippet below for an example. #220
var datastore = Kinvey.DataStore.collection('books', Kinvey.DataStore.Sync, { tag: 'Kinvey' }); // Tag the datastore
var query = new Kinvey.Query().equalTo('author', 'Kinvey');
  .then(function() {
    return datastore.find().toPromise();
  .then(function(books) {
    // all of these books have Kinvey as their author
  • Fixed: Correctly sort entities that have a null or undefined value for the sort field. #205
  • Fixed: Add polyfill for Object.prototype.assign(). #225

- Jan 12, 2018

  • Fixed: Subscribe for messages sent to user's personal collections channel #172
  • Fixed: Allow null and undefined values to be used in a equal and notEqual query #201
  • Fixed: Remove fileds when processing query after sorting data #202

- Dec 14, 2017

  • Improvement: Use PubNub 4.19.0 rather then our custom fork. #193
  • Improvement: We have updated the TypeScript definitions to support custom properties on a User instance. #183
  • Improvement: Adopt a mono repo style repository. This change has no impact on the SDK output. It restructures our codebase to make releases and open source contributions easier. #171

- Sep 24, 2017

  • Imporvement: Live Service is now EA (Early Adopter) for our Angular2 SDK. Please check our Live Service Guide.
  • Improvement: Support push notifications. Please see Push Guide.
  • Bugfix: Support mutiple MIC providers in a single app.
  • Bugfix: Data was not correctly synced with the backend when using the LocalStorageAdapter and SessionStorageAdapter.
  • Bugfix: Support webpack bundles.

- Aug 24, 2017

  • Added: Requests are logged using loglevel.
  • Added: Allow a micId to be added to the client_id value sent for a Mobile Identity Connect request.
  • Added: Replace native node modules with npm packages.
  • Fixed: The active user is now stored in local storage.
  • Fixed: Default to removing a user with hard equal to false.
  • Fixed: Queries will be properly encoding.
  • Fixed: Throw any errors encountered when trying to load a storage adapter.
  • Deprecated Kinvey.initialize(). Please use Kinvey.init() instead. If you use Kinvey.init() you might not have an active user even though you had already logged in. To fix this, use Kinvey.initialize() to move the active user to the correct storage. From then on you will be able to use Kinvey.init() and retrieve your active user. Kinvey.init() does not return a promise and is synchronous.
// Will return the shared client instance
  appKey: '<appKey>',
  appSecret: '<appSecret>'

- 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: Added a try/catch around openDatabase(). This allows any errors thrown when opening a new database connection to WebSQL be caught and used to reject the pending promise. #17

- Jun 30, 2017

  • Changed: https: will automatically be used when a custom hostname is missing a protocol. #129
  • Fixed: Prevent the active user from being null for a short period of time when setting the active user. #128

- May 2, 2017

  • 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 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: Updated typescript definitions.
  • 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

  • Update type definitions for Kinvey.Files.
  • Add missing data property for Kinvey.User type definitions.
  • 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

  • Initial Release

Download Older Versions

We recommend using the latest version.

Version Download Date
7.0.0 Oct 25, 2021
6.0.0 Jul 30, 2021
5.1.1 Apr 12, 2021
5.1.0 Apr 8, 2021
5.0.1 Jul 22, 2020
5.0.0 Jul 10, 2020
4.2.3 Jul 22, 2019
4.2.2 Jul 5, 2019
4.2.1 Jun 19, 2019
4.2.0 Jun 7, 2019
4.1.0 May 31, 2019
4.0.0 Download May 3, 2019
3.12.4 Download Feb 12, 2019
3.12.2 Download Nov 2, 2018
3.12.1 Download Oct 4, 2018
3.12.0 Download Oct 3, 2018
3.11.7 Download Sep 20, 2018
3.11.6 Download Aug 2, 2018
3.11.5 Download Jul 25, 2018
3.11.4 Download Jul 9, 2018
3.11.3 Download Jun 29, 2018
3.11.2 Download Jun 15, 2018
3.11.1 Download Jun 1, 2018
3.11.0 Download May 23, 2018
3.10.3 Download May 4, 2018
3.10.2 Download Mar 29, 2018
3.10.1 Download Mar 13, 2018
3.10.0 Download Feb 26, 2018
3.9.10 Download Feb 9, 2018
3.9.9 Download Jan 26, 2018
3.9.6 Download Jan 12, 2018
3.9.4 Download Dec 14, 2017
3.9.0 Sep 24, 2017
3.8.0 Download Aug 24, 2017
3.5.2 Jul 8, 2017
3.5.1 Jun 30, 2017
3.5.0 Download May 2, 2017
3.4.5 Download Apr 13, 2017
3.4.4 Mar 27, 2017