-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Write your mod's interface as index.html + app.css + app.js. Sideload parses the HTML, resolves the CSS,
runs the JavaScript and renders the result as real Unity UI objects and TextMeshPro text. No browser, no native
code, no subprocess.
🛟 Need help or found a bug? Get support at support.doodesch.de/sideload.
Mod repo · Reference app (WhatsDab) · Support
- Installation - for players, and for the three support DLLs that trip people up.
- Your First App - six steps from empty folder to an icon on the in-game phone.
-
The Bridge - how your C# and your page talk:
s1.call,Emit, storage,fetch. - CSS and Layout - exactly what the engine reads, and the four layout rules that differ from a browser.
- JavaScript, DOM and Events - the globals you get, the DOM subset, the five events.
- Phone Integration - app icon, unread badge, notifications, orientation, images.
- Dev Loop and Testing - hot reload, the F9 overlay, real Chrome DevTools, headless tests.
- Troubleshooting - symptom first. Read this before filing anything.
-
API Reference - the whole
Sideload.Apisurface on one page.
A phone app is a folder of three web files plus one line of C#:
Apps.Register("mystash", "MyMod.Assets.mystash", title: "Stash");That puts an icon on the in-game phone and renders your bundle behind it. Your page reaches your mod with
s1.call('name', arg), which runs a C# handler on the Unity main thread in the same frame and returns its
string. Your mod pushes the other way with app.Emit('name', payload).
Your project references no Unity assembly, no IL2CPP interop and not Sideload itself - only MelonLoader plus a single-file shim that finds Sideload by reflection. Without Sideload installed every call is a no-op, so the mod loads rather than throwing.
The same screen, built both ways: the hand-assembled uGUI version of a chat app was 781 lines of C#, the
Sideload version is 518 lines of HTML/CSS/JS. What sits in those lines matters more than how many there are: the uGUI
version spends sixty of them computing the width, line count and height of one speech bubble from text
measurements. In CSS that bubble is align-self, max-width and padding.
And changing the layout costs a file save instead of a rebuild and a game start.
Sideload is not a browser and does not pretend to be. Before you design against it, read
CSS and Layout - the supported property list is finite, units are px and % only, and
four layout behaviours differ from what a browser would do. Anything unsupported is parsed and dropped
silently, so check the list instead of guessing.