Install guide
This guide takes you from a Mac with nothing installed to a Switch game you own running as an app on your iPhone, iPad or Mac. It follows the steps in nxnative's README. Check that your devices qualify first: see Requirements, or use the Compatibility checker.
Your own keys and games only. nxnative needs the
prod.keysdumped from your own Switch and game files for games you own. NxNative does not explain how to get either, and hosts no downloads.
Prefer not to use Terminal?
Every step below happens in Terminal. If you would rather click through an app, a Launcher wraps the same packing in a Mac app with a game library. Launchers are third-party projects, not maintained by nxnative, so questions about them go to each Launcher's own page.
What you need
- A Build Mac with macOS 26.6 or later, Xcode 27.1, Homebrew and Python 3.12 or newer. Python must be a native arm64 build, not one from an Intel Homebrew. Details: Requirements.
- For an iPhone or iPad app, Xcode's iOS platform, added under Xcode → Settings → Components.
- Your game files and your
prod.keys. - Free disk space of about twice the game's size plus 10 GB.
- For an iPhone or iPad: a sideloading tool (see Sideloading).
Step 1: Install the tools (once)
Open Terminal on the Build Mac and run these commands one after another. They download Apple's Metal toolchain, fetch nxnative itself into a folder named nxnative, and install the helper tools and Python modules the packing script uses.
xcodebuild -downloadComponent MetalToolchain
git clone https://github.com/seedds/nxnative.git && cd nxnative
brew install xcodegen zstd glslang
brew install --cask dotnet-sdk
python3 -m pip install lz4 "capstone>=5,<6" fonttools nsz zbic "backports.zstd; python_version < '3.14'"
You only do this once. Later builds start from the nxnative folder.
Step 2: Put your game in a folder
Make one folder per game and put the game in it, with its update and any DLC you have. nxnative reads .nsp, .xci, .nsz and .xcz files. For example:
~/Games/MarioWonder/
Super Mario Bros. Wonder [010015100B514000][v0].nsp
Super Mario Bros. Wonder [010015100B514800][v327680].nsp
The update matters for some games: several only reach 60 fps with a specific update. Each game page says which one, where nxnative lists it.
Step 3: Run the packing script
From the nxnative folder, run the script with your game folder and the path to your prod.keys:
python3 scripts/build_ipa_from_nsp.py ~/Games/MarioWonder -k ~/keys/prod.keys
The first build of a game takes 30 to 60 minutes. Building it again later is much faster, because the script reuses work whose inputs did not change. When it finishes, the IPA is in the game's folder.
Useful options:
--platform mac-appmakes a Mac app to open from Finder instead of an IPA.-l ja(or another language code or name) packs the game in that language. It must be a language the game has.--romfs separatekeeps the game files out of the IPA, for games too big to install (see Troubleshooting).
The Build command generator writes the command for you. The full list of options is in nxnative's packing script reference.
Step 4: Install the app
On an iPhone or iPad, sideload the IPA with a tool such as AltStore, Sideloadly or LiveContainer. If your tool offers an increased memory limit, turn it on: nxnative says the bigger games need it. Sideloading compares the tools.
On a Mac, open the .app the script made from Finder. It is not notarized, so on a Mac it was downloaded to, Gatekeeper blocks it until you allow it in System Settings › Privacy & Security.
Step 5: Play
Before the game starts, a settings screen (a window on the Mac) offers frame rate, docked or handheld mode, language, rumble and more. Tap Play; your choices are remembered. Settings explains each one, and Controllers covers touch controls and game controllers.
Expect short stutters the first time a new scene appears: the app compiles graphics for it once and remembers them. More fixes are in Troubleshooting.