Eliminate use of global scope through window.gl

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

  • Close this issue

We did a good job of removing global scope abuse within gitlab-ce#38869 in the main.js imports, however there are still many uses of window.gl.* strewn about our codebase. I've compiled a checklist of them and we ought to start removing each of these in favor of proper ES module imports and exports.

Each of these files uses window.gl.* in some way. You can test this by removing the gl from the excepted globals in .eslintrc.

  • app/assets/javascripts/boards/components/board_blank_state.js
  • app/assets/javascripts/boards/components/board_card.vue
  • app/assets/javascripts/boards/components/board_delete.js
  • app/assets/javascripts/boards/components/board_list.vue
  • app/assets/javascripts/boards/components/board_new_issue.vue
  • app/assets/javascripts/boards/components/board_sidebar.js
  • app/assets/javascripts/boards/components/board.js
  • app/assets/javascripts/boards/components/issue_card_inner.js
  • app/assets/javascripts/boards/components/modal/empty_state.js
  • app/assets/javascripts/boards/components/modal/footer.js
  • app/assets/javascripts/boards/components/modal/header.js
  • app/assets/javascripts/boards/components/modal/index.js
  • app/assets/javascripts/boards/components/modal/list.js
  • app/assets/javascripts/boards/components/modal/lists_dropdown.js
  • app/assets/javascripts/boards/components/modal/tabs.js
  • app/assets/javascripts/boards/components/new_list_dropdown.js
  • app/assets/javascripts/boards/components/sidebar/remove_issue.js
  • app/assets/javascripts/boards/filtered_search_boards.js
  • app/assets/javascripts/boards/index.js
  • app/assets/javascripts/boards/mixins/modal_mixins.js @filipa
  • app/assets/javascripts/boards/mixins/sortable_default_options.js
  • app/assets/javascripts/boards/models/issue.js
  • app/assets/javascripts/boards/models/list.js
  • app/assets/javascripts/boards/stores/boards_store.js
  • app/assets/javascripts/boards/stores/modal_store.js @filipa
  • app/assets/javascripts/diff_notes/components/resolve_btn.js
  • app/assets/javascripts/diff_notes/diff_notes_bundle.js
  • app/assets/javascripts/diff_notes/services/resolve.js
  • app/assets/javascripts/dispatcher.js
  • app/assets/javascripts/due_date_select.js
  • app/assets/javascripts/gl_form.js
  • app/assets/javascripts/image_diff/helpers/badge_helper.js
  • app/assets/javascripts/image_diff/helpers/comment_indicator_helper.js
  • app/assets/javascripts/issuable_form.js
  • app/assets/javascripts/labels_select.js
  • app/assets/javascripts/main.js
  • app/assets/javascripts/members.js
  • app/assets/javascripts/merge_conflicts/merge_conflicts_bundle.js
  • app/assets/javascripts/merge_conflicts/mixins/line_conflict_actions.js
  • app/assets/javascripts/merge_request_tabs.js
  • app/assets/javascripts/milestone_select.js
  • app/assets/javascripts/notes.js
  • app/assets/javascripts/notes/stores/utils.js
  • app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue
  • app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/target_branch_dropdown.js
  • app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/timezone_dropdown.js
  • app/assets/javascripts/pages/projects/pipeline_schedules/shared/init_form.js
  • app/assets/javascripts/right_sidebar.js
  • app/assets/javascripts/search_autocomplete.js
  • app/assets/javascripts/shared/sessions/u2f.js
  • app/assets/javascripts/sidebar/mount_sidebar.js
  • app/assets/javascripts/single_file_diff.js
  • app/assets/javascripts/terminal/index.js
  • app/assets/javascripts/terminal/terminal.js
  • app/assets/javascripts/users_select.js
  • app/assets/javascripts/vue_merge_request_widget/index.js
  • spec/javascripts/boards/board_blank_state_spec.js
  • spec/javascripts/boards/board_card_spec.js
  • spec/javascripts/boards/board_list_spec.js
  • spec/javascripts/boards/board_new_issue_spec.js
  • spec/javascripts/boards/boards_store_spec.js
  • spec/javascripts/boards/components/board_spec.js
  • spec/javascripts/boards/issue_card_spec.js
  • spec/javascripts/boards/issue_spec.js
  • spec/javascripts/boards/list_spec.js
  • spec/javascripts/boards/modal_store_spec.js
  • spec/javascripts/collapsed_sidebar_todo_spec.js
  • spec/javascripts/filtered_search/filtered_search_manager_spec.js
  • spec/javascripts/filtered_search/filtered_search_visual_tokens_spec.js
  • spec/javascripts/image_diff/helpers/comment_indicator_helper_spec.js
  • spec/javascripts/image_diff/helpers/utils_helper_spec.js
  • spec/javascripts/image_diff/image_diff_spec.js
  • spec/javascripts/image_diff/replaced_image_diff_spec.js
  • spec/javascripts/issue_show/components/app_spec.js
  • spec/javascripts/issue_show/components/description_spec.js
  • spec/javascripts/job_spec.js
  • spec/javascripts/lib/utils/common_utils_spec.js
  • spec/javascripts/merge_request_notes_spec.js
  • spec/javascripts/merge_request_spec.js
  • spec/javascripts/monitoring/mock_data.js
  • spec/javascripts/notes_spec.js
  • spec/javascripts/pager_spec.js
  • spec/javascripts/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
  • spec/javascripts/pages/labels/components/promote_label_modal_spec.js
  • spec/javascripts/pages/milestones/shared/components/delete_milestone_modal_spec.js
  • spec/javascripts/pages/milestones/shared/components/promote_milestone_modal_spec.js
  • spec/javascripts/profile/account/components/delete_account_modal_spec.js
  • spec/javascripts/projects/project_new_spec.js
  • spec/javascripts/right_sidebar_spec.js

/cc @filipa @iamphill

Edited Sep 25, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading