@parastud/floating-bubble
v0.1.0
Published
Back-to-Rastaa floating bubble — a draggable circular overlay to jump back into the app from a navigation app. Android only; iOS is a safe no-op stub.
Maintainers
Readme
@parastud/floating-bubble
A draggable, circular "back to Rastaa" bubble that floats on top of other apps (Ola/Porter style), so a driver can tap it to jump straight back into the app while a navigation app (e.g. Google Maps) is in the foreground.
- Android — a real overlay drawn with
WindowManager, gated on theSYSTEM_ALERT_WINDOW("Display over other apps") permission. - iOS — there is no public API to draw over other apps, so the native module is a no-op stub. Every method resolves to a safe default; nothing crashes.
This is a native Expo module: it ships native Android/iOS code and requires a native rebuild (dev client or EAS build). It cannot be delivered as an OTA update.
Install
npm install @parastud/floating-bubbleThen rebuild the native app (autolinking picks the module up automatically):
npx expo run:android # or: eas buildThe Android SYSTEM_ALERT_WINDOW permission is merged into the host app's manifest
automatically via this module's AndroidManifest.xml.
Usage
import { FloatingBubble } from '@parastud/floating-bubble';
// Is the bubble actually usable here? (Android + native module present)
if (FloatingBubble.isSupported) {
// Has the user granted "Display over other apps"?
if (!FloatingBubble.canDrawOverlays()) {
FloatingBubble.requestPermission(); // opens the system settings screen
}
FloatingBubble.show(); // float the bubble over other apps
FloatingBubble.hide(); // remove it
FloatingBubble.isVisible();
}Every method is safe to call on any platform — on iOS, or on a build without the native module, calls short-circuit to safe defaults instead of throwing.
API
| Member | Returns | Description |
| --- | --- | --- |
| isSupported | boolean | true only on Android with the native module present. |
| canDrawOverlays() | boolean | Whether "Display over other apps" is granted. |
| requestPermission() | void | Opens the system settings screen to grant the permission. |
| isVisible() | boolean | Whether the bubble is currently on screen. |
| show() | void | Show the bubble (no-op without permission / if already visible). |
| hide() | void | Remove the bubble. |
The raw native surface is also exported as the FloatingBubbleNativeModule type for
advanced use.
License
UNLICENSED — internal Rastaa package.
