Skip to content

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-android with openedx-app-foundation-android shared library
  • iOS: Swift + SwiftUI; openedx-app-ios with openedx-app-foundation-ios shared 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/ios contains shared network, analytics, and theming utilities
  • Plugin analytics: Firebase analytics available as optional plugin repos
  • Mobile-specific APIs: edx-platform exposes /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

RepositoryRole in This FeatureActivity LevelNotes
openedx/openedx-app-androidAndroid app (Kotlin + Jetpack Compose)HighComplete rewrite
openedx/openedx-app-iosiOS app (Swift + SwiftUI)HighComplete rewrite
openedx/openedx-app-foundation-androidShared Android foundation libraryMediumNetworking, theming
openedx/openedx-app-foundation-iosShared iOS foundation libraryMediumNetworking, theming
openedx/openedx-app-firebase-analytics-androidFirebase analytics plugin (Android)LowOptional analytics
openedx/openedx-app-firebase-analytics-iosFirebase analytics plugin (iOS)LowOptional analytics
openedx/openedx-platformMobile API endpoints (/api/mobile/)HighBacks both apps

Recent Changes

  • The "new" apps (openedx-app-*) represent a ground-up rewrite; prior apps were edx-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

YearMilestoneTeams / People Involved
~2013First mobile apps launched for edXUnknown
~2022–2023Complete rewrite begun using Kotlin/Swift + modern frameworksUnknown
~2023–2024New apps (openedx-app-*) transferred to openedx orgUnknown

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?

Schema Education — Internal Research