Native application

Also known as: Native app

On this page 6

A native application is software built specifically for one operating system or platform, using that platform’s own programming languages, SDKs and user interface toolkit, and compiled or packaged in the platform’s native executable format. In software architecture, the term describes an application that talks to the operating system directly through its native APIs, without a browser engine or a cross-platform abstraction layer in between.

Typical examples are an iOS app written in Swift with UIKit or SwiftUI, an Android app written in Kotlin with Jetpack Compose, or a Windows program written in C++ or C# using WinUI. Native applications usually offer the best performance, deepest hardware access and most consistent platform look and feel, at the cost of separate code bases for each platform. In mobile development the same idea is usually called a native app, and it is the baseline against which cross-platform and web approaches are measured.

How a native application is built

A native application is developed with the platform vendor’s toolchain: its compiler or runtime, its system libraries and its UI framework. The result is a binary or package that the operating system loads directly, such as a Windows executable, a macOS application bundle, an Android package or an iOS app archive.

Because the code calls platform APIs directly, it can use features as soon as the operating system offers them: new camera modes, biometric sign-in, system notifications, background tasks or accessibility services. It also inherits platform conventions such as standard menus, gestures, keyboard shortcuts and text rendering.

PlatformPrimary languagesNative UI toolkitPackage format
WindowsC++, C#WinUI, Win32EXE, MSIX
macOSSwift, Objective-CAppKit, SwiftUIApp bundle
iOS and iPadOSSwift, Objective-CUIKit, SwiftUIIPA
AndroidKotlin, JavaJetpack Compose, Android ViewsAPK, AAB
Linux desktopC, C++, Rust and othersGTK, QtDistribution packages, Flatpak
Native technology stacks by platform

Native does not always mean compiled machine code. Android apps written in Kotlin run on the Android Runtime, and C# desktop apps run on .NET, yet both count as native because they use the platform’s own runtime and UI toolkit. What matters is that no foreign layer, such as an embedded browser, stands between the code and the operating system.

On desktop systems, a native application also integrates with file associations, system menus, drag and drop and installer conventions. On mobile platforms, it participates in the system’s permission model, so access to the camera, location or contacts must be requested from the user at run time.

Native application compared with other architectures

The native approach is one point on a spectrum. Cross-platform software shares one code base across platforms, hybrid and web-wrapper apps run web code inside an embedded browser engine, and web applications run entirely in the browser. Each moves along the same trade-off between reach and platform integration.

ApproachCode basePerformancePlatform integrationDevelopment cost
Native applicationOne per platformHighestFullHighest for many platforms
Cross-platform frameworkMostly sharedHighGood, gaps need native modulesMedium
Web-wrapper desktop appShared web codeModerate, higher memory usePartialLow to medium
Progressive web appShared web codeModerateLimited by browser APIsLowest
Native applications compared with alternative architectures

The boundary is not always sharp. Some cross-platform frameworks compile to native code and render with native controls, so their output behaves much like a native application. For this reason, “native” is best judged by how the user interface and system access are implemented, not only by the language used.

When a native application is the right choice

A native application pays off when performance, hardware access or platform polish are central to the product. It is harder to justify when the same moderate feature set must reach many platforms quickly with a small team.

SituationRecommended approachReason
Graphics-heavy game or video editorNative applicationDirect GPU and media APIs, low latency
App relying on new device sensorsNative applicationImmediate access to new platform APIs
Internal business forms on many devicesCross-platform or web applicationOne code base, fast updates
Content product with a strong web presenceProgressive web app or web wrapperReuses existing web code
Product with one dominant platformNative application for that platformBest experience where most users are
Choosing between native and shared code

Strengths and limitations

The strengths of a native application come from removing layers between code and system. Startup is faster, memory use is lower, and the app can work fully offline with local storage. Accessibility features such as screen readers usually work best with standard native controls.

The limitations follow from the same choice. Supporting several platforms means parallel development teams, duplicated testing and features that drift apart. Distribution through app stores adds review processes and platform fees, and each operating system update may deprecate APIs that the code depends on.

  • Feature drift between the iOS and Android versions frustrates users who switch devices.
  • Ignoring platform conventions wastes the main benefit of going native.
  • Underestimating maintenance across several code bases inflates long-term cost.
  • Assuming native is always faster overlooks that inefficient native code can still be slower than a well-built web app.

In everyday language

A native application is a program made specially for one kind of device, like a suit tailored to one person. An app built natively for an iPhone uses the iPhone’s own tools and building blocks.

Because it fits so closely, it usually runs smoothly and can use everything the device offers, such as the camera or fingerprint sensor. The catch is that the tailor must make a separate suit for every other kind of device.

Seen in the real world

A small company builds a fitness app that records runs with GPS and reads heart-rate data from wearable sensors. Its first version is a web wrapper, but users report battery drain and lost GPS points when the phone screen is off.

The company rebuilds the tracking part as a native application on iOS and Android, using each platform’s location and background-task APIs. Background recording becomes reliable, and the app now connects directly to wearable sensors. The trade-off is clear in the budget: the team grows from three to five developers to maintain two native code bases.