Skip to main content
Mentra Miniapp SDK betaThe SDK is in beta, so its APIs may change before general availability.There is currently no way to distribute a miniapp built with the Miniapp SDK. In a future release, developers will upload miniapps through the Mentra Developer Console, and users will download them from the Mentra Miniapp Store. Neither service supports Miniapp SDK distribution in MentraOS 3.0.Only use the Miniapp SDK if you are comfortable with these limitations.Developing on Mentra Live? We recommend using the Mentra Bluetooth SDK.The developer tools are available in the Mentra App under Settings → Miniapp Developer Settings.Share feedback with an in-app bug report, on Discord, or by email at help@mentra.glass.
session.phone reports state from the user’s phone: notifications as they post, calendar events, and the phone’s own battery. Each concern is its own sub-module. Register a handler and the events start arriving.
src/background/index.ts
Notifications need the READ_NOTIFICATIONS permission and calendar events need the CALENDAR permission, both declared in your manifest. Phone battery needs no permission.

Notifications

session.phone.notifications.on() fires when a notification posts on the phone.
Each event is a PhoneNotificationData:

Dismissals

session.phone.notifications.onDismissed() fires when the user swipes away or clears a notification.
Each event is a NotificationDismissedData:
onDismissed is Android only. iOS does not expose dismiss callbacks to apps (an Apple privacy restriction), so subscribing on iOS succeeds but no events ever fire. The matching notifications.on() post-event works on both platforms.

Calendar

session.phone.calendar.listEvents() reads a current snapshot from all event calendars on the phone. Declare CALENDAR as a required permission; the Mentra App requests access before opening the miniapp.
The date window may span at most 31 days. limit defaults to 50 and may not exceed 100. The result contains events and a truncated flag. Each event has:

Phone battery

session.phone.onBattery() reports the phone’s battery. It stays flat (not sub-namespaced) because it’s a single event.
Each event is a BatteryData:

Cleaning up

Every subscription returns an unsubscribe function. The notifications sub-module also has a stop() that tears down every notification subscription at once. Calendar snapshots do not create a subscription.
session.phone.notifications.hasPermission tells you whether READ_NOTIFICATIONS is declared in your manifest, and session.phone.calendar.hasPermission tells you whether CALENDAR is declared. Neither tells you whether the user granted the OS prompt. A calendar request rejects with PERMISSION_DENIED if access was later revoked. See Permissions.