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
1import Steel from 'steel-sdk';2import { chromium } from 'playwright';34const client = new Steel({ steelAPIKey: process.env.STEEL_API_KEY });56// Create a session that launches fullscreen7const session = await client.sessions.create({8fullscreen: true9});1011// Connect to the fullscreen session12const browser = await chromium.connectOverCDP(13`wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`14);1516const page = await browser.contexts()[0].pages()[0];17await 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 UI | Reserves space at the top | None |
| Screen size | Your dimensions, capped at 1920×1080 | Fixed at 1920×1080 |
| Viewport | Screen minus chrome allowance (e.g. 1915×989) | Full 1920×1080 |
innerHeight vs screen.height | Smaller | Identical |
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; anywidth/heightyou pass is ignored. Usedimensionsfor a specific size,fullscreenfor 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: truechanges how the cloud browser itself launches.
Reach out to us on the #help channel on Discord or @steeldotdev.