🚀 Mobile App Configuration Flags
This document defines the configuration flags for the Open edX mobile apps (Android 🤖 and iOS 🍎).
⚠️ Note: This does not include temporary flags for unfinished features. Such flags will be removed once the feature is complete.
🔎 Quick Legend
🔑 → Core configuration key
🤖 → Android only
🍎 → iOS only
🔑 Core Settings
🔑
APPLICATION_ID: String
Unique identifier for the app (Android package name / iOS bundle ID).🔑
PLATFORM_NAME: String
Platform display name used in UI (e.g.,"edX","OpenedX", etc ).🔑
ENVIRONMENT_DISPLAY_NAME: String 🍎
Displayed on the Settings screen indicates the current configuration.
Leave this empty in the production build to avoid user confusion (e.g.,"Prod Test","Stage", etc).🔑
API_HOST_URL: String
Base host for your Open edX instance; prefix for all API calls.
Example:https://courses.edx.org🔑
ECOMMERCE_URL: String
Base URL for course upgrade APIs (create-order).🔑
OAUTH_CLIENT_ID: String
LMS mobile-side OAuth client ID.🔑
TOKEN_TYPE: String
Auth token type (usually"JWT").🔑
FEEDBACK_EMAIL_ADDRESS: String
Destination email for in-app feedback.🔑
FAQ_URL: String
FAQ page URL (button hidden if empty).🔑
DELETE_ACCOUNT_URL: String
Account deletion URL (option hidden if empty).🔑
THEME_DIRECTORY: String 🤖
Selects the theme during compile time (set via Gradle) to override the default Open edX theme.🔑
THEME: Dict 🍎
Theming options.ROUNDED_CORNERS_STYLE: BooleanBUTTON_CORNERS_RADIUS: Int
🔑
URI_SCHEME: String
Custom URI scheme for web links opened in WebViews (e.g.,edxapp). Only URIs that start with this scheme will be parsed.
🧩 Features
🎯
DISCOVERY: Dict
Configure course/program discovery.TYPE: String —"native"or"webview"– The app supports two different course enrollment UIs: The native and the webview-based.WEBVIEW: DictBASE_URL: String — Base URL for Discovery webviewCOURSE_DETAIL_TEMPLATE: String — The web URL for an individual Course About screen.
It has a template argument"path_id"representing the external website's ID for the course (e.g.,"https://www.edx.org/webview/course/{path_id}").PROGRAM_DETAIL_TEMPLATE: String — The web URL for an individual Program About screen.
It has a template argument "path_id" representing the external website's ID for the program (e.g.,"https://www.edx.org/webview/course/{path_id}").
🎓
PROGRAM: Dict
Configuration for enrolled programs.TYPE: String —"native"or"webview"WEBVIEW: DictBASE_URL: String — Programs screen URLWEBVIEW.PROGRAM_DETAIL_TEMPLATE: String — The web URL for an individual program detail page.
It has a template argument"path_id"representing the external website's ID for the program (e.g.,“https://courses.edx.org/dashboard/{path_id}?mobile_only=true").
📜
AGREEMENT_URLS: Dict
Legal and policy links (field hidden if missing).PRIVACY_POLICY_URL: StringCOOKIE_POLICY_URL: StringDATA_SELL_CONSENT_URL: StringTOS_URL: StringEULA_URL: StringSUPPORTED_LANGUAGES: List — Supported languages for these policies, e.g.,["es"](default language isen)
🧭
UI_COMPONENTS: Dict
Toggle UI capabilities in course flows.COURSE_UNIT_PROGRESS_ENABLED: Boolean — Show progress within course unitsCOURSE_DROPDOWN_NAVIGATION_ENABLED: Boolean — Manages the course navigation flow
If true, Section → Subsection → Components and the Units are available in a dropdown
If false, Section → Subsection → Units -> Components
🗂️
DASHBOARD: Dict
Controls the main dashboard layout.TYPE: String —"list"or"gallery"(Gallery includes the primary course card)
🚪
PRE_LOGIN_EXPERIENCE_ENABLED: Boolean
Enables the pre-login launcher screen to browse the Discovery UI without signing in. If disabled, the Sign-In screen will be shown as the initial screen.🌍
SOCIAL_AUTH_ENABLED: Boolean
Enable social buttons on the sign-in and sign-up screens.🆕
WHATS_NEW_ENABLED: Boolean
Show “What’s New” flow on app updates.🎬
VIDEO_PLAYER: Dict
Native video player playback options.BLACKLIST_URLS: List — Mark specific video hosts as unsupported on mobile
🌐 Third-Party Integrations
🔎
GOOGLE: Dict
Google sign-in / services. Google integration is currently limited to using Google as a third-party authentication provider.ENABLED: BooleanCLIENT_ID: StringGOOGLE_PLUS_KEY: String 🍎
🍎
APPLE_SIGNIN: Dict 🍎
Apple Sign-In. Apple integration is currently limited to using Apple as a third-party authentication provider.ENABLED: Boolean
📘
FACEBOOK: Dict
Facebook login. Facebook integration is currently limited to using Facebook as a third-party authentication provider.ENABLED: BooleanFACEBOOK_APP_ID: StringCLIENT_TOKEN: String
🪟
MICROSOFT: Dict
Microsoft sign-in. Microsoft integration is currently limited to using Microsoft as a third-party authentication provider.ENABLED: BooleanCLIENT_ID: StringPACKAGE_SIGNATURE: String 🤖
🔥
FIREBASE: Dict
Firebase project settings (analytics, messaging).ENABLED: BooleanANALYTICS_SOURCE: String —"segment","firebase", or"none"CLOUD_MESSAGING_ENABLED: BooleanPROJECT_ID: StringAPI_KEY: StringPROJECT_NUMBER: String 🤖APPLICATION_ID: String 🤖CLIENT_ID: String 🍎GOOGLE_APP_ID: String 🍎GCM_SENDER_ID: String 🍎REVERSED_CLIENT_ID: String 🍎
📊
SEGMENT_IO: Dict
Segment analytics configuration. Segment provides analytics tracking. Enabling Segment allows your analytics events to be sent to Segment's servers.ENABLED: BooleanSEGMENT_IO_WRITE_KEY: String
📩
BRAZE: Dict
Braze push & in-app messaging. Braze provides an all-in-one platform for push notifications, in-app messaging, and content cards.ENABLED: BooleanPUSH_NOTIFICATIONS_ENABLED: Boolean
🔗
BRANCH: Dict
Branch deep-linking configuration. Branch provides seamless deep link solutions to optimise app growth.ENABLED: BooleanKEY: StringURI_SCHEME: String 🤖HOST: String 🤖ALTERNATE_HOST: String 🤖
🧪
OPTIMIZELY: Dict
A/B testing and experiments. Optimizely provides tools for A/B testing, personalisation, and feature management across websites, mobile appsENABLED: BooleanSDK_KEY: String
🔐
RECAPTCHA: Dict
Google reCAPTCHA configuration. reCAPTCHA Enterprise helps protect sites and apps from fraudulent activities, spam, and abuse.ENABLED: BooleanSITE_KEY: String