-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Description
RFC Start Date
2025-05-22
Target Plan Accepted Date
2025-08-07
Target Transition Unblocked Date
Estimated Oct 2025
Earliest Breaking Changes Unblocked Date
Verawood cut
Earliest Open edX Named Release with Breaking Changes
Willow - 2026-10
Rationale
Historically, the LMS home page (/), course catalog (/courses), and course about (/courses/<course_id>/about) were rendered using Django templates. These views delivered pre-rendered HTML and a full template context, limiting frontend modularity and making reuse of individual data components difficult.
We are moving to a modern frontend architecture using Micro-Frontends (MFEs), React, TypeScript, React Query, and Paragon to improve scalability, maintainability, responsiveness, and developer experience. This new implementation decouples rendering from data delivery via dedicated APIs.
Announcement (with some more details): https://discuss.openedx.org/t/deprecation-of-legacy-home-course-catalog-and-course-about-pages-in-favor-of-mfe-implementations/16008
Removal
The following server-rendered Django templates and backend logic are scheduled for deprecation and eventual removal:
lms/templates/index.htmllms/templates/courseware/courses.htmllms/templates/courseware/course_about.htmllms/templates/courseware/course_about_sidebar_header.htmllms/templates/course.html
Target Date: TBD – will be finalized after a successful MFE rollout and stakeholder communication.
Replacement
The deprecated pages are being replaced with MFEs hosted under the frontend-app-catalog project, providing:
- Modern client-side rendering (React + TypeScript)
- Slot-based extensibility
- Fully responsive and accessible UI
- Data fetching via React Query
- Theming with Paragon
Key Replacement Endpoints
/api/mfe_config/v1— Returns MFE common or MFE specific config/search/course_discovery/— Extended to support:homepage_course_max(limit results)enable_course_sorting_by_start_dateorg_image_urlfor branding
Deprecation
Deprecation will be managed via a configuration parameter ENABLE_CATALOG_MICROFRONTEND, default value is False
Legacy views conditionally redirect to the MFE based on flag values.
Migration
There are no required actions for learners or course authors.
System integrators should:
- Update Tutor config to support MFE routing and registration.
- Migrate any custom links to use MFE paths when flags are enabled.
Backend configuration changes (according the Catalog About Page API Design)
ENABLE_COURSE_SORTING_BY_START_DATE
Exposed as a new MFE_CONFIG field, can be configured from Site Configuration with a backoff value of settings.FEATURES["ENABLE_COURSE_SORTING_BY_START_DATE"]homepage_overlay_html
Deprecated on the backend, FPS (plugin slot) should be created as a replacement.
Operators can use the FPS to customize the Catalog MFE.show_homepage_promo_video
Backend configuration is Deprecated. No settings is exposed via MFE Configuration API.
The functionality provided by the show_homepage_promo_video switch (displaying the homepage without a promotional video) will be covered by checking thehomepage_promo_video_youtube_idvalue and the plugin slot.homepage_promo_video_youtube_id
Exposed as a new MFE_CONFIG field, can be configured from Site Configuration with no backoff value from settings.
Hard-coded backoff value is "your-youtube-id".show_partnersFully deprecated.homepage_course_max
Exposed as a newHOMEPAGE_COURSE_MAXfield in MFE_CONFIG can be configured from Site Configuration with a backoff value of settings.HOMEPAGE_COURSE_MAXsidebar_html_enabledDeprecated as a backend configuration. Can be configured via an appropriate FPS (plugin slot).course_about_show_social_links
Deprecated as a backend configuration. Can be configured via an appropriate FPS (plugin slot).course_about_twitter_account
Exposed as a new MFE_CONFIG field, can be configured from Site Configuration with a backoff value of settings.FEATURES["PLATFORM_TWITTER_ACCOUNT"]is_cosmetic_price_enabled
Exposed as a new MFE_CONFIG field with a backoff value of settings.FEATURES["ENABLE_COSMETIC_DISPLAY_PRICE"]
12 .courses_are_browsable
Deprecated and exposed as a newNON_BROWSABLE_COURSESfield in MFE_CONFIG
Defaulted tonot settings.FEATURES.get("COURSES_ARE_BROWSABLE")enable_course_discovery
Deprecated and exposed as a newENABLE_COURSE_DISCOVERYfield in MFE_CONFIG
with a backoff value of settings.FEATURES["ENABLE_COURSE_DISCOVERY"]
-
course_discoveryAPI enhancements include:- Sorting and result limiting
- Organization branding support
-
Redirect logic built into legacy views
-
Link generation updated in:
common/djangoapps/util/course.pyCourseViewMetadataSerializer
Home page
- The homepage_promo_video_youtube_id value is now provided via Site Configuration as HOMEPAGE_PROMO_VIDEO_YOUTUBE_ID.
- The functionality previously controlled by the show_homepage_promo_video switch (determining whether to display the homepage with or without a promotional video) is now handled by checking the HOMEPAGE_PROMO_VIDEO_YOUTUBE_ID value and the frontend plugin-slots configuration.
- The ENABLE_COURSE_DISCOVERY ENABLE_COURSE_SORTING_BY_START_DATE expose as MFE_CONFIG fallback.
- The text overlay section is rendered conditionally:
- If HOMEPAGE_OVERLAY_HTML is available from plugin-slots, that content is displayed.
- Otherwise, the text from legacy index_overlay (including title and subtitle) is rendered as a fallback.
Frontend
- MFE built using
frontend-template-application - Slot-based architecture:
home_banner_slot,home_course_list_slot, etc.
- Handles anonymous, enrolled, and unenrolled states
- Uses Paragon for consistent theming
- Fully internationalized and responsive
Task List
- Create config flag
ENABLE_CATALOG_MICROFRONTEND - Extend
/api/mfe_config/v1to support all required configuration settings with back-off values - Add new edx-search endoint
unstable/v0/course_list_search/to support multivalue faceted - Implement redirect logic in legacy views
- Update
common/djangoapps/util/course.pyfor dynamic URL generation - Update Tutor MFE registration and routing
- Add unit/integration tests for dual-mode logic
- Build and integrate
frontend-app-cataloginto release process
Links
Metadata
Metadata
Assignees
Labels
Type
Projects
Status