Emulate a phone, tablet or console
deviceResize the Studio viewport to a real phone, tablet or console and throttle the network to expose mobile-only UI faults and lag bugs.
Instructions
Resizes the Studio viewport to a real device, so you can see what a player on that device sees.
Most Roblox players are on a phone and most UI is built on a desktop monitor, which is where interfaces break: a button under the notch, a menu off the bottom of a 393-pixel-tall screen, text sized for a display three times larger. None of that is visible in the data model — every one of those instances has perfectly correct properties — so this is the only way to find it short of owning the hardware.
The workflow is: set a device, screenshot, look. Pair it with playtest to check a running game's HUD rather than the editor.
list gives the ids, each with its real name, form factor and resolution — ids look like "iphone_16", "ipad_a16", "samsung_galaxy_s25_ultra", "xbox", "meta_quest_3".
network degrades the connection on purpose — latency, jitter and packet loss — which is the other half of what a phone player actually gets. A menu that works at 0ms is not evidence that it works at 300: the spinner that never stops, the button that fires twice, the HUD that arrives after the round started are all invisible on a local connection. Use a preset (wifi, 4g, 3g, poor, clear) or set the numbers yourself, then playtest and watch.
stop returns Studio to the normal editor viewport AND clears the network shaping. Do that when you are finished: a left-over emulated device makes every later screenshot the wrong shape, a left-over 400ms delay makes the whole place feel broken, and nothing on screen says why in either case.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | 'list' shows the available devices, 'set' switches to one, 'network' shapes the connection, 'stop' undoes both, 'state' only reports. | state |
| form | No | list only: show only devices of this form factor. | |
| loss | No | network only: percentage of packets thrown away, up to 50 — the engine's own ceiling. The field that finds real bugs: latency makes a game feel slow, loss makes it behave wrongly. 2-8% is a bad mobile connection. | |
| device | No | set only: the device id, e.g. "iphone_16". See `list`. | |
| jitter | No | network only: how much the delay varies, in milliseconds. Jitter breaks things steady latency does not — it is what makes replicated motion stutter rather than simply lag. | |
| memory | No | network only: pretend the machine has this many MB of memory. A cheap phone is a small screen AND little memory; this is the half that makes textures unload. 0 removes the cap. | |
| preset | No | network only: a whole connection in one word. clear=0ms (normal), wifi=15ms, 4g=60ms/0.5% loss, 3g=150ms/2% loss, poor=400ms/8% loss. Named fields below override whichever part you name. | |
| latency | No | network only: minimum delay in milliseconds, up to 1000 — the engine's own ceiling. 0 clears it. | |
| studioId | No | Target Studio; omit for the active one. | |
| direction | No | network only: which way to degrade. 'in' is the player with a bad connection, 'out' is everyone else seeing that player late. Defaults to both. | |
| orientation | No | set only: which way up. Portrait is worth testing separately — most mobile players hold the phone upright and most UI is only ever checked in landscape. |