Client and server versioning in Mobile Apps and Mobile Services

Note

Visual Studio App Center supports end to end and integrated services central to mobile app development. Developers can use Build, Test and Distribute services to set up Continuous Integration and Delivery pipeline. Once the app is deployed, developers can monitor the status and usage of their app using the Analytics and Diagnostics services, and engage with users using the Push service. Developers can also leverage Auth to authenticate their users and Data service to persist and sync app data in the cloud.

If you are looking to integrate cloud services in your mobile application, sign up with App Center today.

The latest version of Azure Mobile Services is the Mobile Apps feature of Azure App Service.

The Mobile Apps client and server SDKs are originally based on those in Mobile Services, but they are not compatible with each other. That is, you must use a Mobile Apps client SDK with a Mobile Apps server SDK and similarly for Mobile Services. This contract is enforced through a special header value used by the client and server SDKs, ZUMO-API-VERSION.

Note: whenever this document refers to a Mobile Services backend, it does not necessarily need to be hosted on Mobile Services. It is now possible to migrate a mobile service to run on App Service without any code changes, but the service would still be using Mobile Services SDK versions.

Header specification

The key ZUMO-API-VERSION may be specified in either the HTTP header or the query string. The value is a version string in the form x.y.z.

For example:

GET https://service.azurewebsites.net/tables/TodoItem

HEADERS: ZUMO-API-VERSION: 2.0.0

POST https://service.azurewebsites.net/tables/TodoItem?ZUMO-API-VERSION=2.0.0

Opting out of version checking

You can opt out of version checking by setting a value of true for the app setting MS_SkipVersionCheck. Specify this either in your web.config or in the Application Settings section of the Azure portal.

Note

There are a number of behavior changes between Mobile Services and Mobile Apps, particularly in the areas of offline sync, authentication, and push notifications. You should only opt out of version checking after complete testing to ensure that these behavioral changes do not break your app's functionality.

Azure Mobile Apps client and server

Mobile Apps client SDKs

Version checking was introduced starting with the following versions of the client SDK for Azure Mobile Apps:

Client platform Version Version header value
Managed client (Windows, Xamarin) 2.0.0 2.0.0
iOS 3.0.0 2.0.0
Android 3.0.0 3.0.0

Mobile Apps server SDKs

Version checking is included in following server SDK versions:

Server platform SDK Accepted version header
.NET Microsoft.Azure.Mobile.Server 2.0.0
Node.js azure-mobile-apps) 2.0.0

Behavior of Mobile Apps backends

ZUMO-API-VERSION Value of MS_SkipVersionCheck Response
x.y.z or Null True 200 - OK
Null False/Not Specified 400 - Bad Request
1.x.y False/Not Specified 400 - Bad Request
2.0.0-2.x.y False/Not Specified 200 - OK
3.0.0-3.x.y False/Not Specified 400 - Bad Request