How it works
nxnative is often described as a Switch emulator for iPhone. It is not one. This page explains the difference in plain terms, drawing on nxnative's README and its development notes.
Your own keys and games only. nxnative works on game files you own, decrypted with the keys from your own Switch. Nothing from any game is in nxnative's repository, and NxNative hosts nothing either.
Emulation versus native code
An emulator pretends to be a whole console. While the game runs, it reads the game's instructions one by one and translates or interprets them for the device it is running on. That work happens every second you play, and it costs speed and battery.
nxnative takes a different route. The Switch and Apple's recent chips both use 64-bit Arm processors, so most of a Switch game's code can already run on an Apple chip. nxnative prepares the game once, ahead of time, on your Mac, then packs it as an ordinary iPhone, iPad or Mac app. When you play, the game's own code runs directly on the Apple chip, with no emulator in between. For what that means in practice, and what it gives up, see nxnative vs emulators.
What happens when you pack a game
The packing script on the Build Mac does the preparation:
- Reads your game files. With your
prod.keys, it extracts the game's code and data from your files, together with any update and DLC in the folder. - Rewrites the code. The game's code modules are patched so they run on Apple's system rather than the Switch's. Each game has a profile in nxnative's repository that records what its code needs, matched to the exact game version.
- Translates the shaders. The small graphics programs the game runs on the GPU are converted for Apple's GPUs in advance, so the app does not have to do it while you play.
- Builds the app. Everything goes into one app: an unsigned IPA for iPhone and iPad, or a Mac app.
This is why the first build of a game takes 30 to 60 minutes: the hard work is done here, once, instead of on every frame.
What runs in the app
- The game's own code, rewritten, running directly on the Apple chip.
- A host that stands in for the Switch's operating system and the services games ask it for: threads, memory, files and saves, controllers, audio, video playback and the on-screen keyboard.
- Graphics on Metal. Switch games draw through Nintendo's NVN graphics interface. nxnative re-creates it on Apple's Metal. Games that draw with Vulkan or OpenGL instead go through layers of their own on Metal.
- Audio through Apple's Core Audio.
- Controls: a touch gamepad, game controllers and motion, standing in for the Switch's own (see Controllers).
Why it needs recent devices
Switch games store their textures in BC-compressed formats, which the GPU reads directly. nxnative says older iPhones cannot read that format, which is why it needs an iPhone 15 Pro or newer (A17 Pro), an iPad with M1 or later, or a Mac with Apple silicon. The graphics also use Metal 4, which arrived with iOS 26. See Requirements.
Why only some games work
Because every game's code is rewritten for its exact version, each one has to be brought up and tested on its own. The Games page lists the games nxnative has tested. For any other game, the script tries its best guess and still packs an app, but nxnative warns that such an app may not start.
Where it comes from
nxnative started from d2r-mobile, which developed this native-execution approach for Diablo II: Resurrected. It also builds on open-source projects including Ryujinx (its shader translator) and SPIRV-Cross and glslang (shaders to Metal). nxnative is released under the MIT license and is not affiliated with Nintendo or any game publisher.