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
| Module | Visible right after enabling? | Also requires |
|---|---|---|
accessibility | Yes — its own UI shows immediately | RECORD_AUDIO permission for voice input; TTS for read-aloud |
topDownMenu | No | setConfig(items) then show |
sideDrawer | No | setConfig(items) then show |
bottomTabs | No | setConfig(items) then show; autoHide option |
bottomSheet | Partial | provide 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.jsonBuild, 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.