All but React Native are in beta.
All but React Native are in beta.

This tool works with both Expo and React Native CLI projects. Just install and go.
Overlay design mockups directly on your running app to compare against your implementation. Load a mockup, match its scale and position to the screen, and adjust opacity to compare spacing and alignment.
The demo shows component targeting and alignment on a mock storefront.

the design on your app, in 84 secondsThis interactive overlay uses a mock storefront and design fixture. Try a tagged target or free placement.
npm install @buoy-gg/image-overlayThat's it. Image Overlay appears in your FloatingDevTools menu.
To make a component discoverable in Component Mode, add a testID with the image-target: prefix:
<View testID="image-target:LoginCard">
<Text>Welcome back</Text>
<TextInput placeholder="Email" />
<Button title="Sign In" onPress={() => {}} />
</View>
<View testID="image-target:LoginCard">
<Text>Welcome back</Text>
<TextInput placeholder="Email" />
<Button title="Sign In" onPress={() => {}} />
</View>
The text after image-target: becomes the label shown in the target list. Add as many targets as you like throughout your app:
// Header section
<View testID="image-target:Header">
<Logo />
<NavBar />
</View>
// Product card
<View testID="image-target:ProductCard">
<Image source={product.image} />
<Text>{product.name}</Text>
<Text>{product.price}</Text>
</View>
// Bottom tab bar
<View testID="image-target:TabBar">
<TabButton icon="home" />
<TabButton icon="search" />
<TabButton icon="profile" />
</View>
// Header section
<View testID="image-target:Header">
<Logo />
<NavBar />
</View>
// Product card
<View testID="image-target:ProductCard">
<Image source={product.image} />
<Text>{product.name}</Text>
<Text>{product.price}</Text>
</View>
// Bottom tab bar
<View testID="image-target:TabBar">
<TabButton icon="home" />
<TabButton icon="search" />
<TabButton icon="profile" />
</View>
Only
image-target:testIDs are scanned — your existingtestIDprops for testing (e.g.,testID="login-button") are not affected and won't appear in the target list.
You can load a design mockup in two ways:
expo-clipboard.Clipboard image loading requires expo-clipboard and its native setup. Use a direct image URL for the minimal path; load it, reduce opacity, align the mockup, and lock the overlay before interacting with the screen.
Tap Component Match to scan your app and see all tagged targets. Select one, and the overlay pins to that component, measuring its exact position and size. Turn on Auto Track and the overlay follows the component when it scrolls or moves.
Manually position and resize the overlay anywhere on screen. Drag to move, pinch to scale — useful when you want to compare a full-screen mockup or a section that doesn't map to a single component.
Export the frame as an image, then load it in Image Overlay from clipboard or URL — adjust opacity over the running app and differences jump out.
The Swift iOS port exposes an image-overlay adapter. Check the selected device's capabilities before calling it; these actions are not registered by the React Native tool.
Use listTargets and selectTarget({ id }) to attach an overlay to a marked app view. loadImage({ url }) starts an HTTP(S) image download. Read getSnapshot until loading is false, then check hasImage and error. Image loading shares the on-device controller and excludes its requests from Buoy Network capture.
setSettings accepts opacity (0–1), positive scale, point offsets (offsetX, offsetY), and boolean visibility, lock, flip, outline, and tracking settings (visible, locked, flipped, flippedY, showOutline, autoTrack). fitToScreen fits the image to the screen width. resetSettings resets placement adjustments, opacity, and flips. remove clears the image and cancels pending loading.
Tag browser targets with data-testid="image-target:Name" and import the browser registration before React DOM. The shared controls support target and free placement. Import it from the package's /web entry (7.0.41 or later). See Web installation for registration, dependencies, and browser boundaries.
Image Overlay is also part of Buoy for Swift for SwiftUI and UIKit apps. Setup and what the Swift version covers are in the Swift tools guide.