diff --git a/app/assets/javascripts/issue_show/components/form.vue b/app/assets/javascripts/issue_show/components/form.vue
index 528ccb77efc974542d7fa17c8b9603980a9993da..d48bf1fe7a9dc06ab736adc4858feca6f99fca18 100644
--- a/app/assets/javascripts/issue_show/components/form.vue
+++ b/app/assets/javascripts/issue_show/components/form.vue
@@ -70,6 +70,9 @@ export default {
     hasIssuableTemplates() {
       return this.issuableTemplates.length;
     },
+    showLockedWarning() {
+      return this.formState.lockedWarningVisible && !this.formState.updateLoading;
+    },
   },
   created() {
     eventHub.$on('delete.issuable', this.resetAutosave);
@@ -117,7 +120,7 @@ export default {
 
 <template>
   <form>
-    <locked-warning v-if="formState.lockedWarningVisible" />
+    <locked-warning v-if="showLockedWarning" />
     <div class="row">
       <div v-if="hasIssuableTemplates" class="col-sm-4 col-lg-3">
         <description-template
diff --git a/changelogs/unreleased/44036-someone-edited-the-issue-at-the-same-time-is-regularly-seen-despite-that-being-a-filthy-lie.yml b/changelogs/unreleased/44036-someone-edited-the-issue-at-the-same-time-is-regularly-seen-despite-that-being-a-filthy-lie.yml
new file mode 100644
index 0000000000000000000000000000000000000000..674d53286e657cd576306fe5085ceb7a48f36fb8
--- /dev/null
+++ b/changelogs/unreleased/44036-someone-edited-the-issue-at-the-same-time-is-regularly-seen-despite-that-being-a-filthy-lie.yml
@@ -0,0 +1,5 @@
+---
+title: Fix flashing conflict warning when editing issues
+merge_request: 31469
+author:
+type: fixed
diff --git a/spec/javascripts/issue_show/components/form_spec.js b/spec/javascripts/issue_show/components/form_spec.js
index b0f4ab2b12d57883d1888807760f2c3d513ff543..a111333ac80a38450322d86609b4ac063b9e23f8 100644
--- a/spec/javascripts/issue_show/components/form_spec.js
+++ b/spec/javascripts/issue_show/components/form_spec.js
@@ -1,81 +1,98 @@
 import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
 import formComponent from '~/issue_show/components/form.vue';
 import eventHub from '~/issue_show/event_hub';
 
 describe('Inline edit form component', () => {
   let vm;
-  let autosave;
-  let autosaveObj;
-
-  beforeEach(done => {
-    autosaveObj = { reset: jasmine.createSpy() };
-
-    autosave = spyOnDependency(formComponent, 'Autosave').and.returnValue(autosaveObj);
+  const defaultProps = {
+    canDestroy: true,
+    formState: {
+      title: 'b',
+      description: 'a',
+      lockedWarningVisible: false,
+    },
+    issuableType: 'issue',
+    markdownPreviewPath: '/',
+    markdownDocsPath: '/',
+    projectPath: '/',
+    projectNamespace: '/',
+  };
+
+  afterEach(() => {
+    vm.$destroy();
+  });
 
+  const createComponent = props => {
     const Component = Vue.extend(formComponent);
 
-    vm = new Component({
-      propsData: {
-        canDestroy: true,
-        formState: {
-          title: 'b',
-          description: 'a',
-          lockedWarningVisible: false,
-        },
-        issuableType: 'issue',
-        markdownPreviewPath: '/',
-        markdownDocsPath: '/',
-        projectPath: '/',
-        projectNamespace: '/',
-      },
-    }).$mount();
-
-    Vue.nextTick(done);
-  });
+    vm = mountComponent(Component, {
+      ...defaultProps,
+      ...props,
+    });
+  };
 
   it('does not render template selector if no templates exist', () => {
+    createComponent();
+
     expect(vm.$el.querySelector('.js-issuable-selector-wrap')).toBeNull();
   });
 
-  it('renders template selector when templates exists', done => {
-    vm.issuableTemplates = ['test'];
-
-    Vue.nextTick(() => {
-      expect(vm.$el.querySelector('.js-issuable-selector-wrap')).not.toBeNull();
+  it('renders template selector when templates exists', () => {
+    createComponent({ issuableTemplates: ['test'] });
 
-      done();
-    });
+    expect(vm.$el.querySelector('.js-issuable-selector-wrap')).not.toBeNull();
   });
 
   it('hides locked warning by default', () => {
+    createComponent();
+
     expect(vm.$el.querySelector('.alert')).toBeNull();
   });
 
-  it('shows locked warning if formState is different', done => {
-    vm.formState.lockedWarningVisible = true;
+  it('shows locked warning if formState is different', () => {
+    createComponent({ formState: { ...defaultProps.formState, lockedWarningVisible: true } });
 
-    Vue.nextTick(() => {
-      expect(vm.$el.querySelector('.alert')).not.toBeNull();
+    expect(vm.$el.querySelector('.alert')).not.toBeNull();
+  });
 
-      done();
+  it('hides locked warning when currently saving', () => {
+    createComponent({
+      formState: { ...defaultProps.formState, updateLoading: true, lockedWarningVisible: true },
     });
-  });
 
-  it('initialized Autosave on mount', () => {
-    expect(autosave).toHaveBeenCalledTimes(2);
+    expect(vm.$el.querySelector('.alert')).toBeNull();
   });
 
-  it('calls reset on autosave when eventHub emits appropriate events', () => {
-    eventHub.$emit('close.form');
+  describe('autosave', () => {
+    let autosaveObj;
+    let autosave;
+
+    beforeEach(() => {
+      autosaveObj = { reset: jasmine.createSpy() };
+      autosave = spyOnDependency(formComponent, 'Autosave').and.returnValue(autosaveObj);
+    });
+
+    it('initialized Autosave on mount', () => {
+      createComponent();
 
-    expect(autosaveObj.reset).toHaveBeenCalledTimes(2);
+      expect(autosave).toHaveBeenCalledTimes(2);
+    });
+
+    it('calls reset on autosave when eventHub emits appropriate events', () => {
+      createComponent();
+
+      eventHub.$emit('close.form');
 
-    eventHub.$emit('delete.issuable');
+      expect(autosaveObj.reset).toHaveBeenCalledTimes(2);
 
-    expect(autosaveObj.reset).toHaveBeenCalledTimes(4);
+      eventHub.$emit('delete.issuable');
 
-    eventHub.$emit('update.issuable');
+      expect(autosaveObj.reset).toHaveBeenCalledTimes(4);
 
-    expect(autosaveObj.reset).toHaveBeenCalledTimes(6);
+      eventHub.$emit('update.issuable');
+
+      expect(autosaveObj.reset).toHaveBeenCalledTimes(6);
+    });
   });
 });