diff --git a/app/assets/javascripts/work_items/graphql/resolvers.js b/app/assets/javascripts/work_items/graphql/resolvers.js
index b1a3c85a63147e686b27b977577328906552a7bb..fb74e8d9f4c1c1a795d86964d7965fdbd8a354c8 100644
--- a/app/assets/javascripts/work_items/graphql/resolvers.js
+++ b/app/assets/javascripts/work_items/graphql/resolvers.js
@@ -1,3 +1,4 @@
+import { set } from 'lodash';
 import { produce } from 'immer';
 import { findWidget } from '~/issues/list/utils';
 import { pikadayToString } from '~/lib/utils/datetime_utility';
@@ -13,6 +14,35 @@ import {
 } from '../constants';
 import workItemByIidQuery from './work_item_by_iid.query.graphql';
 
+const updateWidget = (draftData, widgetType, newData, nodePath) => {
+  if (!newData) return;
+
+  const widget = findWidget(widgetType, draftData.workspace.workItem);
+  set(widget, nodePath, newData);
+};
+
+const updateRolledUpDatesWidget = (draftData, rolledUpDates) => {
+  if (!rolledUpDates) return;
+
+  const dueDateFixed = rolledUpDates.dueDateFixed
+    ? pikadayToString(rolledUpDates.dueDateFixed)
+    : null;
+  const startDateFixed = rolledUpDates.startDateFixed
+    ? pikadayToString(rolledUpDates.startDateFixed)
+    : null;
+
+  const widget = findWidget(WIDGET_TYPE_ROLLEDUP_DATES, draftData.workspace.workItem);
+  Object.assign(widget, {
+    dueDate: dueDateFixed,
+    dueDateFixed,
+    dueDateIsFixed: rolledUpDates.dueDateIsFixed,
+    startDate: startDateFixed,
+    startDateFixed,
+    startDateIsFixed: rolledUpDates.startDateIsFixed,
+    __typename: 'WorkItemWidgetRolledupDates',
+  });
+};
+
 export const updateNewWorkItemCache = (input, cache) => {
   const {
     healthStatus,
@@ -28,7 +58,6 @@ export const updateNewWorkItemCache = (input, cache) => {
   } = input;
 
   const query = workItemByIidQuery;
-
   const variables = {
     fullPath: newWorkItemFullPath(fullPath, workItemType),
     iid: NEW_WORK_ITEM_IID,
@@ -36,101 +65,42 @@ export const updateNewWorkItemCache = (input, cache) => {
 
   cache.updateQuery({ query, variables }, (sourceData) =>
     produce(sourceData, (draftData) => {
-      if (healthStatus) {
-        const healthStatusWidget = findWidget(
-          WIDGET_TYPE_HEALTH_STATUS,
-          draftData?.workspace?.workItem,
-        );
-
-        healthStatusWidget.healthStatus = healthStatus;
-
-        const healthStatusWidgetIndex = draftData.workspace.workItem.widgets.findIndex(
-          (widget) => widget.type === WIDGET_TYPE_HEALTH_STATUS,
-        );
-        draftData.workspace.workItem.widgets[healthStatusWidgetIndex] = healthStatusWidget;
-      }
-
-      if (assignees) {
-        const assigneesWidget = findWidget(WIDGET_TYPE_ASSIGNEES, draftData?.workspace?.workItem);
-        assigneesWidget.assignees.nodes = assignees;
-
-        const assigneesWidgetIndex = draftData.workspace.workItem.widgets.findIndex(
-          (widget) => widget.type === WIDGET_TYPE_ASSIGNEES,
-        );
-        draftData.workspace.workItem.widgets[assigneesWidgetIndex] = assigneesWidget;
-      }
-
-      if (labels) {
-        const labelsWidget = findWidget(WIDGET_TYPE_LABELS, draftData?.workspace?.workItem);
-
-        labelsWidget.labels.nodes = labels;
-
-        const labelsWidgetIndex = draftData.workspace.workItem.widgets.findIndex(
-          (widget) => widget.type === WIDGET_TYPE_LABELS,
-        );
-
-        draftData.workspace.workItem.widgets[labelsWidgetIndex] = labelsWidget;
-      }
-
-      if (rolledUpDates) {
-        let rolledUpDatesWidget = findWidget(
-          WIDGET_TYPE_ROLLEDUP_DATES,
-          draftData?.workspace?.workItem,
-        );
-
-        const dueDate = rolledUpDates.dueDateFixed || null;
-        const dueDateFixed = dueDate ? pikadayToString(rolledUpDates.dueDateFixed) : null;
-        const startDate = rolledUpDates.startDateFixed || null;
-        const startDateFixed = startDate ? pikadayToString(rolledUpDates.startDateFixed) : null;
-
-        rolledUpDatesWidget = {
-          type: 'ROLLEDUP_DATES',
-          dueDate: dueDateFixed,
-          dueDateFixed,
-          dueDateIsFixed: rolledUpDates.dueDateIsFixed,
-          startDate: startDateFixed,
-          startDateFixed,
-          startDateIsFixed: rolledUpDates.startDateIsFixed,
-          __typename: 'WorkItemWidgetRolledupDates',
-        };
-
-        const rolledUpDatesWidgetIndex = draftData.workspace.workItem.widgets.findIndex(
-          (widget) => widget.type === WIDGET_TYPE_ROLLEDUP_DATES,
-        );
-
-        draftData.workspace.workItem.widgets[rolledUpDatesWidgetIndex] = rolledUpDatesWidget;
-      }
-
-      if (color) {
-        const colorWidget = findWidget(WIDGET_TYPE_COLOR, draftData?.workspace?.workItem);
-        colorWidget.color = color;
-
-        const colorWidgetIndex = draftData.workspace.workItem.widgets.findIndex(
-          (widget) => widget.type === WIDGET_TYPE_COLOR,
-        );
-        draftData.workspace.workItem.widgets[colorWidgetIndex] = colorWidget;
-      }
-
-      if (title) {
-        draftData.workspace.workItem.title = title;
-      }
-
-      if (description) {
-        const descriptionWidget = findWidget(
-          WIDGET_TYPE_DESCRIPTION,
-          draftData?.workspace?.workItem,
-        );
-        descriptionWidget.description = description;
-
-        const descriptionWidgetIndex = draftData.workspace.workItem.widgets.findIndex(
-          (widget) => widget.type === WIDGET_TYPE_DESCRIPTION,
-        );
-        draftData.workspace.workItem.widgets[descriptionWidgetIndex] = descriptionWidget;
-      }
-
-      if (confidential !== undefined) {
-        draftData.workspace.workItem.confidential = confidential;
-      }
+      const widgetUpdates = [
+        {
+          widgetType: WIDGET_TYPE_HEALTH_STATUS,
+          newData: healthStatus,
+          nodePath: 'healthStatus',
+        },
+        {
+          widgetType: WIDGET_TYPE_ASSIGNEES,
+          newData: assignees,
+          nodePath: 'assignees.nodes',
+        },
+        {
+          widgetType: WIDGET_TYPE_LABELS,
+          newData: labels,
+          nodePath: 'labels.nodes',
+        },
+        {
+          widgetType: WIDGET_TYPE_COLOR,
+          newData: color,
+          nodePath: 'color',
+        },
+        {
+          widgetType: WIDGET_TYPE_DESCRIPTION,
+          newData: description,
+          nodePath: 'description',
+        },
+      ];
+
+      widgetUpdates.forEach(({ widgetType, newData, nodePath }) => {
+        updateWidget(draftData, widgetType, newData, nodePath);
+      });
+
+      updateRolledUpDatesWidget(draftData, rolledUpDates);
+
+      if (title) draftData.workspace.workItem.title = title;
+      if (confidential !== undefined) draftData.workspace.workItem.confidential = confidential;
     }),
   );
 };