mrkeyoor.com_
Fri 02 Oct 15:36 UTC
Dev Toolsevaluationupdated 02 Oct 2026

touchHLE review

touchHLE runs a limited set of early iPhone, iPod touch, and iPad apps on Windows, macOS, Android, and build-your-own Linux targets. Instead of booting iOS, it replaces early Apple frameworks itself and executes the app binary, which makes it a focused preservation tool rather than a general iOS emulator.

Verdict

Our touchHLE build ran for 149 seconds before missing Boost stopped it, and the 10-second test attempt hit the same prerequisite with exit 101. Download a v0.3.0 binary if you own a compatible early iOS game; that is the shortest route to finding out whether this project solves your problem. Build from source only after matching the documented host dependencies, and do not mistake its focused game list for general iOS compatibility.

We ran it

Lab card: what happened when we ran touchHLEScreenshot of touchHLE (touchhle.org)
Install✓ · 21s97 packages
Build✗ · 149s
Tests✗ · 10sran, no count parsed
Repo408 files~78,778 lines of source · 20.2 MB · 1 CI workflows · tests dir

Answers from our run

Does touchHLE build from source?

Dependencies installed in 21 seconds (97 packages), and the build failed. We cloned commit 8eb3418 into a clean Debian container with 3 CPUs and no project-specific setup.

Do touchHLE's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use touchHLE?

Anyone expecting broad iOS compatibility: the README says the vast majority of 2.x, 3.x, and 4.x apps do not work.

What are the alternatives to touchHLE?

UTM, QEMU, Darling. Our touchHLE build ran for 149 seconds before missing Boost stopped it, and the 10-second test attempt hit the same prerequisite with exit 101.

Setup2/5Official binaries help, but our Linux source build failed on Boost
Docs4/5Scope, legal limits, platforms, inputs, and builds are explicit
Community4/53,957 stars, an October 1 release, and current issue activity
Maturity3/5Active v0.3.0 project with deliberately narrow compatibility

Who it’s for

Owners of legally obtained, decrypted early iOS games listed as working in the compatibility database.
Preservation enthusiasts targeting iPhone OS 2.x, 3.x, or iOS 4.0.x software.
Players who want mouse, touch, controller, or simulated tilt input for supported games.
Rust developers interested in clean-room framework reimplementation and app-by-app compatibility work.

Who it’s NOT for

Anyone expecting broad iOS compatibility: the README says the vast majority of 2.x, 3.x, and 4.x apps do not work.
Modern or 64-bit iOS apps: the project says 64-bit iOS will never be supported, and current scope ends at iOS 4.0.x.
Users without a legally obtained, decrypted app binary: touchHLE does not provide games, and encrypted app binaries cannot run.
Linux users who want an official binary: Linux is a build-it-yourself target, and our Debian build stopped because Boost headers were missing.
Contributors who rely on AI-generated patches: the contribution rules forbid AI assistants and AI code generation because the clean-room work must be auditable.

Setup reality

Our sandbox installed 97 Rust packages in 21 seconds. The build then failed with exit 101 after 149 seconds, and the test command failed with exit 101 after 10 seconds. Both log tails say CMake could not find Boost_INCLUDE_DIR, requiring Boost 1.57 or newer.

The building guide lists Boost as a special external dependency and tells non-Windows, non-Android hosts to install it from their package manager. You also need Git submodules, Rust, CMake, and C/C++ compilers. Running an app requires a legally obtained, decrypted .ipa or .app bundle.

Official binaries cover x64 Windows, x64 macOS, and AArch64 Android. Linux and AArch64 macOS are self-build targets that are not regularly tested. The repository has no Dockerfile; our run never produced an emulator binary or executed the test cases.

It replaces early iOS frameworks instead of booting iOS

touchHLE takes a high-level emulation approach. It does not simulate an iPhone and boot Apple's operating system. The project supplies its own implementations of Foundation, UIKit, OpenGL ES, OpenAL, and other pieces, then runs the original app binary plus a small set of libraries. That choice avoids needing a complete iOS image and lets contributors add only the behavior a supported game needs. It also explains why compatibility advances one application and one missing API at a time.

The current target is software made for iPhone OS 2.x, iPhone OS 3.x, and iOS 4.0.x. Version 0.3.0 added iPad mode at 768 by 1024 pixels, support for iPhone OS 3.2.x and iOS 4.0.x apps, and a list of newly working games. The project explicitly rules out 64-bit iOS. Retina displays and later releases through iOS 6 are longer-term aspirations, not current support.

Most apps still do not work, even inside the stated range

The README gives the warning a buyer needs: the vast majority of apps from the supported operating-system generations do not work. Games receive priority, while general applications do not. UIKit remains incomplete because supported games use only parts of it. OpenGL ES and OpenAL cover more ground because early games depend on them heavily. The compatibility database is therefore the first stop. Check the exact app version rather than assuming that a familiar title or operating-system number is enough.

Supported does not mean flawless. Open issue 508 reports a misplaced star animation in Cut the Rope 1.5 on Android 11. Issue 552 reports corrupted Real Racing 1.00 save data on Android 12, including failures after returning to the menu. Those are user reports from particular versions and devices, not universal results. They show the right evaluation method: preserve a copy of your save, test the exact build, and judge the game you care about.

What happened when we ran it

Our sandbox checked commit 8eb3418 in an unprivileged container with 3 CPUs and 12 GB of RAM. Installing 97 Rust packages succeeded in 21 seconds. The build ran for 149 seconds and exited 101. CMake reported that it could not find Boost_INCLUDE_DIR and required Boost 1.57 or newer. The Rust CMake wrapper then stopped because its command returned status 1. That is the failure shown by the log.

The test command failed with exit 101 after 10 seconds at the same build stage. Its tail again says Boost's include directory was missing, followed by the CMake wrapper panic. The run produced no passed or failed test-case count because the test binary did not finish building. The 20.2 MB checkout contained 408 files and roughly 78,778 lines of source. It had one CI workflow and a tests directory, but no Dockerfile.

Boost is documented, but it is outside Cargo

The source build is more than cargo build. The guide requires Git submodules, a Rust toolchain, CMake, C and C++ compilers, and Boost. On Windows hosts or Android targets, Boost is unpacked into vendor/boost; other operating systems must install it through their package manager. Our base Rust image supplied enough tooling to install 97 packages, yet it did not supply the Boost headers that the native dependency expected. The failure is a setup finding, not evidence that the emulator itself crashes.

Linux is also outside the project's regularly tested binary path. Official downloads cover x64 Windows, x64 macOS, and AArch64 Android. AArch64 and x64 Linux are expected to work when built locally, but the building guide says those combinations are not regularly tested. Android requires its Rust target, cargo-ndk 3.4.0 or later, and the Android SDK and NDK. Downloading a release is the sensible first trial unless source work is the point.

You must bring a decrypted app that you obtained legally

touchHLE does not include Apple software or old games. The app binary must already be decrypted, and the project tells users to emulate only software obtained legally. On desktops, .ipa files or .app bundles can go beside the executable or in the app-picker directory. Android confines them to the application's storage area, where newer scoped-storage rules can make file management awkward. Saved games live in a separate touchHLE_sandbox directory.

Input support is thoughtful for software designed around a touchscreen and accelerometer. A mouse can tap or simulate tilt, a controller can drive a virtual cursor, and buttons can map to screen coordinates. Devices with touchscreens or accelerometers can use their physical inputs. Local Wi-Fi multiplayer currently names 2 supported games, Asphalt 4 and N.O.V.A.; Internet tunneling is unsupported and Bluetooth is unavailable. Those limits matter if preservation includes the original multiplayer experience.

v0.3.0 is fresh, and contribution rules are unusually strict

GitHub showed 3,957 stars and 98 open issues and pull requests on October 2, 2026. The API split that total into 88 issues and 10 pull requests. Both v0.3.0 and the last repository push landed on October 1. The release added more than 20 working titles, iPad support, early iOS 4 compatibility, new dynamic libraries, and coroutine-based threading after a long-running deadlock problem. This is active preservation work, despite the small version number.

Patches go through GerritHub rather than ordinary GitHub pull requests, and the project requires code review plus local verification. Its clean-room rules prohibit leaked Apple material, decompilation of Apple components, and AI-generated contributions because their training sources cannot be audited. Source is MPL 2.0, release binaries are GPL 3 or later, and bundled libraries and fonts have their own terms. For players, start with the compatibility database and a v0.3.0 binary. For builders, our missing-Boost failure is the reminder to read the host prerequisites before Cargo.

Alternatives

ProjectWhat it isPick it when
UTM gh↗A general virtual-machine app built around QEMU for Apple platforms.pick this instead when you need full-system virtualization rather than compatibility with selected early iOS apps.
QEMUA hardware emulator and virtualizer for many CPU and machine types.pick this instead when hardware-level emulation is the actual project and you can supply the operating-system stack yourself.
DarlingA translation layer for running macOS software on Linux.pick this instead when the target is macOS software on Linux, not early iPhone games.

What people are saying

  1. [github-trending] touchHLE/touchHLE

Sources

  1. touchHLE repository
  2. touchHLE README
  3. touchHLE building guide
  4. touchHLE v0.3.0 release
  5. touchHLE contribution rules
  6. Open issue 552 on Real Racing save corruption

More dev tools reviews

effect · SwitchHosts · Duo-animation · DuoLikeAnimation · team-Omzo · lid-plane · the whole board →