NX2APPLE · IPHONE & IPAD

NX2Apple GitHub: iOS Signing, AltStore & SideStore

Build the iPhone target on your Mac, choose an installation route, then finish the game-data transfer. This guide takes an exported NX2Apple IPA through signing, first launch and renewal, with the memory and save checks that matter for larger games.

NX2Apple 1.0.2 · Stable engine 65501fbb · iOS/iPadOS 26+ · 4 November 2026.

Choose how the app will be signed and installed

NX2Apple runs these games without an emulator JIT session. You still need a valid signature, the game’s matching data and enough memory. A signing tool handles the app identity and certificate; NX2Apple’s builder handles the game and engine.

Using the MacNativeGames TOTK project instead? Its per-game IPA, app paths and build commands are separate. Follow the TOTK iPhone and iPad guide. This page is for LNPANDY/NX2Apple on GitHub.

Have these ready

  • An Apple silicon Mac with the build tools required by your selected game. For NVN games in this release, the project lists macOS 26.6+, full Xcode 27.2 and the Metal toolchain.
  • An iPhone or iPad running iOS/iPadOS 26+. A sideloader’s lower minimum OS does not lower NX2Apple’s game-app requirement.
  • Your own legally obtained game backup, matching update and keys. Complete the base/update/profile selection before signing.
  • Free storage for both the app and game archive, a data-capable USB connection for initial setup, and your own Apple signing account.

Export the right IPA in NX2Apple 1.0.2

In Builds, choose the iPhone / iPad target and complete its build. In the Install card, switch from Install on device to Export as IPA. The export does not need a selected device or signing team.

ILLUSTRATED EXPORT CHOICES · 1.0.2What is inside the file you will sign?
  1. Shared appOne game library. Export the IPA, sign and install it, then send the game data separately.
  2. One game, all insideOne larger IPA contains the game data. Each title uses a separate app identifier and save container.

Switching between these choices changes the data route and app identity. Back up before changing the app type.

  1. Choose Shared app for a separate data transfer

    Export the shared application and locate NX2Apple.ipa in the shell folder. Transfer it to a place the iPhone’s Files picker can read, such as your own iCloud Drive. This IPA does not include romfs.img.

  2. Or choose One game, all inside

    This embeds that game’s data and uses org.nxnative.<title ID> as its app identity. Its archive makes the IPA much larger. If your signer fails on the large file, return to Shared app and send the data separately.

  3. Keep your exported file and build cache

    Retain the known-good IPA, original game inputs and launcher Cache files. The shared app uses cached game frameworks when rebuilding its library. Exporting again after changing the selected games can change which games its executable contains.

For the surrounding GUI build workflow, return to NX2Apple’s IPA export walkthrough. The older 1.0.1 device selector shown there belongs to direct Xcode installation; the IPA export choices were added in 1.0.2.

Install the exported IPA with AltStore Classic

Use AltStore Classic, rather than the PAL marketplace. NX2Apple’s 1.0.2 memory instructions name Classic 2.2 or later as a route that retains the increased-memory entitlement.

  1. Set up AltServer on the Mac

    Download AltServer from the official macOS installation guide, move it to Applications and open it. Connect the unlocked device, accept the device/computer trust prompts, and enable Finder’s Show this iPhone when on Wi-Fi option. Use the corresponding iPad option on an iPad.

  2. Install AltStore onto your device

    From the AltServer menu-bar icon, choose Install AltStore → your device. Sign in with your own Apple account in AltServer. Keep the Mac and device connected until its completion notification appears.

  3. Trust the developer and enable Developer Mode

    On the device, open Settings → General → VPN & Device Management. Choose your own developer account and confirm trust. On recent iOS versions, the confirmation may say Allow & Restart. Then enable Settings → Privacy & Security → Developer Mode and complete the restart and confirmation.

English iPhone General settings with VPN and Device Management highlighted.
1. Find the developer profile. Open General, then VPN & Device Management. English UI excerpt from AltStore’s installation guide.
English developer profile with the Trust button highlighted for a placeholder Apple account.
2. Trust your own account. Select the profile created by your signer. The example uses a placeholder email; your account appears instead. Original guide.

Add NX2Apple in My Apps

  1. Open AltStore on the device. Open My Apps, then tap the + control.
  2. Choose your exported NX2Apple.ipa in Files and let signing and installation finish. Keep AltServer running and reachable.
  3. Open NX2Apple from the Home Screen. If the library says Needs game data, continue to the data-transfer step below.
English AltStore My Apps header with the plus control at top left and Refresh All above active apps.
+ installs an IPA; Refresh All renews existing apps. Cropped from the official My Apps screenshot. This published interface example shows the controls; your installed games appear below.

Could not find AltServer? Keep AltServer open on the same Wi-Fi network, or reconnect by USB. School, work and guest networks can block discovery between devices. Use the official connection troubleshooting if USB works but Wi-Fi does not.

Install with SideStore, then check the game’s memory budget

SideStore’s current official setup uses iloader for the initial computer installation and LocalDevVPN on the device. Follow that route rather than importing an old WireGuard configuration from another tutorial.

  1. Prepare the local connection

    Install LocalDevVPN from the source linked in SideStore’s prerequisites. Set it up and connect it. Use Wi-Fi; the documented setup requires more than a mobile-data connection.

  2. Install SideStore Stable

    Connect the unlocked device to the Mac by USB and trust the computer. Open iloader, sign in with your own Apple account, select the device and choose Install SideStore (Stable). Follow the official installation steps for your iOS version’s trust and Developer Mode prompts.

  3. Refresh SideStore before adding a game

    Connect LocalDevVPN, open SideStore and sign in with the same account used in iloader. In My Apps, tap SideStore’s expiry counter to refresh it. Finish that initial refresh before sideloading other apps.

  4. Add your IPA

    With LocalDevVPN connected, open My Apps and use its add control to select your exported IPA. Wait for the install to finish. Keep the same signing account for later refreshes and updates.

Before starting a large game: NX2Apple’s pinned instructions identify SideStore 0.7.0 with a free Apple account as needing an extra App ID capability step. Use the memory check below if the app is killed while loading. On later SideStore versions, compare the actual game log before assuming that the capability is active.

If pairing breaks after an iOS update or reset, use SideStore’s pairing recovery link. Keep the installed game and its saves while repairing the connection.

Finish the game-data transfer

SHARED APP

Install, then copy

The app executable and romfs.img travel separately. Both must be ready.

READY TO PLAY

Select the matching game

The library must have its game code, data and compatible profile.

  1. For a Shared app export, return to NX2Apple on the Mac and complete Step 3. Send the built game data to the paired device, or copy it to a drive or folder.
  2. For device transfer, keep the device unlocked and connected. If several installed copies are offered, choose the app you actually signed. Let the copy finish before launching.
  3. For an external folder, open the game’s data chooser on the iPhone and select the folder containing the matching archive. Keep the drive attached while playing.
  4. For One game, all inside, the archive is already in the IPA. Open that game’s separate app rather than looking for it in a different shared library.
NX2Apple published English iPhone library example with Needs game data status and Choose game data action.
Needs game data: finish the archive copy or choose its data folder. NX2Apple’s published English interface example. App update needed instead means the executable needs rebuilding; selecting the same folder again does not update it.

Older iPhone builds used romfs.idx shard archives. Release 1.0.2 reads the newer romfs.img route; resend the game’s data through the launcher when moving from that old layout.

The IPA installs, but the game exits entering a scene

Check memory before reducing resolution repeatedly. iOS can terminate a process that exceeds its per-app budget. NX2Apple requests com.apple.developer.kernel.increased-memory-limit; it must survive re-signing and be enabled on the App ID used by the provisioning profile.

≈3.4 GBThe unenlarged budget in the project’s recorded 12 GB iPhone case. TOTK reached it while entering the world.
6–8 GBThe project’s expected enlarged budget, depending on the device. Read your actual log to check the result.

Read the memory line

  1. Open the game and reproduce the exit once. If it runs long enough, allow a few hundred frames.
  2. In Files, open the app’s exposed folder and copy log.txt before another launch. The previous run is log.prev.txt.
  3. Find memory up to frame. Add resident to headroom to the system memory limit. That sum is the enforced budget, rather than the device’s advertised total RAM.
Example from the project’s memory diagnosis
memory up to frame 600: resident 3342 MB, ... headroom to the system memory limit 33 MB

In this example, 3342 + 33 = 3375 MB. The game has almost no remaining headroom. The pinned project report found that lowering render scale to 0.5 did not solve that guest-memory limit.

SideStore 0.7.0 / free-account capability repair

  1. Install NX2Apple through SideStore first, so Apple has registered the app’s App ID.
  2. Follow the project’s GetMoreRam instructions and sign in using the same Apple account as SideStore.
  3. In GetMoreRam, open App IDs → Refresh, select this app’s App ID, then choose Add Increased Memory Limit.
  4. Reinstall the same app through SideStore over the existing installation so its new provisioning profile includes the capability.
  5. Check a fresh log. Confirm the larger budget before changing graphics settings. GetMoreRam itself occupies a free-account app slot; remove it afterwards if you need that slot.

For AltStore Classic 2.2+ or the direct Xcode route, also inspect the log if a large game still exits. A completed installation alone is not the memory check. The pinned entitlement guide explains both the signature and App ID requirements.

Refresh signatures and update without losing saves

Refresh renews signing; rebuild updates the game app. A free-account sideload normally expires after seven days. Refresh before its counter reaches zero. A signature refresh does not add a new game framework or update the game’s data.

AltStore Classic
Keep AltServer reachable by USB or the same Wi-Fi, then use My Apps → Refresh All. Check that the expiry counter resets.
SideStore
Connect LocalDevVPN and use My Apps to refresh. Check the new expiry counter for both SideStore and NX2Apple.
Before rebuilding
Quit the game. In Files, copy the app’s save/ to a separate dated backup. If the game uses a chosen iCloud save folder, back up that folder too.
Install the update
Keep the same signing team and bundle identifier. Install over the existing app. Open the game and load your expected save before removing the old export or backup.

Deleting the device app removes its local container. Do not delete it just to renew the signature. Shared and One game exports have different identities, so switching between them needs an explicit save transfer. A fresh empty container does not mean the old save was converted.

For a free account, the three-active-app limit includes the sideloader itself. The ten App IDs registered per week are a separate limit; deleting an app does not immediately clear an App ID registration. See AltStore App IDs and SideStore’s limits.

Keep your Mac’s launcher Cache files folder and signing identity when updating the shared app. Return to NX2Apple’s rebuild and save workflow for changes to the launcher or engine.

Fix the stage that failed

The IPA cannot be selected or installation fails on a large file

Finish downloading or copying the IPA locally before picking it in Files. Check free device storage. If you exported One game, all inside, retry with Shared app and transfer the game data after installation.

The app opens but its library says “Needs game data”

The signature worked. Follow Step 3’s archive transfer or choose the correct external data folder. Re-signing the same empty shell does not add its game archive.

The game says “App update needed”

Rebuild/export the shared app with that game’s framework included, then sign and install over the same app identity. Keep its data and saves; selecting a data folder cannot add missing executable code.

The game exits at the world map, with no normal crash report

Follow the memory-budget check. Keep the game and device versions with the log. Fix a missing entitlement before trying higher FPS or repeatedly changing render scale.

The game stopped opening after several days

Check the signing expiry counter and refresh. Repair AltServer or SideStore’s connection if necessary. Keep the installed app and save backup while renewing it.

Sources: NX2Apple 1.0.2 workflow · memory entitlement · AltStore My Apps · SideStore installation. English screenshots are cropped from the linked project documentation. Guide updated 4 November 2026.