Choosing the Right Esri API

With Esri's ArcGIS SDKs and development tools you have the opportunity to develop robust location-based applications for just about any modern platform. Esri provides solutions that address native and web development targeting mobile (Android, iOS, Windows) and desktop (Java, Windows, Linux, macOS) platforms and devices. Using the ArcGIS API for JavaScript you can deploy your app anywhere a compatible web browser runs. Solutions can be built with no code for non-developers, and minimal coding for developers (Web AppBuilder, AppStudio), and SDKs that allow developers to build one codebase and deploy it to multiple platforms (Qt, .NET, Java, JavaScript).

How do you choose?

ArcGIS software development patterns are similar at a high level across ArcGIS Runtime SDKs and ArcGIS Web APIs. When choosing an approach for creating applications with ArcGIS capabilities, it's helpful to have an understanding of the general differences between native and web apps as well as differences in ArcGIS capabilities.

  • Native strategies offer the best device integration and the most out-of-the-box functionality for connected and offline workflows, but they require native development skills. You can use ArcGIS Runtime SDKs to create native apps.
  • Web strategies use HTML, JavaScript, and CSS hosted on a web server and delivered to the user's device or desktop using its web browser. This strategy is best if you don't know the devices your users have and you need to reach a wide audience. You can use ArcGIS API for JavaScript to create web client solutions.

Comparison points

The most important goal is to deliver the best experience and functionality for the audience of your app. Consider the following questions when choosing the right platform for your app:

  • Who is the target audience (internal or consumer public) and what functionality (mapping, advanced analysis, and so on) is required to support the application?
  • Are your users sometimes disconnected and need the app to run offline?
  • What skills does your current development team have?
  • What data and web services are required to support the application?
  • Are there requirements for device integration, such as use of the device's GPS, compass, media, calendar, contacts, text messaging (SMS), notifications, etc.?

General differences compared

Consideration Native strategy Web strategy
Which devices do your users prefer? Target each OS and deliver the best native experience. This means writing an app for each OS or taking advantage of cross-platform development options. Build a single web application for use in browsers on all devices.
What skills do you have? Requires skills developing on each native platform (for example, Objective-C for iOS, Java for Android, and .NET for Windows). However, several Runtime SDKs provide cross-platform development options. Requires HTML, JavaScript, and CSS knowledge.
Do you want to distribute the app through a store (App Store, Google Play, Windows Store, Amazon)? Distribution through a store is supported. Distribution through a store is supported with use of additional frameworks[1].
Access to device capabilities Access to all device capabilities (touch, GPS, compass, calendar, media, contacts, camera, and so on) Limited to HTML5 mobile features and plug-ins.
Performance Native performance. Typically less than native performance.
Maintenance on multiple devices and desktops App updates require ad-hoc, enterprise, or store distribution. When you update your app, it is immediately available to all devices[2].

[1] ArcGIS API for JavaScript lets you distribute your app in a browser and a hybrid app on multiple platforms with PhoneGap, Apache Cordova™, Intel® XDK, Trigger.io, or Electron.
[2] Unless using a hybrid strategy, then an app build and deploy is required.

ArcGIS capabilities compared

Consideration Native strategy Web strategy
Users need to use the app and data offline Offline use is built-in and includes offline map viewing, editing with sync, geocoding, routing, and analysis. Some local storage is possible with HTML5. Offline operation is possible but can be difficult.
Routing and geocoding Online and offline are supported. Requires ArcGIS Desktop to author offline data sources. Requires network connection.
GeoEnrichment (demographic and landscape variables) Requires network connection. Requires network connection.
Geometry operations like clip, buffer, intersect, simplify, union, and split Offline is supported and recommended. Client-side supported.
Model-based analysis (geoprocessing) [1] Supported online, offline, and supported using Local Server[2]. Requires network connection.
Geometric network tracing [3] Supported online, offline, and supported using Local Server[2]. Requires network connection.
Advanced cartography and symbology including support for rotation, offset, vector/font based symbols and military symbology (2525b-2, C, and D) Fully supported. Rotation and offset.
Display and animate large numbers of features Display and animation while maintaining smooth and fast map navigation is fully supported. Supported but not recommended for large numbers.
Local file-based data (vector and raster) offline Offline and local access to vector and raster data is built in. Not supported.
Vector Tile basemaps Online and offline. Requires network connection.
Real-time GIS, such as stream layers Not supported. Supported.
3D Online and offline (Scene packages with elevation source). Requires network connection.

[1] Build models in ArcGIS Desktop, and provide clients analysis through geoprocessing services.
[2] Local Server is available on Windows and Linux in the ArcGIS Runtime SDKs for .NET, Java, and Qt.
[3] Supported through model-based analysis (geoprocessing service), for example, valve isolation trace.

Cross-platform development with ArcGIS

Several ArcGIS SDKs let you write once and deploy to multiple platforms in the following ways:

Android iOS Windows macOS Linux
ArcGIS Runtime SDK for Android
ArcGIS Runtime SDK for iOS
ArcGIS Runtime SDK for Java [1]
ArcGIS Runtime SDK for macOS
ArcGIS Runtime SDK for .NET [2]
ArcGIS Runtime SDK for Qt [3]
ArcGIS API for JavaScript [4]
Web AppBuilder for ArcGIS [4]
AppStudio for ArcGIS [5]
ArcGIS REST API [6]

[1] ArcGIS Runtime SDK for Java supports cross-platform development for Windows, Linux, and macOS desktop systems.
[2] ArcGIS Runtime SDK for .NET supports building applications for Windows desktops, tablets, and phones from a single codebase.
[3] ArcGIS Runtime SDK for Qt lets you write once and deploy to Android, iOS, Linux, macOS, Windows, and others. Code written using the QML API must be compiled native for each target platform, but it is the same code for each platform. There are no differences in the Qt QML API or Esri Runtime for Qt between platforms, making cross-platform application development with a single code-base possible. To achieve this there are some compromises. For example, the UI controls available must exist on all platforms, meaning that specific UI components that only exist on one platform cannot be used when building cross-platform code. However, for a large percentage of use cases, the QML API will be a good choice.
[4] ArcGIS API for JavaScript lets you distribute your app in a browser and a hybrid app on multiple platforms with PhoneGap, Apache Cordova™, Intel® XDK, Trigger.io, or Electron.
[5] AppStudio for ArcGIS apps can be extended using the ArcGIS Runtime SDK for Qt.
[6] ArcGIS REST API allows you to use web services in any platform capable of issuing HTTP requests.

A word about hybrid strategies

Hybrid strategies use a mix of native components and web app content (HTML, JavaScript, and CSS) to build native applications and distribute with enterprise or app store deployment. One approach is to embed a web view into a native app and load web content. More advanced strategies include leveraging HTML5 with frameworks supporting richer integration with the native platform (for examples see [4] above). Today, Esri's SDKs and APIs are designed for and address pure web and pure native development patterns. Esri does not provide specific frameworks for hybrid application architectures.

Further Reading

These topics provide additional context: