Mobile Learning
Overview
Mobile Learning covers the native iOS and Android applications for the Open edX platform. The apps allow learners to access course content, watch videos, complete assessments, and view their progress from mobile devices.
The current apps (openedx-app-android and openedx-app-ios) are a complete rewrite of the original edX mobile apps, using modern native frameworks (Kotlin/Jetpack Compose for Android, Swift/SwiftUI for iOS) and a shared foundation architecture.
Current State (2026)
- Android: Kotlin + Jetpack Compose;
openedx-app-androidwithopenedx-app-foundation-androidshared library - iOS: Swift + SwiftUI;
openedx-app-ioswithopenedx-app-foundation-iosshared library - Content support: Video playback, text content, multiple choice problems; not all XBlock types supported
- Offline: Video download for offline viewing is a key feature
- API: Apps consume the same LMS REST APIs as web MFEs (mobile-specific APIs in
edx-platform)
Architecture
- Shared foundation:
openedx-app-foundation-android/ioscontains shared network, analytics, and theming utilities - Plugin analytics: Firebase analytics available as optional plugin repos
- Mobile-specific APIs:
edx-platformexposes/api/mobile/v*endpoints for app-optimized data shapes - Authentication: Standard OAuth2 via the LMS; JWT token management in apps
- Theming: Apps are designed to be white-labelable; theming applied via config files
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/openedx-app-android | Android app (Kotlin + Jetpack Compose) | High | Complete rewrite |
| openedx/openedx-app-ios | iOS app (Swift + SwiftUI) | High | Complete rewrite |
| openedx/openedx-app-foundation-android | Shared Android foundation library | Medium | Networking, theming |
| openedx/openedx-app-foundation-ios | Shared iOS foundation library | Medium | Networking, theming |
| openedx/openedx-app-firebase-analytics-android | Firebase analytics plugin (Android) | Low | Optional analytics |
| openedx/openedx-app-firebase-analytics-ios | Firebase analytics plugin (iOS) | Low | Optional analytics |
| openedx/openedx-platform | Mobile API endpoints (/api/mobile/) | High | Backs both apps |
Recent Changes
- The "new" apps (
openedx-app-*) represent a ground-up rewrite; prior apps wereedx-app-android/edx-app-ios(now deprecated/archived)
History
Origin
- Year introduced: ~2013 (original edX mobile apps launched)
- Initial implementation: First-generation apps (React Native or native, to be confirmed) for edX.org
- Context: Mobile access was a key differentiator for large-scale MOOC delivery; many learners in emerging markets access primarily via mobile
Key Milestones
| Year | Milestone | Teams / People Involved |
|---|---|---|
| ~2013 | First mobile apps launched for edX | Unknown |
| ~2022–2023 | Complete rewrite begun using Kotlin/Swift + modern frameworks | Unknown |
| ~2023–2024 | New apps (openedx-app-*) transferred to openedx org | Unknown |
People Who Shaped This Area
- Engineering: Unknown — open question for interview
- Product: Unknown — open question for interview
- Design: Unknown — open question for interview
Open Questions
- [ ] When were the original mobile apps first released and what framework did they use?
- [ ] What drove the decision to do a complete rewrite vs. iterating on the original apps?
- [ ] Were the apps ever React Native? Or were they always native?
- [ ] Who led the rewrite initiative (team, organization)?
- [ ] How are the apps white-labeled by providers, and who established that capability?
- [ ] What XBlock types are supported on mobile and what's the process for adding new ones?