Repository navigation
Releases
X1.0 - Release
NX 18 is a fork of NXNative that turns your legally owned and acquired Switch and Switch 2 games into apps for Apple devices with an A20 chip and for M-series Macs (Apple silicon, M1 or later). X1.0 is the first full release, after the 0.5 pre-release. Like 0.5, it targets only the newest hardware and renders through Metal 4 only.
Get started
New to NX 18? The Getting started guide takes you from nothing to playing, step by step.
Download the two scripts below (Assets), then in Terminal:
bash ~/Downloads/nx18-setup.sh
cp -n ~/Downloads/nx18-build.sh ~/nx18-build.sh
bash ~/nx18-build.sh
nx18-setup.shgets your Mac ready. It checks for an Apple silicon Mac on macOS 27.3 or later, and for Xcode 27.3 with its Metal toolchain. If something is missing, it tells you what to install and how. It installs xcodegen, zstd and the Python modules (into a private virtualenv inside the NX 18 folder), and downloads or updates NX 18 in~/NX18. It asks before every install or download, never usessudo, and never changes a folder that holds your own changes.--checkonly reports what is missing. You can run it again safely.nx18-build.shbuilds one of your legally owned and acquired games. Open your copy and edit the settings at its top: your game (a folder of .nsp/.xci files, a dump folder from your own Switch, or a .nup or .nx file), yourprod.keysfrom your own Switch (only needed for .nsp/.xci games) and the target (iphone,ipadormac-app). Then run it. It checks every setting, selects Xcode 27.3 for you, runs the build and tells you where the IPA or app is. Your keys stay on your Mac: the script never prints, copies or sends them.
Already set up for 0.5? Run nx18-setup.sh again to update the NX 18 folder, then build your games again.
Rather build your games in an app than in Terminal? NX 18's own Mac app is planned for X2.0. Until then, you can build with NX Play, a community Mac app by varyform. Point its Settings › General › nxnative repository at your ~/NX18 folder. The Getting started guide's Build with NX Play instead shows how. It's a suggestion, not a requirement. Questions about NX Play go to its own page.
You need your legally owned and acquired game files and your own keys, dumped from your own Switch. NX 18 includes neither.
Recommended, not required: a paid Apple Developer account. Apps stay signed for a year instead of 7 days, there's no 3-app limit, and the Increased Memory Limit comes through automatically when you install from Xcode. A free Apple ID works too. Making NX 18 friendlier to free accounts is planned.
After installing on iPhone or iPad, make sure the game gets the Increased Memory Limit: without it iOS may close the bigger games in busy scenes. The README's new Increased Memory Limit section explains how for each sideloading tool (Xcode, AltStore, Sideloadly, SideStore with GetMoreRam, LiveContainer) and how to check it in the log.
Requirements
- iPhone and iPad: a device with an A20 chip, on iOS or iPadOS 27.3. Tested on the iPhone 18 Pro Max. The iPhone 18 Pro, iPhone Duo and iPad mini 8 should work too, but aren't tested yet. Older devices and iOS versions are not supported.
- Mac: Apple silicon with a Metal 4 GPU, macOS 27.3 or later.
- To build: Xcode 27.3 (its Metal compiler 32023.925.6), Homebrew, Python 3.12 or newer.
What's new since 0.5
New look: launcher and in-game menu
- NX 18's own in-game menu. A new panel replaces the system menu: the first page shows the titles alone, notes stay under each setting, and it works with touch, a controller and VoiceOver. The menu button's ring sweeps from cyan to coral.
- Launcher refresh: a soft halo behind the NX 18 mark, rails that drift between cyan and coral, and button glyphs that match your controller in the hints.
- Your own UI font (optional):
--ui-font <file>(orUI_FONTinnx18-build.sh) puts one font of your choice into the app for all of NX 18's own text. The font stays in the app built on your Mac and never goes into the repository. - Ultrawide shows its cost in the launcher where a game's frame-rate cost was measured (Luigi's Mansion 3).
- MetalFX is greyed out under a Picture Stretch that changes the picture's shape.
- Touch controls in the in-game menu: Touch control size, opacity and feedback are now one Touch controls row that opens a page of its own and shows their values under its name, such as Large · Normal · Feedback on. The settings screen keeps the three rows.
- Launcher and menu polish: the controller's focus ring follows the settings card's rounded corners, B closes the iCloud Drive folder picker, the guide's B hint sits beside Back and its page buttons use your controller's shoulder names, the D-pad reaches the Battery / Balanced / Quality chips in portrait, choice values line up on the right, a setting fixed at launch or by an env file says so, the free-memory figure no longer jumps, the menu's controller scroll follows Reduce Motion, closing Advanced settings by touch keeps the controller's place, and some wording is clearer (a cloud-save timeout now says "Couldn't Get the iCloud Save").
Faster first start
- The app now carries the pipeline bases of its prewarm list, so a first start takes them from the app instead of compiling them on the device. On a Mac test, Ocarina of Time's first start went from about 24 s of pipeline compiling (first frame at 31–32 s) to under 1 s (first frame at about 8 s); Breath of the Wild's prepare step went from about 1.5 s to almost nothing.
- New prewarm lists recorded on an iPhone 18 Pro Max: Super Mario Odyssey, Persona 5 Royal, Luigi's Mansion 3 and Star Fox now ship one, and Breath of the Wild, Xenoblade Chronicles: Definitive Edition and Ocarina of Time get the extra rows the iPhone recorded. Fewer shaders and pipelines are built while you play.
- Star Fox gets the right depth mode for its ready-made pipelines, so its first start uses them.
Smoother play on iPhone and iPad
- Present trim is now on by default on iPhone and iPad: a frame that waits too long in the display queue is dropped, which cuts input-to-screen delay. Measured on an iPhone 18 Pro Max, game-to-display time fell from about 43–49 ms to about 25–33 ms in 13 Sentinels, Mario Kart 8 Deluxe, NieR:Automata, Persona 4 Golden and Persona 5 Royal, with frame pacing held and only a few frames dropped (mostly at loads). The Mac is unchanged.
- Fewer CPU wakeups in lock-heavy games: a thread handing work to another on the same core no longer sets a timer for every handoff (Catherine: Full Body).
- Hold frames when late is off by default in Mario Kart World and Ocarina of Time. With it on, a first play of Mario Kart World on an iPhone 18 Pro Max dropped to 30 or 20 fps 16 times in 6.5 minutes, most of them after a pipeline was built. With it off, the race held 60 fps nearly all the time. Ocarina of Time played better with it off too, and now also has Frame buffering on by default. Both can be changed back in the settings.
- Switch 2 games on the Mac draw their full docked picture in both modes; iPhone and iPad keep 0.5's docked/handheld scale to stay cooler.
- Switch 2 games start in Handheld on iPhone and iPad, the game's lighter mode: less GPU work, less heat and longer battery life. Console mode in the settings switches it, and a choice you made before is kept. The Mac starts in Docked.
Low CPU power, cool running
Measured on an iPhone 18 Pro Max (iOS 27.3) with X1.0 test builds. These are CPU power figures: the CPU energy of the game's own process, from NX 18's log. They don't include the GPU, the display or the rest of the phone. The first five are gameplay medians from saved logs, in windows of about 5 s: the title screen and opening movie at start, time in the background and a paused stretch in one game are left out, and loading during play is kept. The NieR:Automata and Catherine: Full Body figures are ranges across windows. Settings differ by game (docked or handheld, mods, anti-aliasing).
- Super Mario Odyssey: 0.50 W at 60 fps.
- Star Fox: 1.44 W at 60 fps.
- Breath of the Wild: 1.81 W at 60 fps.
- Xenoblade Chronicles: Definitive Edition with a 60 fps mod: 2.23 W at 60 fps. The mod came from the player's own mods folder; NX 18 includes no mods.
- Luigi's Mansion 3: 2.57 W at 60 fps. It is the heaviest game measured: its first 45 s or so after launch run at 4–7 W.
- NieR:Automata: about 1–2.6 W in heavy scenes at a locked 60 fps. Light scenes and menus take 0.1 W or less.
- Catherine: Full Body: 0.04–0.27 W at the game's own 30 fps cap. The CPU power spike 0.5 had after screenshots is gone.
- Ocarina of Time: the game's helper threads now rest briefly instead of spinning while they wait. On battery, in the same heavy area and at the same settings as the build tested before it, CPU power fell from 0.64–0.93 W to about 0.55 W, and the frame rate rose from about 47 to 50–53 fps (medians of about 5 s windows). In the opening movie it takes about 0.12 W, about a third of before.
iOS's thermal state stayed at nominal, its coolest level, through the Super Mario Odyssey, Star Fox, Breath of the Wild, Xenoblade Chronicles: Definitive Edition and Luigi's Mansion 3 runs. That includes Luigi's Mansion 3's 4–7 W stretch.
Other X1.0 changes that save work:
- Fewer pipelines built while playing (see Faster first start). In the Super Mario Odyssey run above (not a first start), the game took 1,381 pipeline bases from its archives (665 of them shipped in the app) and compiled only...