For game developers
Testing your game in Rare OS
Run your web game the way Rare OS players will: add it by URL, test controller input and the on-screen keyboard, and check Rare Wallet.
The best test is your game running in Rare Launcher, where it gets the same window, controller mapping, keyboard and wallet as on a player's device. This page covers how to get there and what to check.
Where to run it
On a Rare OS device
Rare OS runs Rare Launcher in Game Mode. Add your game by URL (below) and play it with the device's controls and touchscreen.
On a desktop Linux machine
Rare Launcher is also built as a standalone x86_64 AppImage for desktop Linux and SteamOS. It runs the same web game runtime as Rare OS.
- It uses the system's WebKitGTK when the system has one, and its bundled copy otherwise. Set
RARE_BUNDLED_WEBKIT=1to force the bundled copy. - The game window opens at the launcher window's size, and fullscreen when the launcher is fullscreen.
- Plug in a controller: the launcher reads it natively and maps it the same way as on the device.
In Safari or WebKit
Rare OS renders web games with WebKitGTK. When you don't have a Rare OS machine at hand, Safari (or Playwright's WebKit) is the closest engine on a Mac. Rare checks every listed web game in both Chrome and WebKit.
Add your game by URL
Open the Library
In Rare Launcher, go to Library and press Web game next to the filters.
Enter the address
Type your game's
httpsaddress. A bare host likeplay.mygame.examplegetshttps://added.Name it
Pick the name shown in the Library. The game appears under the Web filter and opens in its own window.
A game added by URL gets its input profile through the profile's hosts, so if your game already has a profile, it applies to your test build on the same host. Without a profile the game runs in keys mode with the right-stick pointer. See Per-game profiles.
A local build
The runtime opens https addresses and pages on localhost, and the Web game dialog accepts https addresses only. To test a local build, serve it over HTTPS on localhost (for example https://localhost:5173) with a certificate the machine trusts, and add that address.
Each game added this way gets its own storage profile, named after the game. To start from a clean state, remove the game from the Library and add it again under a new name.
Test controller input
Play through your main flows with a controller in the input mode your game will use.
In every mode:
- Your handlers accept synthetic events (
isTrustedisfalse). - Guide returns to the launcher and Resume brings the game back in the state you left it.
Test the on-screen keyboard
- Focus each text field and press A: Rare's keyboard opens. Type, delete with X, and check the field's value updates in your UI.
- Press Done or Menu: the keyboard closes and your field gets an Enter key press. Check that it submits.
- If your game reads typed letters from key events with no field focused, test View in your input mode: it opens the keyboard as a key sender in
focusandgamepadmodes, or inkeysmode with"keyboard": "keys"in the profile. - On a device with a touchscreen, tap a field: the keyboard opens too.
See On-screen keyboard for what counts as a text field.
Test Rare Wallet
Rare Wallet in the game window works on Sui mainnet only. There is no testnet mode, so test with real but small amounts, or sign without submitting.
- Check that your wallet list shows Rare Wallet. From your page,
getWallets().get()from@wallet-standard/appshould include it with 8 features. - Connect from a button and check the connect sheet shows your game's name and origin.
- Use
sui:signTransactionto test a full signing round trip without submitting anything: the review sheet still simulates the transaction and shows its effects. - Check the messages you show for a declined request (
User rejected the request) and for a watch-only account, which can't sign. - To test the network fee flow for new players, see Gas sponsoring.
What Rare checks before listing
Rare runs every web game in the catalog through an automated check, the same way the launcher runs it: the game's profile and Rare's runtime are injected before the page's own scripts, and the page is loaded in Chrome and in WebKit. A game passes when:
- the play URL loads,
- Rare Wallet registers as a Wallet Standard wallet, including the older feature names that older dapp-kit pages require,
- controller input arrives in the game's input mode (keys and pointer events, the virtual gamepad being polled, or the focus ring landing on a control and A pressing it),
- the page shows no errors that stop it.
The check also notes when a page needs a sign-in or is blocked in some regions. Run through the sections above and your game will pass it.
