diff --git a/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue b/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue
index bd531f0cc8458af088b70b5477f4e4ec377d7c87..24f1c9c5bd0deb07e9096ead366c1953d5bd155e 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue
@@ -1,5 +1,5 @@
 <script>
-import { GlButton, GlLoadingIcon, GlIcon, GlLink, GlBadge, GlSafeHtmlDirective } from '@gitlab/ui';
+import { GlButton, GlLoadingIcon, GlLink, GlBadge, GlSafeHtmlDirective } from '@gitlab/ui';
 import SmartVirtualList from '~/vue_shared/components/smart_virtual_list.vue';
 import { EXTENSION_ICON_CLASS } from '../../constants';
 import StatusIcon from './status_icon.vue';
@@ -14,7 +14,6 @@ export default {
   components: {
     GlButton,
     GlLoadingIcon,
-    GlIcon,
     GlLink,
     GlBadge,
     SmartVirtualList,
@@ -139,9 +138,7 @@ export default {
         class="report-block-container"
       >
         <li v-for="data in fullData" :key="data.id" class="d-flex align-items-center">
-          <div v-if="data.icon" :class="data.icon.class" class="d-flex">
-            <gl-icon :name="data.icon.name" :size="24" />
-          </div>
+          <status-icon v-if="data.icon" :icon-name="data.icon.name" :size="12" />
           <div
             class="gl-mt-2 gl-mb-2 align-content-around align-items-start flex-wrap align-self-center d-flex"
           >
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/extensions/status_icon.vue b/app/assets/javascripts/vue_merge_request_widget/components/extensions/status_icon.vue
index 5b41decc1908c5c05f4b930d1a26abd8c9d27e3e..5e3f7a847c1c295aee1080b1a80d344f7c8a116a 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/extensions/status_icon.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/extensions/status_icon.vue
@@ -1,7 +1,7 @@
 <script>
 import { GlLoadingIcon, GlIcon } from '@gitlab/ui';
 import { capitalizeFirstCharacter } from '~/lib/utils/text_utility';
-import { EXTENSION_ICON_CLASS, EXTENSION_ICONS } from '../../constants';
+import { EXTENSION_ICON_CLASS, EXTENSION_ICON_NAMES } from '../../constants';
 
 export default {
   components: {
@@ -11,41 +11,48 @@ export default {
   props: {
     name: {
       type: String,
-      required: true,
+      required: false,
+      default: '',
     },
     isLoading: {
       type: Boolean,
-      required: true,
+      required: false,
+      default: false,
     },
     iconName: {
       type: String,
       required: false,
       default: null,
     },
+    size: {
+      type: Number,
+      required: false,
+      default: 16,
+    },
   },
   computed: {
     iconAriaLabel() {
-      const statusLabel = Object.keys(EXTENSION_ICONS).find(
-        (k) => EXTENSION_ICONS[k] === this.iconName,
-      );
-
-      return `${capitalizeFirstCharacter(statusLabel)} ${this.name}`;
+      return `${capitalizeFirstCharacter(this.iconName)} ${this.name}`;
     },
   },
+  EXTENSION_ICON_NAMES,
   EXTENSION_ICON_CLASS,
 };
 </script>
 
 <template>
   <div
-    :class="[$options.EXTENSION_ICON_CLASS[iconName], { 'mr-widget-extension-icon': !isLoading }]"
+    :class="[
+      $options.EXTENSION_ICON_CLASS[iconName],
+      { 'mr-widget-extension-icon': !isLoading && size === 16 },
+    ]"
     class="align-self-center gl-rounded-full gl-mr-3 gl-relative gl-p-2"
   >
     <gl-loading-icon v-if="isLoading" size="md" inline class="gl-display-block" />
     <gl-icon
       v-else
-      :name="iconName"
-      :size="16"
+      :name="$options.EXTENSION_ICON_NAMES[iconName]"
+      :size="size"
       :aria-label="iconAriaLabel"
       class="gl-display-block"
     />
diff --git a/app/assets/javascripts/vue_merge_request_widget/constants.js b/app/assets/javascripts/vue_merge_request_widget/constants.js
index c02783be3851bc00dd33362766ff707c0916beac..284c18b3fbd234c2daaf4a4e0160530d889e8a1d 100644
--- a/app/assets/javascripts/vue_merge_request_widget/constants.js
+++ b/app/assets/javascripts/vue_merge_request_widget/constants.js
@@ -93,17 +93,30 @@ export const stateToComponentMap = {
 };
 
 export const EXTENSION_ICONS = {
+  failed: 'failed',
+  warning: 'warning',
+  success: 'success',
+  neutral: 'neutral',
+  error: 'error',
+  notice: 'notice',
+};
+
+export const EXTENSION_ICON_NAMES = {
   failed: 'status-failed',
   warning: 'status-alert',
   success: 'status-success',
   neutral: 'status-neutral',
+  error: 'status-alert',
+  notice: 'status-alert',
 };
 
 export const EXTENSION_ICON_CLASS = {
-  [EXTENSION_ICONS.failed]: 'gl-text-red-500',
-  [EXTENSION_ICONS.warning]: 'gl-text-orange-500',
-  [EXTENSION_ICONS.success]: 'gl-text-green-500',
-  [EXTENSION_ICONS.neutral]: 'gl-text-gray-400',
+  failed: 'gl-text-red-500',
+  warning: 'gl-text-orange-500',
+  success: 'gl-text-green-500',
+  neutral: 'gl-text-gray-400',
+  error: 'gl-text-red-500',
+  notice: 'gl-text-gray-500',
 };
 
 export { STATE_MACHINE };
diff --git a/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js b/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js
index 5eda5c0778fd1b6aefe0646dd24e7d7361fd95f7..3a07bd0c0fb9aabc05f05bc079cd6b9304de94f4 100644
--- a/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js
+++ b/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js
@@ -45,10 +45,7 @@ export default {
             // Icon to get rendered on the side of each row
             icon: {
               // Required: Name maps to an icon in GitLabs SVG
-              name:
-                issue.state === 'closed' ? 'status_failed_borderless' : 'status_success_borderless',
-              // Optional: An extra class to be added to the icon for additional styling
-              class: issue.state === 'closed' ? 'text-danger' : 'text-success',
+              name: issue.state === 'closed' ? EXTENSION_ICONS.error : EXTENSION_ICONS.success,
             },
             // Badges get rendered next to the text on each row
             badge: issue.state === 'closed' && {
diff --git a/spec/frontend/vue_mr_widget/components/extensions/status_icon_spec.js b/spec/frontend/vue_mr_widget/components/extensions/status_icon_spec.js
index 84fd3c7eb2189155eee4180667cb763a33488d7f..f3aa5bb774f2392f3e07718a10afb759d4fc9549 100644
--- a/spec/frontend/vue_mr_widget/components/extensions/status_icon_spec.js
+++ b/spec/frontend/vue_mr_widget/components/extensions/status_icon_spec.js
@@ -16,20 +16,20 @@ describe('MR widget extensions status icon', () => {
   });
 
   it('renders loading icon', () => {
-    factory({ name: 'test', isLoading: true, iconName: 'status-failed' });
+    factory({ name: 'test', isLoading: true, iconName: 'failed' });
 
     expect(wrapper.findComponent(GlLoadingIcon).exists()).toBe(true);
   });
 
   it('renders status icon', () => {
-    factory({ name: 'test', isLoading: false, iconName: 'status-failed' });
+    factory({ name: 'test', isLoading: false, iconName: 'failed' });
 
     expect(wrapper.findComponent(GlIcon).exists()).toBe(true);
     expect(wrapper.findComponent(GlIcon).props('name')).toBe('status-failed');
   });
 
   it('sets aria-label for status icon', () => {
-    factory({ name: 'test', isLoading: false, iconName: 'status-failed' });
+    factory({ name: 'test', isLoading: false, iconName: 'failed' });
 
     expect(wrapper.findComponent(GlIcon).props('ariaLabel')).toBe('Failed test');
   });
diff --git a/spec/frontend/vue_mr_widget/mr_widget_options_spec.js b/spec/frontend/vue_mr_widget/mr_widget_options_spec.js
index a474c34af4194bf04afffcc2ed393c45ab27d534..5aba6982886678fe784b60e1d5609e81fb7370db 100644
--- a/spec/frontend/vue_mr_widget/mr_widget_options_spec.js
+++ b/spec/frontend/vue_mr_widget/mr_widget_options_spec.js
@@ -919,7 +919,7 @@ describe('MrWidgetOptions', () => {
 
       // Renders icon in the row
       expect(collapsedSection.find(GlIcon).exists()).toBe(true);
-      expect(collapsedSection.find(GlIcon).props('name')).toBe('status_failed_borderless');
+      expect(collapsedSection.find(GlIcon).props('name')).toBe('status-failed');
 
       // Renders badge in the row
       expect(collapsedSection.find(GlBadge).exists()).toBe(true);
diff --git a/spec/frontend/vue_mr_widget/test_extension.js b/spec/frontend/vue_mr_widget/test_extension.js
index ba354403f2d7736d0bc7a9ab3454ee92af2f8568..a29a4d2fb464fe423c77908a75f31341426e168c 100644
--- a/spec/frontend/vue_mr_widget/test_extension.js
+++ b/spec/frontend/vue_mr_widget/test_extension.js
@@ -21,8 +21,7 @@ export default {
           id: 1,
           text: 'Hello world',
           icon: {
-            name: 'status_failed_borderless',
-            class: 'text-danger',
+            name: EXTENSION_ICONS.failed,
           },
           badge: {
             text: 'Closed',