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.
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:
|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.|
|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.|
|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.|
 Unless using a hybrid strategy, then an app build and deploy is required.
|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) ||Supported online, offline, and supported using Local Server.||Requires network connection.|
|Geometric network tracing ||Supported online, offline, and supported using Local Server.||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.|
 Build models in ArcGIS Desktop, and provide clients analysis through geoprocessing services.
 Local Server is available on Windows and Linux in the ArcGIS Runtime SDKs for .NET, Java, and Qt.
 Supported through model-based analysis (geoprocessing service), for example, valve isolation trace.
Several ArcGIS SDKs let you write once and deploy to multiple platforms in the following ways:
|ArcGIS Runtime SDK for Android||✓|
|ArcGIS Runtime SDK for iOS||✓|
|ArcGIS Runtime SDK for Java ||✓||✓||✓|
|ArcGIS Runtime SDK for macOS||✓|
|ArcGIS Runtime SDK for .NET ||✓||✓||✓|
|ArcGIS Runtime SDK for Qt ||✓||✓||✓||✓||✓|
|Web AppBuilder for ArcGIS ||✓||✓||✓||✓||✓|
|AppStudio for ArcGIS ||✓||✓||✓||✓||✓|
|ArcGIS REST API ||✓||✓||✓||✓||✓|
 ArcGIS Runtime SDK for Java supports cross-platform development for Windows, Linux, and macOS desktop systems.
 ArcGIS Runtime SDK for .NET supports building applications for Windows desktops, tablets, and phones from a single codebase.
 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.
 AppStudio for ArcGIS apps can be extended using the ArcGIS Runtime SDK for Qt.
 ArcGIS REST API allows you to use web services in any platform capable of issuing HTTP requests.
These topics provide additional context: