Fullscreen Mode

Launch browser sessions edge-to-edge with no Chrome UI, so pages get the full 1920×1080 and screenshots stay clean.

Overview

Fullscreen mode launches the browser covering the full screen with no Chrome UI—no address bar, no tabs, no toolbars. Pass fullscreen: true when creating a session and the page gets every pixel of the 1920×1080 screen.

By default, sessions run windowed: Steel reserves space for browser UI the same way a real desktop browser does, so the page sees a viewport slightly smaller than the screen. Fullscreen removes that reservation entirely. The result is cleaner screenshots and recordings with no browser chrome in the frame, and a viewport that exactly matches the screen.

How It Works

1
import Steel from 'steel-sdk';
2
import { chromium } from 'playwright';
3
4
const client = new Steel({ steelAPIKey: process.env.STEEL_API_KEY });
5
6
// Create a session that launches fullscreen
7
const session = await client.sessions.create({
8
fullscreen: true
9
});
10
11
// Connect to the fullscreen session
12
const browser = await chromium.connectOverCDP(
13
`wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`
14
);
15
16
const page = await browser.contexts()[0].pages()[0];
17
await page.goto('https://example.com');

The flag is set at session creation and can't be changed on a running session. It defaults to false, so existing integrations are unaffected, and it echoes back on the session object so you can confirm what you got.

The difference fullscreen makes is in the viewport. A windowed session subtracts a chrome allowance from the screen—5px of width and 91px of height—so a default 1920×1080 session hands the page a 1915×989 viewport. Fullscreen skips the subtraction:

Windowed (default)Fullscreen
Browser UIReserves space at the topNone
Screen sizeYour dimensions, capped at 1920×1080Fixed at 1920×1080
ViewportScreen minus chrome allowance (e.g. 1915×989)Full 1920×1080
innerHeight vs screen.heightSmallerIdentical

Why This Matters

Clean Screenshots and Recordings

No browser UI means no strip of dead pixels at the top of every capture. Screenshots and session recordings show only page content, with no cropping step in your pipeline.

Kiosk-Style Displays

Dashboards, signage, and embedded views render edge-to-edge, the way they would on a dedicated full-screen display. Pages built against the full viewport get the canvas they expect.

Watch-Only Views for Your Users

Pair fullscreen with a read-only embed and you can surface a live session inside your own product as a clean, edge-to-edge view your users can watch but not control. Embed the session's debugUrl with interactive=false to lock interaction to your backend, and fullscreen removes the browser chrome so all they see is the page. See Live Sessions for the embed parameters.

Viewport Matches Screen

Sites that compare innerHeight to screen.height see exactly what a maximized, fullscreened real browser reports: the two are identical. Windowed sessions report the gap a real toolbar would create, so both modes present a consistent fingerprint—fullscreen just presents the edge-to-edge one.

Things to Know

  • Fullscreen overrides dimensions. The session is fixed at 1920×1080; any width/height you pass is ignored. Use dimensions for a specific size, fullscreen for the whole screen—not both.
  • Click coordinates shift. Moving from a windowed session to fullscreen changes the viewport from 1915×989 to 1920×1080, so saved coordinates from windowed runs won't line up.
  • It's not the viewer's fullscreen button. That button expands the live viewer on your screen; fullscreen: true changes how the cloud browser itself launches.
Need help with fullscreen mode?

Reach out to us on the #help channel on Discord or @steeldotdev.