Skip to content

[DEPR]: Legacy (non-MFE) course search frontend #39089

Description

@feanil

RFC Start Date

N/A -- Already Accepted

Target Plan Accepted Date

N/A -- Already Accepted

Target Transition Unblocked Date

Immediately -- Transition Already Unblocked

Earliest Breaking Changes Unblocked Date

2026-09-10

Fast-track continuity: the one contestable piece - dropping cross-course "Search Your Courses"
with no MFE replacement - already ran a full standard RFC as
#38941, now unblocked. The rest is
unreachable dead code. This consolidates the whole frontend teardown and supersedes #38941.

Rationale

Part of the move to consolidate the frontend and remove non-MFE experiences. The legacy course
search UI is a Backbone/RequireJS bundle, openedx/features/course_search/, with two entry points,
both now clear to remove:

  • In-course search course_search_factory.js is unreachable dead code - no template
    instantiates it, only the RequireJS build manifest references it. The learning MFE replaced the
    legacy courseware page that hosted it.
  • Cross-course dashboard search dashboard_search_factory.js - the "Search Your Courses" widget
    on the legacy dashboard - has no MFE replacement. Its removal was decided via
    #38941, now unblocked.

Both entry points share the same core, so the cleanest path is to remove the whole bundle in one
pass. This supersedes and closes as a duplicate
#38941.

Description

Removed - the entire legacy course search frontend:

  • The openedx/features/course_search/ bundle in full: both factories, the shared
    views/collections/models, Underscore templates, JS specs, fixtures, and README.rst. Static
    assets only - no Python.
  • The two course_search/js/*_factory entries in lms/static/lms/js/build.js.
  • The ENABLE_DASHBOARD_SEARCH widget blocks in lms/templates/dashboard.html.
  • The ENABLE_DASHBOARD_SEARCH feature flag: definition in lms/envs/common.py, env defaults in
    test.py / devstack.py, and its clause in the SEARCH_ENGINE condition in lms/envs/production.py.
  • The associated SCSS - lms/static/sass/features/_course-search.scss and
    lms/static/sass/search/_search.scss and their imports; verify they are not shared with another
    search UI before deleting.

Replacement / transition

  • In-course search is served by the learning MFE via the shared /search/ API - no operator action.
  • Cross-course dashboard search has no replacement; it goes away with the widget. Per [DEPR]: Cross-course 'Search Your Courses' (dashboard search) #38941, if
    there is real demand it would be rebuilt as a net-new feature in the new frontend.
  • ENABLE_DASHBOARD_SEARCH defaults to False, so most deployments are unaffected.

Out of scope, preserved:

  • The /search/ endpoint, lms/urls.pyinclude('search.urls'). The learning MFE depends on it.
  • In-course search: the ENABLE_COURSEWARE_SEARCH flag and the course_api search path the learning
    MFE uses.
  • The content index, SEARCH_ENGINE / ENABLE_COURSEWARE_INDEX. It is shared and still driven by
    ENABLE_COURSEWARE_SEARCH, so removing ENABLE_DASHBOARD_SEARCH frees no search infrastructure.

Task List

  • Remove the openedx/features/course_search/ bundle in full.
  • Remove the two course_search/js/*_factory entries from lms/static/lms/js/build.js.
  • Remove the ENABLE_DASHBOARD_SEARCH widget blocks from lms/templates/dashboard.html.
  • Remove the ENABLE_DASHBOARD_SEARCH flag - definition, env defaults, and the SEARCH_ENGINE
    clause - preserving ENABLE_COURSEWARE_SEARCH.
  • Verify and remove the associated SCSS partials.
  • Set the issue status to Transition Unblocked and post the link in #risky-changes.
  • Close #38941 as a duplicate, with
    a comment noting dashboard search is removed as part of this DEPR, and cross-link.

Related: #38936.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

deprProposal for deprecation & removal per OEP-21help wantedReady to be picked up by anyone in the community

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions