Skip to content

Browser DX & Viewport Scaling

createBrowserGame and FlxBrowserViewport handle DOM mounting, automatic canvas scaling, letterboxing, mobile safe-area insets, and browser focus management.


1. Booting with createBrowserGame

ts
import { createBrowserGame } from 'flixel-pixi';
import { PlayState } from './PlayState';

const app = await createBrowserGame({
  host: document.getElementById('game')!,
  initialState: PlayState,
  width: 640,
  height: 480,
  scaleMode: 'letterbox', // 'letterbox' | 'stretch' | 'fit-width' | 'fit-height' | 'none'
  renderer: {
    preference: 'webgl', // 'webgl' | 'webgpu'
    antialias: false, // Pixel art crispness
  },
});

2. Viewport Scaling & Safe Areas

FlxBrowserViewport automatically calculates letterbox bars (pillarbox/letterbox) and respects iOS notch / dynamic island safe area insets:

ts
const viewport = this.context.getService(FlxBrowserViewport);
console.log(`Current Scale Factor: ${viewport.scale}`);
console.log(`Safe Area Insets:`, viewport.safeInsets);

Released under the MIT License.