A modern, responsive, and feature-complete unofficial Web Application client for Nintendo Switch Online (Coral).
🌐 Live WebApp: https://dycool.github.io/nso-webapp/
👥 Friends List & Online Presence — View real-time friend online status, currently played games, friend requests, and copy Friend Codes with one click.
🎮 Game Web Services — Complete integration with official Nintendo Game Web Services, including Zelda Notes, SplatNet 3, NookLink (Animal Crossing: New Horizons), Smash World (Super Smash Bros. Ultimate), SplatNet 2, and all catalog services from Nintendo's /v4/GameWebService/List.
📸 Switch Media & Album Gallery — Browse and play uploaded screenshots and gameplay videos, view capture metadata, download zip archives, and share captures.
🧩 Dual-Mode Backend Architecture — Automatically connects to the local NSO Extension Backend for 100% direct PC-to-Nintendo communication, or seamlessly falls back to the stateless external server relay.
🌍 Full 15-Language Localization — Native interface translation across English (US/GB), Japanese, Spanish (ES/MX), French (FR/CA), Portuguese, German, Italian, Dutch, Russian, Korean, and Traditional/Simplified Chinese.
🔐 Secure & Encrypted Sessions — Encrypted Remember Me credential storage with automated session restoration, token renewal, and zero token leakage.
- Install the NSO Extension Backend for direct PC-to-Nintendo proxying.
- Open the Live WebApp.
- The app will automatically connect in
🟢 NSO Extensionmode.
- Navigate directly to https://dycool.github.io/nso-webapp/.
- Sign in with your Nintendo Account — traffic will route through the external server relay.
+-----------------------------------------------------------------------+
| CoralWeb (Browser Frontend) |
+------------------------------------+----------------------------------+
|
+-------------------------+-------------------------+
| (Detected) | (Fallback)
v v
+------------------------------------+ +------------------------------------+
| NSO Extension Backend (MV3) | | NSO Worker Backend (Cloudflare) |
| - 100% Direct Local PC Proxy | | - Stateless CORS Relay |
| - DeclarativeNetRequest Headers | | - Web Crypto Session Encryption |
| - Injected Native znca Bridge | | - Reverse-Proxied Game WebViews |
+------------------+-----------------+ +------------------+-----------------+
| |
+-------------------+--------------------+
|
v
+----------------------------------------+
| Nintendo & nxapi Coral APIs |
| - accounts.nintendo.com |
| - api-lp1.znc.srv.nintendo.net |
| - nxapi-znca-api.fancy.org.uk |
+----------------------------------------+
- Operates locally with zero external server dependencies.
- Uses Manifest V3
declarativeNetRequestto dynamically strip frame headers and injectX-GameWebTokencredentials into official Nintendo game iframes. - Injects the native mobile JavaScript bridge (
window.webkit.messageHandlers.invokeMethod) inworld: "MAIN"atdocument_start.
- Relays browser requests that Nintendo and public nxapi services do not permit directly through CORS.
- All proxied responses containing sensitive tokens enforce
Cache-Control: no-store.
The WebApp utilizes the public nxapi-znca-api service for Nintendo Switch Online Coral request attestation (f generation) and request encryption/decryption:
- Explicit User Acknowledgement: The WebApp requires user acknowledgement before authenticating.
- Ephemeral Memory Only: Short-lived nxapi OAuth access tokens remain strictly in browser memory and are never persisted to disk or shared caches.
- No Emulators Required: No Android emulator or local Frida server is required.
nso-webapp/
├── index.html # Main HTML entrypoint and navigation shell
├── favicon.svg # Application vector icon
├── css/
│ ├── base.css # Design tokens, themes, typography, and reset
│ ├── auth.css # Nintendo Account login view and modals
│ ├── layout.css # Viewport layout and responsive containers
│ ├── shell.css # Navigation bar, bottom tabs, and headers
│ ├── friends.css # Friends list, presence cards, and profiles
│ ├── album.css # Media grid, lightbox viewer, and downloaders
│ └── screens.css # Settings and secondary feature sub-pages
├── js/
│ ├── localization.js # Multilingual dictionary & translation engine (15 locales)
│ ├── core.js # Shared state, backend auto-detection, and helpers
│ ├── health.js # Network transport, retry engine, and preflight shims
│ ├── auth.js # OAuth token pipeline and nxapi client credentials
│ ├── signin.js # Nintendo Account login flow & session management
│ ├── coral.js # Nintendo Coral API client and cache layer
│ ├── friends.js # Friends list controller and presence handlers
│ ├── album.js # Switch Album controller and media viewer
│ ├── ui.js # Tab navigation, view router, and UI transitions
│ └── native.js # Nintendo app parity controller, voice chat, and settings
└── services/
├── adapters.js # Game service quirks and authentication adapters
└── manager.js # Game WebView iframe launcher and bridge manager
Run the web application locally with any static web server:
# Using Node.js built-in server or npx serve
npx serve . -l 8080Open http://localhost:8080 in your browser.
CoralWeb is an independent, unofficial open-source client and is not affiliated with, endorsed by, or sponsored by Nintendo. Nintendo Switch and Nintendo Switch Online are registered trademarks of Nintendo Co., Ltd. and Nintendo of America Inc. All game titles, screenshots, and artwork remain the property of their respective owners.
The project's original source code is available under the MIT License. Third-party open-source notices are available within the app settings.