Search

Search the site

All components

Browser Mockup

mac-style browser chrome with traffic lights, tabs (decorative or per-tab content), and URL bar. Render React children, liveUrl iframe, or static image - single-tab via props or multi-tab via tabs.

App preview
Live React UI inside the browser viewport.
Acme
Now in public beta

Launch pages that look ready on day one

A minimal landing preview inside browser chrome - nav, hero, and feature cards you can click through.

Ship faster

Pre-built sections and blocks you can paste into any app.

Stay on brand

Tokens and primitives that match your existing theme.

Preview anywhere

Drop mockups into docs, landings, and launch pages.

Sign in to view this example's source code.

Sign in
Live URL
Embed a remote page in the viewport. Many sites block iframes; try example.com or your own app.
Loading…

Live embed - many sites (e.g. Google) block iframes. Use your app or embed-friendly pages like example.com.

Sign in to view this example's source code.

Sign in
Browser variants
Chrome, Safari, Firefox, and Arc chrome styles with multi-tab chrome for landing-page mockups.

Chrome

Your landing page preview

Safari

Your landing page preview

Firefox

Your landing page preview

Arc

Your landing page preview

Sign in to view this example's source code.

Sign in
Interactive tabs
Per-tab children and URLs - switching tabs updates the viewport; each tab remembers its address bar value.
Home

Landing page preview - tab switches update the viewport and address bar.

Sign in to view this example's source code.

Sign in

Props

NameTypeDefaultDescription
childrenReactNodeundefinedScreen content; overrides image when provided
imagestringundefinedScreen image when children are not provided
imageAltstring"Screen content"Accessible alt text for the screen image
urlstring"app.example.com"URL in the chrome bar; also used as iframe src when it starts with http(s)
liveUrlstringundefinedRemote page to embed (iframe). Ignored when children are set. https only.
onNavigate(url: string, liveSrc: string | null) => voidundefinedFired when the user commits the editable address bar (Enter)
showLiveEmbedHintbooleantrueShow embed limitations hint below live iframe
sandboxstring"allow-scripts allow-forms"iframe sandbox tokens for liveUrl mode; tighten for demos or widen when you trust the embed
reloadOnUrlChangebooleantrueRemount iframe on navigation; false updates src in place instead
variantBrowserChromeVariant"chrome"Browser chrome styling; see BROWSER_MOCKUP_VARIANTS on the component
tabsstring[] | BrowserMockupTab[]derived from url + New TabTab chrome (max 3). Label-only strings are decorative; tabs with children, image, url, or liveUrl switch viewport and address bar per tab
showTabsbooleantrueShow variant-specific tab UI in the chrome bar
defaultActiveTabnumber0Initial active tab index when uncontrolled
defaultActiveTabIdstringundefinedInitial active tab id when uncontrolled; overrides defaultActiveTab when matched
activeTabIndexnumberundefinedControlled active tab index
activeTabIdstringundefinedControlled active tab id
onTabChange(tab: BrowserMockupTab, index: number) => voidundefinedFired when the user selects a tab
viewportClassNamestringundefinedExtra classes on the scrollable screen viewport (children mode)
screenScrollablebooleantrue when childrenEnable vertical scroll inside the screen when using children
classNamestringundefinedClasses for the outer frame container