What is native?

Native refers to software that is written specifically for a particular operating system or hardware platform, using the platform’s own programming languages, tools, and APIs. The code is compiled directly into machine code that runs on the device without any intermediate layers.

Let's break it down

  • Platform‑specific language: e.g., Swift/Objective‑C for iOS, Kotlin/Java for Android, C# for Windows.
  • SDKs and APIs: You use the official software development kits that give you direct access to the device’s features.
  • Compilation: The source code is turned into native machine code that the CPU can execute directly.
  • Separate codebases: Each platform usually requires its own version of the app, rather than one universal codebase.

Why does it matter?

Because native apps run directly on the hardware, they can be faster, more responsive, and can use all the device’s capabilities (camera, GPS, sensors, etc.) without restrictions. This often leads to a smoother user experience and better performance compared to web‑based or cross‑platform solutions.

Where is it used?

  • Mobile phones: iOS apps in the App Store, Android apps in Google Play.
  • Desktop computers: Windows programs, macOS applications, Linux utilities.
  • Gaming consoles and VR headsets: games built with platform‑specific engines.
  • Embedded systems: firmware for IoT devices, automotive infotainment, medical equipment.

Good things about it

  • High performance: No extra translation layers, so apps run quickly.
  • Full feature access: Can use every sensor, API, and hardware function the platform offers.
  • Better UI/UX: Can follow the exact design guidelines of the operating system, making the app feel native to users.
  • Offline capability: Works without an internet connection because everything is stored locally.

Not-so-good things

  • Higher development cost: You need separate teams or codebases for each platform.
  • Longer time to market: Building and testing multiple versions takes more time.
  • Maintenance overhead: Updates must be applied to each platform individually.
  • Learning curve: Developers must know several different languages and SDKs.