MobiLauncher

Customize your launcher

What every customer can change, where to change it, and what each field does on the device. Section anchors below match the "Read the docs →" links in each Builder section.

Where the editor lives

Portal → Your fleets → click your tenant. Four outer tabs at the top:

  • Launcher — the Builder. Everything on this page.
  • Broadcasts — push messages to devices (Pro+, details)
  • Devices — registered devices, QR sticker, install paths
  • Upgrade — buy Pro/Enterprise, or manage subscription (billing)

Inside the Launcher tab is a left sidebar of sections — each maps to one heading below.

Profile basics

Identity for this deployment. Three fields:

  • Deployment name — string shown in the launcher header. Customers see this every time they look at a device. Keep it short — "Acme Tools — Field" beats "Acme Tools Corporation Field Operations Tablet Fleet v3 (2026)". Max 120 characters.
  • Tenant ID — binds the config to a license. Set during signup; a mismatch with the license blob ⇒ runtime falls back to Core. You shouldn't normally edit this.
  • MDM — which kiosk-capable MDM owns this deployment. Drives the Device Info dialog's expected fields and (later) which agent-action bridge the renderer asks the host for. none is the right answer for browser-kiosk + sideloaded APK deployments.

Each tenant has at least one profile. Pro tier unlocks multiple profiles (see Schedules below).

Features

Toggle which capabilities the launcher honors. Three groupings:

  • Core (Free) — always on — tile grid, basic theme, built-in tools, QR provisioning, single profile, friendly error screens. No toggle — these ship with every tenant.
  • Pro — theming, multi-profile, scheduled profiles, broadcasts, custom tools, package blocklist, biometric admin gesture, signage mode, agent action tiles, diagnostic overlay.
  • Enterprise — remote config, telemetry export, SSO display, audit log.

The Builder accepts every flag at every tier so you can preview a Pro/Enterprise launcher on a Free license. On-device the runtime intersects with what your license actually entitles — a Pro flag on a Free device silently no-ops. See tiers for the full matrix.

Theme

Light/dark mode + brand colors. Available at every tier.

Brand colors (Free + Pro + Enterprise)

  • Default modeAuto (follow OS), Always dark, Always light. Devices can override per-kiosk via the launcher's header menu on Pro.
  • Primary — your brand color. Paints launch buttons, focused tiles, the header brand mark. Carries across light AND dark mode via the renderer's "brand carry" cascade — set it once.
  • Accent — secondary highlight. Tile focus rings, links, the default header mark color.
  • Reset to MobiLauncher defaults — wipes the entire theme back to the brand defaults (basic + advanced light + advanced dark + wallpaper + logo). Use this if the launcher is looking off and you want a clean slate.

Light palette / Dark palette (Pro)

Per-surface palette editors under sub-tabs:

  • Surfaces — background, surface
  • Chrome — header bg, header ink, hero bg, footer bg
  • Tiles & cards — tile bg, tile border, card bg
  • Text — text, text-muted
  • Accents — primary, accent, CTA, icon accent, divider

The Dark palette is independent — a Pro tenant can set paletteDark.primary to a lighter blue (e.g. #5BAEEF) for better contrast on dark surfaces, and the renderer applies that only in dark mode.

Wallpaper (Pro)

Drag-and-drop upload for the hero band background image. Capped at ~3 MB after base64 encoding. The Portal downscales > 1920×1080 before storing.

Logo & font (Pro)

  • Logo — replaces the default 3×3 grid mark in the launcher header. Capped at ~500 KB encoded; 256×256 source recommended.
  • Custom font — asset ref the device resolves at runtime (your MDM ships the .ttf alongside the launcher bundle).

Status bar

Top app bar. Visibility + per-icon toggles.

  • Visible — master switch. Off ⇒ no header at all.
  • Show clock — always-on time display on the right side.
  • Show battery / Show signal — placeholders today; light up when the host bridge exposes the relevant Android API.
  • Show current user — SSO display, Enterprise only (ssoDisplay flag). Pulls the username from the device's MDM identity agent.

Hero

The slab between the launcher's header and tile grid. Five variants:

  • Featured tiles — up to 4 large icon tiles. The default. Configure the slot tiles in the editor below the variant picker.
  • Clock — large time display + optional date + optional caption line. Useful for wall-mounted lobby displays.
  • Weather — clock + Open-Meteo current weather card. Lat/lng in the config OR uses browser geolocation. Free, no API key.
  • Rich text — Tiptap-authored content (headings, lists, emphasis, links). The launcher renders ProseMirror JSON via an in-house safe walker — no Tiptap dependency on-device.
  • None — no hero. The tile grid expands to fill the whole launcher band. Useful for rugged handhelds where every pixel counts.

Switching variants in the Builder seeds sensible defaults so it's a one-tap change, not a fill-out-a-form moment.

Tile grid

The main grid of tap-to-launch tiles. Six tile types:

  • App — launches an Android app by package name (e.g. com.android.chrome). On browser-kiosk hosts that can't dispatch intents, the tile shows a demo toast instead of failing silently.
  • Web — opens a URL. Defaults to opening in the launcher's WebView; openExternal: true asks the host to dispatch Intent.ACTION_VIEW if it can.
  • Folder — opens a modal with child tiles. 1–16 children, no nested folders. Good for grouping admin tools.
  • Spacer — blank cell. For deliberate layout gaps.
  • Divider — a thin accent bar (2–16 px tall, configurable color) that spans every column of its row. Visual section break.
  • Agent actionreboot, clearAppData, runScript, syncNow via the device's MDM agent. Pro tier; Free configs may include the tiles but the runtime no-ops them.

Grid size

Columns (3–8) × rows (3–12). The grid scrolls vertically when you have more tiles than fit, so don't be shy with rows. Good defaults:

Device Cols × Rows
10" tablet 4 × 3
7" tablet 3 × 4
5–6" phone 3 × 4
Zebra TC handheld 3 × 4
Signage / TV 5 × 3

You can change these later — devices pick up the new layout on next reload (or on the next remote-config poll if Enterprise).

CSV import

Bulk-load app/web tiles from a CSV via the "Import CSV" button. Three columns: type,label,target. Skips malformed rows; surfaces counts when done.

Live preview with device frames

The pane to the right of the Builder is a live iframe of the launcher rendering your current config. Every edit propagates within ~200ms. The device dropdown picks a real device shell (Zebra ET40, Galaxy XCover, Honeywell EDA, etc.) and renders the iframe at that device's exact CSS pixel resolution — so media queries fire the same way they will on-device. The screenshot button saves the current preview as a PNG; toggle "Frame" to include the device bezel + Android status bar in the image.

Tools

Custom entries in the launcher's Tools modal (the dropdown under the header's grid icon). Built-in tools (Device Info, DNS/Ping, Calculator, Speed Test) always render above your entries. Up to 12 custom tools; the action grid is 4 columns. Pro+ feature (customTools flag).

Each tool is a tile in the same format as grid tiles — App, Web, Agent action, etc. Reuses the same icon-picker + label controls so authoring matches the main grid.

Admin access

Operator escape hatches and audit settings.

  • Exit gesture + Exit PIN (Pro) — long-press a corner of the launcher to reveal an admin exit dialog. PIN is bcrypt-hashed client-side before it enters the config; raw PINs never persist. Without this, a kiosked device has no way out short of a reboot or MDM intervention.
  • Diagnostic overlay (Pro) — long-press the OTHER corner to show engine state, license status, telemetry counters. Useful for field debugging without remote-console access.
  • Audit log (Enterprise) — record every admin gesture, PIN entry, and overlay open for compliance review. Requires the auditLog flag entitled at runtime.

Schedules

Time-of-day profile rotation. Pro feature (scheduledProfiles).

Configure one or more schedules, each pointing at a profileId from profiles[] with a day-of-week mask and a start/end time window. At any moment the launcher walks the schedules in array order; first match wins. If nothing matches, it falls back to defaultProfileId.

A typical multi-shift kiosk:

Default → Day shift  (Mon–Fri  08:00–17:00 implicit)
Schedule 1 → Night shift  (Mon–Fri  17:00–06:00)
Schedule 2 → Weekend       (Sat–Sun  00:00–24:00)

Resolution happens client-side on the device — no server round-trip at shift boundaries.

Saving

Edits autosave to your tenant slot ~800ms after you stop typing. The save strip at the bottom of the Builder flashes "Saved" when each save lands. Pro tier remote-config-polling devices pick up the new config on their next poll (default 5 minutes).

If you want to ship config to devices that can't reach our servers, use the Offline bundle download — see offline bundles.

If save fails:

  • "Edit token rejected" — your browser's stored token is wrong. Sign up again with the same email to recover (we return your existing tenant + a fresh token).
  • "Schema validation failed" — the editor shouldn't let this happen, but if it does, the server's validator is the source of truth. Email a screenshot and we'll fix the editor.