Skip to main content
Unveilydocs

UI Modules (opt-in)

Turn UI modules — tab bar, drawer, bottom sheet, accessibility — on and off in config.json.

Overview

The SDK's UI modules (accessibility, topDownMenu, sideDrawer, bottomTabs, bottomSheet) are opt-in. The config.json you receive ships with every module disabled; enable only the panels your app actually uses. iOS and Android use the same config.json approach.

Default = opt-in (all disabled)

In the distributed package, app/src/main/assets/config.json has every UI module disabled.

"modules": {
  "accessibility": { "enabled": false, "topDownPanel": true },
  "topDownMenu":   { "enabled": false },
  "sideDrawer":    { "enabled": false },
  "bottomTabs":    { "enabled": false, "autoHide": true },
  "bottomSheet":   { "enabled": false }
}

Flip only the panels you need to "enabled": true.

Why opt-in

  • No surprise UI/gestures — unrequested tabs, drawers, and panels (and their touch observers) won't inject into your app.
  • Permissions & store review — the accessibility module can use the microphone (voice input, RECORD_AUDIO) and TTS. Enabling it by default would pull in permissions you may not want and could complicate review.
  • License tier — in production, module activation is tier-gated on the remote/license path.

The local config.json is not tier-gated, so a local demo can show panels your production tier would block. Don't judge tier availability from a local demo.

What each module needs

ModuleVisible right after enabling?Also requires
accessibilityYes — its own UI shows immediatelyRECORD_AUDIO permission for voice input; TTS for read-aloud
topDownMenuNosetConfig(items) then show
sideDrawerNosetConfig(items) then show
bottomTabsNosetConfig(items) then show; autoHide option
bottomSheetPartialprovide content to display

Tier minimums: accessibility · bottomTabs · topDownMenu = basic, sideDrawer = standard.

For each module's actual API, see the Navigation (tab bar / drawer) and Accessibility docs.

Try the demo instantly

A ready-to-run config with every panel enabled ships alongside as config.sample.json. Back up your current config, overwrite it, and try it immediately.

cp app/src/main/assets/config.json app/src/main/assets/config.json.bak
cp app/src/main/assets/config.sample.json app/src/main/assets/config.json

Build, open the app, and use the bundled test bridge page. Restore from the .bak copy when finished.

config.sample.json is for evaluation. In production, keep an opt-in config.json with only the modules you use enabled.

On this page