Skip to main content

Expo Draw Over Apps

Android overlay permission, floating bubbles, edge hide, native shared values, NativeWind renderers, and fixture previews for Expo apps.

Expo app
Call the module

Ask for overlay permission, register a bubble, and update overlay visibility from React Native.

permissionshowBubbleoverlay state
Module bridge
Normalize work

Keep IDs stable, route renderer names, and send commands to the native overlay service.

bubble idrenderer keyedge hide
Android service
Draw over apps

Attach the floating view, keep it interactive, and let users move, close, or tuck it at the screen edge.

overlay viewdrag + resizefallback view
In-app previewPreview fixtureFloatingWindowPreview

Render the same fixture before starting the Android overlay.

React NativeNativeWindJetpack ComposeNative shared values

Request overlay permission

Check whether Android allows draw-over-apps, open the settings screen when it does not, and refresh state when the app resumes.

Show named bubbles

Use stable bubble IDs for separate overlay surfaces, including counters, timers, and resize examples from the fixture app.

Share overlay values

Store small numeric values in native state so app controls and bubble controls can update the same counter or window step.

Preview before overlay

Render a bubble fixture inside the app with FloatingWindowPreview before asking for permission or starting the Android service.

Style with NativeWind

Use className in custom bubble renderers when your Expo app already has NativeWind configured.

Docs that match the example app

The docs now follow the example fixtures directly: React Native counter, Jetpack Compose counter, countdown timer, React Native resize bubble, and Native Expo UI resize bubble.

npm run docs:devnpm run docs:build