Skip to content
NX Native

How nxnative works: from NSP files to an app on your iPhone

You do not need to know this to use nxnative, but it explains why a build takes so long, why only some games work and what the settings screen is. Everything below follows the project's own development page; the deep technical details are in the <a href="/docs/development">development docs</a>.

Updated 1 November 2026. 6 min read.

How nxnative works: from NSP to iPhone app

The build in three stages

One script, build_ipa_from_nsp.py, does the work. In short it rewrites the game's code, translates its shaders to Metal, and packs the result into an IPA. It needs your NSP files and your prod.keys, which it uses to read the game. The first build takes about 30 to 60 minutes. Later builds of the same game reuse the build folder and are much faster. The build guide walks through it.

The rewriter

The Switch's processor is ARM, so the game's machine code can run on an Apple chip. A rewriter goes through every module of the game and changes what cannot run as it is, because the game expects a Switch system underneath. The project's notes say per-build changes are keyed by the module's build ID and kept in the game's profile.

The host that replaces the Switch system

A game calls the Switch's operating system for almost everything. nxnative includes a host that stands in for that kernel and the system services: threads and synchronization, memory, the file system with transactional saves, controller input, audio, movies and the on-screen keyboard. This is why a game is a native app rather than something running inside a window.

Graphics: NVN on Metal

Most Switch games draw through NVN, the console's own graphics API. nxnative rebuilds it on Metal, Apple's graphics API. The shaders are extracted from the game and translated offline during the build, which is a large part of the build time. Some games use Vulkan or OpenGL instead and go through separate layers; of the games on this site, a few use those. The first time a new scene appears, short stutters are normal while the app compiles graphics once and remembers them.

Audio, input and the app

Sound goes through Core Audio. On an iPhone the on-screen gamepad works, and a connected controller replaces it. See the controls guide. The result is one unsigned IPA for iPhone and iPad with the rewritten code, the shader libraries, the game files and the icon inside. A settings screen comes before the game, and your choices are remembered (Settings). Because the IPA is unsigned you sideload it, see the sideload guide.

Limits

The project lists known gaps, for example geometry shaders that do not translate and no amiibo support. See nxnative vs emulators for the other limits.

Facts on this page were checked against the official nxnative commit bfc70881 (31 Oct 2026). The project changes often, so the official repository always wins.

This is an unofficial guide based on the project's public documentation. Use only games you own. For the latest details, check the official repository.