Proposal Date
2024-08-19
Target Ticket Acceptance Date
2024-09-19
Earliest Open edX Named Release Without This Functionality
Teak - 2025-04
Rationale
Since the Quince release, using the new learner dashboard MFE has been the default behavior for everyone.
Removal
⚠️The developer doing this removal should be careful; this list might not be comprehensive of everything, and it's possible new code relies on legacy paths. Verify the list, and if anything is not removable at this time, create tickets for follow-up work and comment appropriately in the code.
It is possible that code, tests, stylesheets, or themes in other locations will become defunct as part of this deprecation, but it is the responsibility of the removing developer to find each of these and verify that it isn't used elsewhere (eg. in learner_home).
There are also files in https://github.com/openedx/edx-platform/tree/master/lms/static/js/learner_dashboard -- anything used for the program dash rendering should be left alone.
Additional surface found on re-verification (2026-07-31, master 387ee5d93c) -- not in the original list:
- The legacy render path in the
student_dashboard view itself: common/djangoapps/student/views/dashboard.py. The view redirects to the MFE when learner_home_mfe.enabled is on and otherwise builds and renders the full legacy dashboard (roughly the back half of the file plus its helper functions). Keep the redirect; remove the legacy render path and anything only it uses.
lms/templates/dashboard.html -- the top-level template, separate from the lms/templates/dashboard/ directory already listed above.
- The
learner_home_mfe.enabled waffle flag (lms/djangoapps/learner_home/waffle.py) and the /dashboard route (lms/urls.py): decide the end state. Once there is no legacy page, the flag/redirect can collapse so /dashboard unconditionally serves the MFE (or is a permanent redirect) and the flag can be removed.
Replacement
The existing learner dashboard MFE.
As part of this work, all non-Program Dash code should be removed from https://github.com/openedx/edx-platform/tree/master/lms/djangoapps/learner_dashboard if any is left, and a README should be added saying that this app is just the program dash now. (Possibly partly copied from https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/learner_dashboard/PROGRAMS.rst).
Deprecation
No response
Migration
No response
Additional Info
⚠️This is the old learner course dashboard only, not the program dashboard.
Reopened 2026-07-31. This was closed 2025-03-18 with no removal PR or commit attached; none of the code above was actually removed (every path is still present on master). Re-verifying also corrected the Rationale above: the MFE is the default on Tutor (its MFE init enables learner_home_mfe.enabled), but in vanilla edx-platform the flag is off by default, so the legacy dashboard is still the vanilla default render, not dead code. Removal therefore has to be sequenced after the vanilla default flips (or the flag is removed). The README for lms/djangoapps/learner_dashboard requested under Replacement was also never added -- still owed.
Blocked by: #38941 -- the cross-course "Search Your Courses" widget lives only on this legacy dashboard (dashboard.html, gated by ENABLE_DASHBOARD_SEARCH) and has no MFE equivalent. Removing dashboard.html deletes that entry point, so this removal is blocked until the cross-course search decision resolves. Tracked in #38936.
Task List
No response
Proposal Date
2024-08-19
Target Ticket Acceptance Date
2024-09-19
Earliest Open edX Named Release Without This Functionality
Teak - 2025-04
Rationale
Since the Quince release, using the new learner dashboard MFE has been the default behavior for everyone.
Removal
It is possible that code, tests, stylesheets, or themes in other locations will become defunct as part of this deprecation, but it is the responsibility of the removing developer to find each of these and verify that it isn't used elsewhere (eg. in
learner_home).There are also files in https://github.com/openedx/edx-platform/tree/master/lms/static/js/learner_dashboard -- anything used for the program dash rendering should be left alone.
Additional surface found on re-verification (2026-07-31, master
387ee5d93c) -- not in the original list:student_dashboardview itself:common/djangoapps/student/views/dashboard.py. The view redirects to the MFE whenlearner_home_mfe.enabledis on and otherwise builds and renders the full legacy dashboard (roughly the back half of the file plus its helper functions). Keep the redirect; remove the legacy render path and anything only it uses.lms/templates/dashboard.html-- the top-level template, separate from thelms/templates/dashboard/directory already listed above.learner_home_mfe.enabledwaffle flag (lms/djangoapps/learner_home/waffle.py) and the/dashboardroute (lms/urls.py): decide the end state. Once there is no legacy page, the flag/redirect can collapse so/dashboardunconditionally serves the MFE (or is a permanent redirect) and the flag can be removed.Replacement
The existing learner dashboard MFE.
As part of this work, all non-Program Dash code should be removed from https://github.com/openedx/edx-platform/tree/master/lms/djangoapps/learner_dashboard if any is left, and a
READMEshould be added saying that this app is just the program dash now. (Possibly partly copied from https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/learner_dashboard/PROGRAMS.rst).Deprecation
No response
Migration
No response
Additional Info
Reopened 2026-07-31. This was closed 2025-03-18 with no removal PR or commit attached; none of the code above was actually removed (every path is still present on master). Re-verifying also corrected the Rationale above: the MFE is the default on Tutor (its MFE init enables
learner_home_mfe.enabled), but in vanilla edx-platform the flag is off by default, so the legacy dashboard is still the vanilla default render, not dead code. Removal therefore has to be sequenced after the vanilla default flips (or the flag is removed). TheREADMEforlms/djangoapps/learner_dashboardrequested under Replacement was also never added -- still owed.Blocked by: #38941 -- the cross-course "Search Your Courses" widget lives only on this legacy dashboard (
dashboard.html, gated byENABLE_DASHBOARD_SEARCH) and has no MFE equivalent. Removingdashboard.htmldeletes that entry point, so this removal is blocked until the cross-course search decision resolves. Tracked in #38936.Task List
No response