← Case Studies
JU

Tooling · React · Game UI

2025 · 5 min read

Built while employed at Ruby Seven Studios · UI/UX Artist

JSON UI Previewer

A previewer that takes the JSON (or plist) a designer exports from Photoshop and re-renders the entire game UI in the browser — pulling sprites straight from the texture atlas, switching orientation, dragging elements, and stepping through every screen in a single session.

Curated to preview JSON UI from game assets made in Photoshop and packed into a texture pack — built while employed at Ruby Seven Studios as a UI/UX artist.

▶ Open Previewer → View on GitHub → See the tool ↓

JSON · plist

Formats supported

Multi

Screens / session

↔ / ↕

Orientations

0

Round-trips to engine

JSON UI Previewer — dark desktop-style window with Preview / Code tabs, an Open Folder button, and an empty layout canvas waiting for a screen to be selected.

01 · The shell — drop a folder of JSON + atlas files in to populate every screen on the left.

JSON UI Previewer with a loaded project — a 'Winter Wonderland' sweepstakes screen rendered on the canvas, 25 detected screens in the left sidebar, and the right properties panel showing the selected object's name, X/Y, width/height plus its source JSON.

02 · Loaded — sidebar lists every detected screen, canvas renders the live UI, properties panel shows the selected node and editable source JSON.

/ What's on screen

Detected screens. Left sidebar auto-lists every screen in the loaded folder — 25 in this project — with the asset / widget counts shown in the top bar.

Live canvas. Centre renders the actual UI from JSON + atlas. Click any element to select it.

Selected object. Right panel shows name, X, Y, W, H and the live JSON for the picked node — editable, with a reset button.

Source JSON. Full source tree is mirrored below — edit, reload, or download the file straight from the panel.

Mobile · Canvas · Portrait. Three top-bar toggles flip the canvas between mobile frame, raw canvas, and portrait/landscape orientation.

Run mode. The Run button switches into interactive playback — every button reacts with its real hover / pressed / disabled atlas state.

Labels & visibility. Toggle element labels, show/hide groups, zoom in / out, fit-to-screen and reset view — same muscle memory as a DCC tool.

Drag-to-edit. Pick up any node on the canvas and reposition it to sanity-check spacing without re-exporting from Photoshop.

01

/ The problem

You can't see the UI you just designed.

Game UIs designed in Photoshop don't ship as Photoshop files — they ship as a JSON (or plist) layout description plus a .jpg texture atlas. The moment those two files leave the designer's machine, nobody can actually look at the result until an engineer wires them into the game build. Was the export clean? Did a node land off-screen? Is the atlas slicing the right sprite for that button? You find out after a full engine round-trip — sometimes hours later.

02

/ The insight

The JSON already says where everything goes.

The exported layout file isn't opaque — it's a tree of nodes with positions, sizes, anchors, and a reference into the atlas. A previewer doesn't need the game engine; it just needs to read the tree, look up each sprite rectangle in the atlas .jpg, and draw the same node hierarchy in the browser. From there, every extra feature — interaction, drag, orientation, multi-screen — is just more behaviour on the same tree.

Photoshop UI JSON / plist (layout) Texture atlas (.jpg) JSON UI Previewer renders · interacts · edits

One folder in. A live, clickable UI out.

03

/ The build

A desktop-style window for game UIs.

JSON UI Previewer is a React app that looks and feels like a small DCC tool: a left sidebar lists every screen in the loaded folder, the centre is the canvas, and a top bar carries the orientation, run, and view-mode toggles. Point it at a folder of exported JSON/plist + atlas files and every screen in the project becomes a clickable entry in the sidebar.

  • Sprite-accurate rendering. Each UI node reads its frame out of the atlas .jpg and gets drawn at the position the JSON says — no engine, no rebuild.

  • Interactable for real. The Run button switches the canvas into play mode — every button responds, hover / pressed / disabled atlas states swap dynamically, just like in-game.

  • Orientation toggle. Flip the same layout between landscape and portrait to catch anchor and safe-area bugs before they ship.

  • Drag-to-edit. Pick up any element on the canvas and reposition it to sanity-check spacing and alignment without re-exporting from Photoshop.

  • Multi-screen sessions. Load a whole app, web view, or game's worth of screens at once and jump between them from the sidebar — no reloading per screen.

  • Fixes the plist viewing pain. Handles the awkward .plist export path that previously had no good viewer — same tree, same atlas lookup, same canvas.

04

/ The outcome

Catch UI bugs in seconds, not builds.

The whole point is to close the loop. Designer exports the JSON, drops the folder into the previewer, and within seconds knows whether the layout, the atlas slicing, and the button states are all correct — long before an engineer ever touches the build. The plist path that used to be a black box is now just another screen in the sidebar.

/ Grab the tool

JSON UI Previewer

Open source. Clone, point it at your exports folder, and start previewing your .json and .plist UIs in the browser.