You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Per OEP-21, this ticket proposes the removal of the deprecated identifiers introduced by the rename of the Notifications sidebar widget to the Upgrade widget (PR #1899 / ADR 0010).
RFC Start Date
2026-04-17
Target Plan Accepted Date
2026-05-01
Target Transition Unblocked Date
Estimated Q3 2026, once operators have had time to update env.config.jsx configs, plugin slot IDs, and pluginProps references.
Rational
PR #1899 and PR #1885, the sidebar "Notifications" widget to "Upgrade" and introduced backward-compatibility shims so existing plugin configs and operator overrides would continue to work without changes. Those shims are now deprecated:
The old plugin slot IDs (notification_tray, notifications_discussions_sidebar, notifications_discussions_sidebar_trigger) were misnomers that implied general notification functionality. They are aliased to the correct new IDs but should not persist indefinitely.
The old pluginProps keys (notificationCurrentState, setNotificationCurrentState) duplicate the renamed props and create a maintenance burden.
WIDGETS.NOTIFICATIONS (whose value was changed from 'NOTIFICATIONS' to 'UPGRADE' as a shim) is an undocumented constant that external code should not depend on; the widget owns its own ID.
upgradeWidgetConfig being in DEFAULT_WIDGETS is a temporary accommodation; commercial widgets should not be opt-out by default in an open-source MFE.
Keeping these shims indefinitely means future renames or extractions cannot clean up without archaeology.
Removal
The following items are deprecated and will be removed:
Deprecated
Location
Plugin slot ID org.openedx.frontend.learning.notification_tray.v1 and short alias notification_tray_slot
Plugin slot ID org.openedx.frontend.learning.notifications_discussions_sidebar_trigger.v1 and short alias notifications_discussions_sidebar_trigger_slot
Operators must add upgradeWidgetConfig explicitly to SIDEBAR_WIDGETS in env.config.jsx
Deprecation
All shim sites are already annotated with // @deprecated — aliased for backward compat; remove after one deprecation cycle (ADR 0010) comments. WIDGETS.NOTIFICATIONS in src/constants.ts carries a @deprecated JSDoc block. Running grep -R '@deprecated' in the repo enumerates all five code sites without requiring ADR archaeology.
Additional Info
Migration guide and complete renamed-identifier inventory: ADR 0010
localStorage keys were also renamed but are not shimmed (no server-side migration possible). Learner browsers will reset the "have I seen this" indicator on first load after upgrading. This is cosmetic only.
Confirm no Tutor plugins or known downstream repos still reference the deprecated slot IDs (search notification_tray and notifications_discussions_sidebar across the openedx GitHub org)
Confirm no downstream repos reference WIDGETS.NOTIFICATIONS or the old pluginProps keys
Document the Upgrade panel's env.config.jsx opt-in in the official operator docs before removing the default
Feature Removal Tasks
Remove deprecated idAliases entries from src/widgets/upgrade/src/UpgradePanel.jsx
Remove deprecated idAliases entries from src/plugin-slots/RightSidebarSlot/index.tsx
Remove deprecated idAliases entries from src/plugin-slots/RightSidebarTriggerSlot/index.tsx
Remove notificationCurrentState / setNotificationCurrentState from pluginProps in UpgradePanel.jsx
Remove WIDGETS.NOTIFICATIONS from src/constants.ts
Remove upgradeWidgetConfig from DEFAULT_WIDGETS in src/courseware/course/sidebar/defaultWidgets.js
Update src/plugin-slots/README.md to remove the strikethrough entry for notification_tray.v1
Update ADR 0010 to record the actual removal release
RFC Start Date
2026-04-17
Target Plan Accepted Date
2026-05-01
Target Transition Unblocked Date
Estimated Q3 2026, once operators have had time to update
env.config.jsxconfigs, plugin slot IDs, andpluginPropsreferences.Rational
PR #1899 and PR #1885, the sidebar "Notifications" widget to "Upgrade" and introduced backward-compatibility shims so existing plugin configs and operator overrides would continue to work without changes. Those shims are now deprecated:
notification_tray,notifications_discussions_sidebar,notifications_discussions_sidebar_trigger) were misnomers that implied general notification functionality. They are aliased to the correct new IDs but should not persist indefinitely.pluginPropskeys (notificationCurrentState,setNotificationCurrentState) duplicate the renamed props and create a maintenance burden.WIDGETS.NOTIFICATIONS(whose value was changed from'NOTIFICATIONS'to'UPGRADE'as a shim) is an undocumented constant that external code should not depend on; the widget owns its ownID.upgradeWidgetConfigbeing inDEFAULT_WIDGETSis a temporary accommodation; commercial widgets should not be opt-out by default in an open-source MFE.Keeping these shims indefinitely means future renames or extractions cannot clean up without archaeology.
Removal
The following items are deprecated and will be removed:
org.openedx.frontend.learning.notification_tray.v1and short aliasnotification_tray_slotsrc/widgets/upgrade/src/UpgradePanel.jsx-idAliasesorg.openedx.frontend.learning.notifications_discussions_sidebar.v1and short aliasnotifications_discussions_sidebar_slotsrc/plugin-slots/RightSidebarSlot/index.tsx-idAliasesorg.openedx.frontend.learning.notifications_discussions_sidebar_trigger.v1and short aliasnotifications_discussions_sidebar_trigger_slotsrc/plugin-slots/RightSidebarTriggerSlot/index.tsx-idAliasespluginPropskeysnotificationCurrentStateandsetNotificationCurrentStateon the upgrade panel slotsrc/widgets/upgrade/src/UpgradePanel.jsx-pluginPropsWIDGETS.NOTIFICATIONSconstant (value'UPGRADE')src/constants.tsupgradeWidgetConfiginDEFAULT_WIDGETS(default-on behavior)src/courseware/course/sidebar/defaultWidgets.jsFull inventory with replacement mappings: ADR 0010: Migration & Backward Compatibility
Replacement
notification_tray.v1/notification_tray_slotorg.openedx.frontend.learning.upgrade_panel.v1notifications_discussions_sidebar.v1/notifications_discussions_sidebar_slotorg.openedx.frontend.learning.right_sidebar.v1/right_sidebar_slotnotifications_discussions_sidebar_trigger.v1/notifications_discussions_sidebar_trigger_slotorg.openedx.frontend.learning.right_sidebar_trigger.v1/right_sidebar_trigger_slotpluginProps.notificationCurrentStatepluginProps.upgradeCurrentStatepluginProps.setNotificationCurrentStatepluginProps.setUpgradeCurrentStateWIDGETS.NOTIFICATIONSIDexported fromsrc/widgets/upgrade/srcupgradeWidgetConfiginDEFAULT_WIDGETSupgradeWidgetConfigexplicitly toSIDEBAR_WIDGETSinenv.config.jsxDeprecation
All shim sites are already annotated with
// @deprecated — aliased for backward compat; remove after one deprecation cycle (ADR 0010)comments.WIDGETS.NOTIFICATIONSinsrc/constants.tscarries a@deprecatedJSDoc block. Runninggrep -R '@deprecated'in the repo enumerates all five code sites without requiring ADR archaeology.Additional Info
Transition Unblocked Tasks
notification_trayandnotifications_discussions_sidebaracross the openedx GitHub org)WIDGETS.NOTIFICATIONSor the oldpluginPropskeysenv.config.jsxopt-in in the official operator docs before removing the defaultFeature Removal Tasks
idAliasesentries fromsrc/widgets/upgrade/src/UpgradePanel.jsxidAliasesentries fromsrc/plugin-slots/RightSidebarSlot/index.tsxidAliasesentries fromsrc/plugin-slots/RightSidebarTriggerSlot/index.tsxnotificationCurrentState/setNotificationCurrentStatefrompluginPropsinUpgradePanel.jsxWIDGETS.NOTIFICATIONSfromsrc/constants.tsupgradeWidgetConfigfromDEFAULT_WIDGETSinsrc/courseware/course/sidebar/defaultWidgets.jssrc/plugin-slots/README.mdto remove the strikethrough entry fornotification_tray.v1