Skip to main content
The Vision SDK provides 13 components organized into three categories. Import them from @1upvision/sdk.

Layout

Box, CompactView, List, VStack, HStack

Display

Text, Image

Inputs

Button, Toggle, TextField, Dropdown, and more

Custom Styling

All components accept an optional style prop of type VisionStyle. This is a typed subset of CSS properties that gets sanitized by the host before rendering as inline styles.

Fonts

The SDK supports two font-loading paths for extensions:
  1. Google Fonts via vision.config.json
  1. Local fonts via localFont()
Local font files should live in your extension project’s public/ directory. They are copied into dist/ automatically by the CLI.

Supported Properties

Security Restrictions

For security, the following are blocked by the host sanitizer:
  • position: "fixed" and position: "sticky" — only "relative" and "absolute" are allowed
  • url() values in component styles — use localFont() for fonts and <Image> for images
  • expression(), javascript:, @import, and other injection vectors

Keyframe Animations

Use defineKeyframes to create CSS @keyframes animations. Define keyframes at module scope and reference them in animation or animationName style properties.
Keyframe stop labels can be from, to, or percentage values like 0%, 50%, 100%. Each stop accepts the same VisionStyle properties. The host sanitizes all keyframe values using the same security rules as inline styles.

Overlay Example

Build a custom scoreboard overlay using Box and styled components:

Behavior by Target

Components behave differently depending on where they render: Input components are fully interactive in the editor and interactive page. On the OBS layer, they degrade to static display since viewers can’t interact with the overlay.