How openbubbles/openbubbles-app works
OpenBubbles is a cross-platform messaging client that uses Apple services through a connected Mac and Apple ID. The principal user workflow—compose or receive a message, sync it through the connected messaging service, and display it in the client—is documented, but the Flutter UI and Mac server are not in this tree, so their internal stages and wiring cannot be shown. The visible Android code handles native integrations, background event delivery, notifications, FaceTime, and extensions; Rust supplies native functionality. The graph preserves documented product capabilities without assigning them unsupported source paths.
Main entry points: lib.rs Rust native API · MethodCallHandlerImpl.kt Native method handlers · APNService.kt Native push service · DartWorkManager.kt Background dispatch
Components 21
Messaging client
- Flutter client
Android integration
- Android host
android/app/src/main/kotlin/com/bluebubbles/messaging/MainActivity.kt - Native method handlers
android/app/src/main/kotlin/com/bluebubbles/messaging/models/MethodCallHandlerImpl.kt - System features
android/app/src/main/kotlin/com/bluebubbles/messaging/services/system - Notifications
android/app/src/main/kotlin/com/bluebubbles/messaging/services/notifications
Push and native
- Firebase integration
android/app/src/main/kotlin/com/bluebubbles/messaging/services/firebase - FCM receiver
android/app/src/main/kotlin/com/bluebubbles/messaging/services/firebase/BlueBubblesFirebaseMessagingService.kt - Socket service
android/app/src/main/kotlin/com/bluebubbles/messaging/services/foreground/SocketIOForegroundService.kt - Background dispatch
android/app/src/main/kotlin/com/bluebubbles/messaging/services/backend_ui_interop/DartWorkManager.kt - Dart worker
android/app/src/main/kotlin/com/bluebubbles/messaging/services/backend_ui_interop/DartWorker.kt - Native push service
android/app/src/main/kotlin/com/bluebubbles/messaging/services/rustpush/APNService.kt - Apple account auth
android/app/src/main/kotlin/com/bluebubbles/messaging/services/rustpush/AppleAccountLoginHandler.kt
Calls and extensions
- Messaging extensions
android/app/src/main/kotlin/com/bluebubbles/messaging/services/extension - FaceTime handling
android/app/src/main/kotlin/com/bluebubbles/messaging/services/facetime
Native runtime
- Rust native API
rust/src/lib.rs - Native messaging
rust/src/native.rs - Rust API
rust/src/api/api.rs - Native keystore
rust/src/keystore.rs
Other components
- User
- Connected Mac
- Apple services
Connections 19
- User → Flutter client: uses
- Flutter client → Connected Mac: connects through
- Connected Mac → Apple services: accesses
- Flutter client → Android host: runs on
- Android host → Native method handlers: registers handlers
- Native method handlers → System features: dispatches calls
- Native method handlers → Notifications: dispatches calls
- FCM receiver → Background dispatch: queues event
- Socket service → Background dispatch: queues event
- Background dispatch → Dart worker: schedules
- Firebase integration → Apple services: configures messaging
- Native push service → Rust native API: initializes native
- Native push service → Dart worker: dispatches events
- Apple account auth → Native push service: uses push state
- Rust native API → Native messaging: declares module
- Rust native API → Rust API: declares module
- Rust native API → Native keystore: declares module
- Flutter client → Messaging extensions: uses messaging features
- Flutter client → FaceTime handling: uses call features