🚀 Mobile App Configuration Flags

🚀 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: Boolean

    • BUTTON_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: Dict

      • BASE_URL: String — Base URL for Discovery webview

      • COURSE_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: Dict

      • BASE_URL: String — Programs screen URL

      • WEBVIEW.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: String

    • COOKIE_POLICY_URL: String

    • DATA_SELL_CONSENT_URL: String

    • TOS_URL: String

    • EULA_URL: String

    • SUPPORTED_LANGUAGES: List — Supported languages for these policies, e.g., ["es"] (default language is en)

  • 🧭 UI_COMPONENTS: Dict
    Toggle UI capabilities in course flows.

    • COURSE_UNIT_PROGRESS_ENABLED: Boolean — Show progress within course units

    • COURSE_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: Boolean

    • CLIENT_ID: String

    • GOOGLE_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: Boolean

    • FACEBOOK_APP_ID: String

    • CLIENT_TOKEN: String

  • 🪟 MICROSOFT: Dict
    Microsoft sign-in. Microsoft integration is currently limited to using Microsoft as a third-party authentication provider.

    • ENABLED: Boolean

    • CLIENT_ID: String

    • PACKAGE_SIGNATURE: String 🤖

  • 🔥 FIREBASE: Dict
    Firebase project settings (analytics, messaging).

    • ENABLED: Boolean

    • ANALYTICS_SOURCE: String"segment", "firebase", or "none"

    • CLOUD_MESSAGING_ENABLED: Boolean

    • PROJECT_ID: String

    • API_KEY: String

    • PROJECT_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: Boolean

    • SEGMENT_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: Boolean

    • PUSH_NOTIFICATIONS_ENABLED: Boolean

  • 🔗 BRANCH: Dict
    Branch deep-linking configuration. Branch provides seamless deep link solutions to optimise app growth.

    • ENABLED: Boolean

    • KEY: String

    • URI_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 apps

    • ENABLED: Boolean

    • SDK_KEY: String

  • 🔐 RECAPTCHA: Dict
    Google reCAPTCHA configuration. reCAPTCHA Enterprise helps protect sites and apps from fraudulent activities, spam, and abuse.

    • ENABLED: Boolean

    • SITE_KEY: String


These flags once existed but have since been removed. This typically happens for flags that are meant to hide in-development features, but not meant for long-term support. They are documented for posterity. This list is not completely accurate.

  • NEW_COURSE_NAVIGATION_ENABLED: Boolean
    Flag for old course navigation experiments.

  • PARSE: Dict
    Legacy integration for Parse push notifications.

  • TAB_LAYOUTS_ENABLED: Boolean
    Legacy flag for enabling tab-based navigation.

  • VALUE_PROP_ENABLED: Boolean
    Legacy flag for showing value prop view in audit mode.

  • SECRET: String (under Branch Dict)

  • ZERO_RATING: Dict
    Carrier whitelisting for zero-rated usage.

  • SOCIAL_SHARING: Dict
    Legacy flags for course sharing via carriers.

  • IAP_ENABLED: Boolean
    Enabled in-app purchases for upgrades.

  • YOUTUBE_PLAYER: Dict

    • API_KEY: String

  • API_URL_VERSION : Dict
    Configuration to manipulate the version of specific APIs through the config file. If the version of an API is not mentioned here, the default version (inside the app's source code) will be used.

    • Key (API_NAME): Value (VERSION_STRING): String
      Examples: BLOCKS: "v2", COURSE_ENROLLMENTS: "v5", REGISTRATION: "v2"

  • PHONETIC_PLATFORM_NAME: String
    A string that represents the annunciation of the platform name for screen readers. For example, "ed-X". If not present, defaults to PLATFORM_NAME value.

  • PLATFORM_DESTINATION_NAME: String
    This is the user-visible name of your app's online presence, which is typically a website. For example, "edx.org" or "myapp.com"

  • APP_UPDATE_URIS: List
    This is a list of URIs that point to supported app stores and websites from which the user can update the app, in descending order of priority. The Android URIs may include an {application_id} token that will be replaced with the actual application ID (package name) at runtime.

  • DEBUG: Boolean
    Enable assorted debugging UI. This is for developers and is not meant to be enabled in user-facing builds.

  • APPLE_SIGNIN_ENABLED :  Boolean
    If enabled, the Apple Sign-in button will show on the login and registration screen.

  • NEW_RELIC: Dict
    New Relic (http://newrelic.com) is a third-party service that provides performance monitoring.

    •  ENABLED: Boolean
      Top-level switch for this feature. If disabled, the other fields are unused.

    • NEW_RELIC_KEY: String
      Your app's unique New Relic ID

  • ORGANIZATION_CODE: String
    If set, the app will only access courses with the appropriate organisation. Note: Leave this field out if you do not plan on using it. There are discrepancies between the way Android and iOS are handling a "null" or "None" case. 

  • NEW_LOGISTRATION_ENABLED: Boolean
    Whether the new start screen is enabled, which allows users to view courses without signing in/up.

  • COURSE_SHARING_ENABLED : Boolean
    Whether course sharing is enabled, which allows you to share a course via any app that can, e.g. Twitter, Facebook, Email, etc.

  • TWITTER: Dict
    Twitter integration is limited to sharing information about a course via tweet.

    •  HASHTAG: String
      When sharing a course, if this is supplied, this will be used instead of the platform name when sharing a course via Twitter.

  • DISCUSSIONS_ENABLED : Boolean
    Whether discussion forums are available. A new option will be available in the course dashboard.

  • PUSH_NOTIFICATIONS: Boolean
    Whether to enable push notification support in the app. Note that even if you enable support using an individual push provider service, such as Parse, you will also need to enable this flag to use push notifications

  • CERTIFICATES_ENABLED : Boolean
    Whether access to user-earned certificates is available. If a user has a certificate for a course, it should appear on the course dashboard.

  • USER_PROFILES_ENABLED : Boolean
    Whether the user profiles feature is enabled, which currently allows viewing/creating/editing of your own profile.

  • BADGES_ENABLED: Boolean
    Whether open badges support is enabled. If so, a user's badges will show up on their user profile.

  • REGISTRATION_ENABLED: Boolean
    If disabled, the app takes you directly to the sign-in screen. If course enrollment is disabled, a newly registered user cannot use any functions on the app.

  • APP_REVIEWS_ENABLEDBoolean
    If enabled, the app will present a dialog workflow facilitating a user to give us a review on our app store page or provide feedback on a given email address.

  • COURSE_VIDEOS_ENABLED: Boolean
    If enabled, the app will show a Videos item on the Course Dashboard screen, where a user can see all the course's videos.

  • DISCUSSIONS_ENABLE_PROFILE_PICTURE_PARAM: Boolean
    Either you want to fetch user details in the discussion API's or not.

  • DOWNLOAD_TO_SD_CARD_ENABLED: Boolean
    If enabled, the app will show a 'Download Video to SD Card' option in the settings screen. If settings are enabled, videos will be downloaded to the available SD Card.

  • COURSE_DATES_ENABLED: Boolean
    If enabled, the app will show the important dates tab in the course dashboard, in which you can see the course dates and deadlines. 

  • USING_VIDEO_PIPELINEBoolean
    If not enabled, the app uses the fallback_video variable instead of the videos created in the video pipeline

  • ANNOUNCEMENTS_ENABLED: Boolean 
     Shows or hides the announcements tab in a course; this flag is the app and not course-specific.

  • DISABLE_JWT_FOR_MOBILE: Boolean
    If enabled, mobile will use a bearer token for authentication. By default(flag is disabled), mobile APIs use JWT for authentication.