# Moonlight-Switch for Nintendo Switch Game Streaming

> Moonlight-Switch is a C-based Nintendo Switch port of the Moonlight Game Streaming Project for accessing paired Sunshine and compatible streaming hosts. It supports touch, USB input devices, multiple controllers, forwarders, and separate iOS, tvOS, macOS, and visionOS builds.

**XITRIX/Moonlight-Switch** — Moonlight port for Nintendo Switch

- Repository: https://github.com/XITRIX/Moonlight-Switch
- Stars: 1,671 · Forks: 121
- Language: C
- License: GPL-3.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/xitrix-moonlight-switch

## Moonlight-Switch purpose and supported streaming setup

Moonlight-Switch solves a specific problem: it brings the Moonlight Game Streaming Project to Nintendo Switch homebrew. The repository describes it as a port, so the relevant user is not someone looking for a standalone game store or a PC game installation. The user needs a compatible streaming source, with Sunshine mentioned specifically as the server that should be configured for some controller features. The Switch client then provides access to configured games and host features through Moonlight.

The project also has iOS, tvOS, macOS, and visionOS variants or distribution paths. That makes the repository broader than a Nintendo Switch-only source tree, but the primary description and much of the installation guidance remain centered on Switch homebrew. The README says that the Switch version is available as a release file and through HB App Store, while Apple platforms use TestFlight.

The client supports a controller-oriented interface, but it also accounts for handheld touch input. That combination is important on Switch. A user can connect a gamepad, use the touchscreen as a mouse, open an on-screen keyboard, or attach USB peripherals. The project is therefore aimed at people who want a portable client with several input methods rather than a minimal display-only receiver.

## Input handling and game launch architecture

The README documents several input paths. The touchscreen acts as a mouse: touching moves the cursor, tapping performs a left click, and a two-finger scroll scrolls the surface. While the screen is touched, ZR and ZL function as the left and right mouse buttons. The L and R sticks also behave as a scrolling wheel during touch interaction. USB mice are supported.

Keyboard input has a separate path. The on-screen keyboard appears after a three-finger tap, and USB keyboards are supported. This matters for host applications that require text entry but that the Switch does not otherwise provide through the client.

Gamepad support is broader than a single controller. The Switch gamepad is configured as an X360 gamepad by default, with A/B and X/Y swapped. The README says key mapping can be changed in application settings. Up to five gamepads are supported, including handheld mode, and half of a Joy-Con can be used. For SixAxis motion, Sunshine must recognize the controller as a DS4. Gyro and accelerometer support are documented as limited to player 1.

A direct launch path is available through NSP forwarders on Switch. The user first adds an application to the Favorites list. A forwarder can then pass the host address, application ID, and application name to the client. The application ID is stored in `/switch/Moonlight-Switch/settings.json`, while the name is passed without spaces. This design avoids requiring the user to navigate the full interface before each launch.

## Installing the Switch client and completing the first launch

The documented Switch installation begins with the latest release from the repository's releases page. Put `Moonlight.nro` at the exact directory shown below, then start `hbmenu` through Title Redirection. Title Redirection is required by the README because it provides full RAM access. Launching Moonlight after that completes the documented path.

The release file can be obtained from GitHub Releases or through HB App Store. The README does not provide a package-manager command, checksum workflow, or configuration wizard for this installation, so those steps should not be inferred. The only supported file destination documented for Switch is `sdcard:/switch/Moonlight-Switch`.

A first practical use starts with a PC or compatible host that has been paired according to the streaming setup. The README does not document the pairing screens or commands for Moonlight-Switch, so it gives no Switch-specific pairing tutorial. The client can then be used with the host and game list supplied by the Moonlight service.

For developers, the README gives a separate source-build route. It requires the devkitPro Getting Started guide for the Switch target. The recursive clone includes the repository submodules, after which CMake configures a Switch build directory and `make` produces `Moonlight.nro`.

```bash
cd 'folder/to/store/the/sources'
git clone https://github.com/XITRIX/Moonlight-Switch.git --recursive
cd Moonlight-Switch
```

The recursive clone matters because the repository contains `.gitmodules`. Without submodules, the documented build can be incomplete.

```bash
cmake -B build/switch -DPLATFORM_SWITCH=ON
make -C build/switch Moonlight.nro -j$(nproc)
```

The expected build target is `Moonlight.nro`. The README does not document signing, packaging that file into an NSP, or a separate installation step for the locally built artifact.

## Favorites, NSP forwarders, and Apple deep links

Moonlight-Switch treats saved applications as the basis for direct launch. On Switch, a user can use the NSP Forwarder Generator or create a forwarder manually. The manual interface passes `--ip`, `--appid`, and `--appname` arguments to the application. The app ID must already exist in the Favorites list, which means the first launch still requires configuring the game inside the client.

The documented example uses a private network address and a numeric application ID. The name is passed without spaces. This is useful for integrating a game into the Switch homebrew interface, but it also creates a configuration dependency: the ID stored in `settings.json` must match the host's configured application. The README does not explain how to discover or validate an ID beyond locating the saved value, so users should not treat the example ID as a universal identifier.

Apple platforms use the same launch parameters through the `moonlightswitch://` URL scheme. The documented form separates parameters with `&`, and `host` can replace `ip` when a MAC address is used. On iOS 16 and visionOS, Shortcuts actions can select a Moonlight `Game` from favorites, create one manually, or extract details and generate a deep link. Older iOS versions can use `Open URLs` with a copied link. Favorite game rows may use cached box art when available, according to the README.

This forwarder design is more than a convenience feature. It creates a reusable launch target, but it also means a broken host address or stale app ID can produce a shortcut that opens the client without successfully starting the intended game.

## Performance limits, maintenance, and platform trade-offs

The clearest limitation concerns bitrate and resolution. The README warns that high bitrate settings, especially at 1080p resolution, require overclocking the console CPU or GPU. It points readers to Sys-Clk homebrew or an Atmosphere build such as 4IFIR, and it includes a warning about possible console damage. The project does not provide a built-in overclock procedure or establish safe limits for a particular Switch model, firmware version, or cooling configuration.

That warning makes Moonlight-Switch a poor choice for users who want a conservative, unmodified installation with predictable performance. A user who does not want to manage homebrew clock configuration should stay at settings that do not require overclocking. The README's wording does not identify a supported resolution or bitrate for unmodified hardware.

Maintenance information is positive but bounded. The repository is not archived, and its last push was on 2026-07-26. Recent releases include v1.5.0 on 2026-05-24, v1.4.0 on 2026-03-28, and v1.3.4 on 2025-10-11. These dates show recent repository activity and releases, but they do not establish support for every Switch firmware, host update, or peripheral combination.

The GPL-3.0 license identifies the repository's licensing model. The README does not describe commercial support, compatibility guarantees, or a separate warranty for host configurations. Apple distribution is also different from Switch homebrew: the README directs iOS, tvOS, and macOS users to TestFlight rather than documenting a command-line installation.

Compared with using Moonlight on a supported non-Switch client, Moonlight-Switch adds Switch-specific installation, Title Redirection, NSP forwarders, and input translation. In exchange, users face the homebrew distribution model, possible overclocking requirements, and the controller mapping differences documented above.

## Conclusion

Adopt Moonlight-Switch when you already use Moonlight-compatible streaming hosts and need a Nintendo Switch client with favorites, controller remapping, and direct launch forwarders. Do not choose it as a general-purpose build without accepting the platform-specific setup, the host requirement, and the documented high-bitrate limitation. Verify pairing, Title Redirection, favorite app IDs, and the requested resolution before relying on it.

## FAQ

### How do I install Moonlight-Switch on a Nintendo Switch?

Download the latest release, place `Moonlight.nro` in `sdcard:/switch/Moonlight-Switch`, launch `hbmenu` through Title Redirection, and launch Moonlight. The README says Title Redirection is needed for full RAM access.

### Can Moonlight-Switch stream games at 1080p on Nintendo Switch?

The README says high bitrate settings, especially at 1080p, require overclocking the Switch CPU or GPU. It refers users to Sys-Clk or 4IFIR and includes a warning that overclocking can damage the console.

### How do I create a direct game forwarder in Moonlight-Switch?

First add the game to the Favorites list. A Switch forwarder then passes `--ip`, `--appid`, and `--appname` to the application, while Apple platforms can use the equivalent `moonlightswitch://launch` URL with query parameters.

## Sources

- [Issues](https://github.com/XITRIX/Moonlight-Switch/issues)
- [License: GPL-3.0](https://github.com/XITRIX/Moonlight-Switch/blob/master/LICENSE)
- [README](https://github.com/XITRIX/Moonlight-Switch/blob/master/README.md)
- [Releases](https://github.com/XITRIX/Moonlight-Switch/releases)
- [XITRIX/Moonlight-Switch on GitHub](https://github.com/XITRIX/Moonlight-Switch)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/xitrix-moonlight-switch
