Welcome, developer! This is the definitive guide to creating, testing, and running applications entirely within the Reborn XP environment.
The official workflow is to build and test your application directly inside Reborn XP. You will write your code using an in-OS editor like Notepad++, save your files to the virtual D: drive, and use a simple .exe launcher on your desktop for instant testing. This allows you to see your changes in real-time without any external tools.
First, create a dedicated, organized folder for your projects.
Start Menu -> All Programs -> App Market and install Notepad++. This is the recommended IDE for Reborn XP development.My Computer -> D: drive. Create a new folder named dev. This is where all your projects will live.This is the most common and easiest way to get started. It’s perfect for packaging existing HTML5 games or web tools.
D:/dev/, create a new folder named MyWebGame.src Folder: Inside MyWebGame, create another folder named src. This is where you will place your static HTML, CSS, and JS files.index.html: Open Notepad++, create a simple HTML file, and save it as D:/dev/MyWebGame/src/index.html.
<body style="font-family: Tahoma; text-align: center;"><h1>My Cool Web Game!</h1></body>
/example-apps/webview-local/webview-local.js in this SDK. Save this file as D:/dev/MyWebGame/start.js.New -> Text Document, and name it Test MyWebGame.exe.Open it with Notepad++ and paste the following JSON.
{
"action": "apps.load('D:/dev/MyWebGame/start.js').then(app => { if(app && app.start) app.start({ installPath: 'D:/dev/MyWebGame' }) })",
"icon": "defaultapp.png"
}
This is for creating apps with a more native feel that interact directly with the OS. Our Music Player is the perfect example, as it demonstrates a modular design and asset loading.
D:/dev/, create a new folder named MyMusicPlayer.player-logic.js):
/example-apps/music-player/player-logic.js in this SDK.D:/dev/MyMusicPlayer/player-logic.js.music-player.js):
/example-apps/music-player/music-player.js in this SDK.D:/dev/MyMusicPlayer/music-player.js.icon.png):
D:/dev/MyMusicPlayer/icon.png.Your project folder should now contain three files: music-player.js, player-logic.js, and icon.png.
.exe launcher on your Desktop named Test MyMusicPlayer.exe.Open it with Notepad++ and paste the following JSON.
{
"action": "apps.load('D:/dev/MyMusicPlayer/music-player.js').then(app => { if(app && app.start) app.start({ installPath: 'D:/dev/MyMusicPlayer', icon: 'D:/dev/MyMusicPlayer/icon.png' }) })",
"icon": "D:/dev/MyMusicPlayer/icon.png"
}
The Reborn XP interface uses a non-standard zoom property on mobile devices to scale the UI. While this works for native components, it can cause problems for complex third-party libraries/canvases (such as games) that rely on precise mouse/touch coordinates.
If your app uses a <canvas> or seems to have misaligned clicks on mobile, the solution is to run your app’s core UI inside an <iframe>.
The <iframe> isolates your app’s document, shielding it from the OS’s zoom property and ensuring all coordinates are 1:1.
notepad-plus-plus app. It demonstrates how to load a complex library (Ace Editor) into an <iframe> by reading the script files from the VFS and injecting them directly, which avoids common network errors.swf-wrapper app. It shows how to load Ruffle and a game file into an <iframe> for perfect touch controls.For games that run in an isolated <iframe> but require keyboard input, Reborn XP provides a global SystemGamepad API. This works automatically with whichever window is currently focused.
window.SystemGamepad.show() after your game loads. This will display a virtual D-Pad and Action button on touch devices.window.SystemGamepad.hide() when your app window is closed.This gamepad API is designed for flash games that rely on simple directional and action inputs, but it can be used for any app that needs basic virtual controls on mobile. It will automatically show the gamepad if the user is on a touch device, and hide it if they are on desktop. You can also ship your custom gamepad in your game if it uses more than arrow keys and space, and restrict it to touch devices using const isTouch = ('ontouchstart' in window).
Check the swf-wrapper example to see this API in action.
It is critical to understand the difference between your temporary .exe test launcher and how your app will work when published on the App Market.
.exe LauncherThe .exe file you create on your desktop is a development tool. You have to manually provide all the context your app needs to run:
.js file to load.installPath so your app can find its assets (like player-logic.js).icon path for both the launcher itself and for the app’s window.When you submit your app to the App Market, the process is automated and much simpler for the end-user.
.zip bundle and a separate icon.png to the market repository.C:/Program Files/MyMusicPlayer/)..exe launcher, shortcuts on the desktop, and Start Menu entries.installPath and icon path into the launch command.In summary: You use the .exe launcher to simulate the environment that the App Market will create for you in production.
You now have a complete, professional workflow for building and testing applications.