First-Party Packages

Copy Markdown View Source

Mob is fully featured — but since 0.7.0 the capabilities live in focused packages rather than one monolithic core. Core ships the kernel every app needs (screens, navigation, rendering, state, storage, permissions, distribution, the test harness, and the neutral light/dark/adaptive themes); everything else is one dep + one config line away.

Activating any capability plugin is the same two steps:

# mix.exs
{:mob_camera, "~> 0.1"}

# mob.exs
config :mob, :plugins, [:mob_camera]

Style packages use the styles lane instead:

config :mob, :styles, [:mob_themes]
config :mob, :default_style, :mob_themes

Capability plugins

PackageGives youNotes
mob_cameraPhoto/video capture, live preview session, ML-ready frame streamingThe <CameraPreview> view node is in core; pair it with MobCamera.start_preview/2
mob_photosThe system photo/video pickerNo runtime permission needed (out-of-process picker)
mob_locationGPS/network location — one-shot + continuous
mob_biometricFace ID / Touch ID / fingerprint authiOS fully working; Android currently reports :not_available (fix tracked)
mob_notifyLocal notification scheduling + push registrationPairs with the server-side mob_push; delivery into handle_info is core behavior
mob_scannerQR / barcode scanning (full-screen scanner)Also activate mob_camera (it owns the :camera permission)
mob_bluetoothBluetooth discovery + SPP/HFP/HID
mob_screencastThe device's own screen as an on-device-encoded H264 streamFor remote viewing/WebRTC; max_size is Android-only today

Style packages

PackageGives you
mob_themesFive preset looks — Obsidian (default), ObsidianGlass, Citrus, Birch, Material3. Switch live with Mob.Theme.set(MobThemes.Citrus)

Framework integrations

PackageGives you
mob_ashDeclare Ash resources, get generated list/detail/create screens per resource — Ash runs on-device

Server-side companions

PackageGives you
mob_pushAPNs + FCM push sending from your Elixir server (no mob dependency — works for any app)

Building your own