diff --git a/packages/web/src/ducks/events/event.types.ts b/packages/web/src/ducks/events/event.types.ts
index 480f02e5e..58f1a8b99 100644
--- a/packages/web/src/ducks/events/event.types.ts
+++ b/packages/web/src/ducks/events/event.types.ts
@@ -74,9 +74,10 @@ interface Payload_DeleteEvent {
 }
 
 export interface Payload_EditEvent {
-  applyTo?: Categories_Recur;
   _id: string;
   event: Schema_Event;
+  applyTo?: Categories_Recur;
+  shouldRemove?: boolean;
 }
 
 export interface Payload_GetPaginatedEvents extends Filters_Pagination {
diff --git a/packages/web/src/ducks/events/sagas/event.sagas.ts b/packages/web/src/ducks/events/sagas/event.sagas.ts
index be33bd0e0..4765559a8 100644
--- a/packages/web/src/ducks/events/sagas/event.sagas.ts
+++ b/packages/web/src/ducks/events/sagas/event.sagas.ts
@@ -164,10 +164,15 @@ export function* deleteSomedayEvent({ payload }: Action_DeleteEvent) {
 }
 
 export function* editEvent({ payload }: Action_EditEvent) {
+  const { _id, applyTo, event, shouldRemove } = payload;
+
   try {
-    yield put(eventsEntitiesSlice.actions.edit(payload));
-    yield call(EventApi.edit, payload._id, payload.event, {
-      applyTo: payload.applyTo,
+    shouldRemove
+      ? yield put(eventsEntitiesSlice.actions.delete({ _id }))
+      : yield put(eventsEntitiesSlice.actions.edit(payload));
+
+    yield call(EventApi.edit, _id, event, {
+      applyTo: applyTo,
     });
     yield put(editEventSlice.actions.success());
   } catch (error) {
diff --git a/packages/web/src/views/Calendar/hooks/draft/useDraftUtil.ts b/packages/web/src/views/Calendar/hooks/draft/useDraftUtil.ts
index eb75b98c9..6fe688dcc 100644
--- a/packages/web/src/views/Calendar/hooks/draft/useDraftUtil.ts
+++ b/packages/web/src/views/Calendar/hooks/draft/useDraftUtil.ts
@@ -377,16 +377,17 @@ export const useDraftUtil = (
 
   const submit = (draft: Schema_GridEvent) => {
     const event = prepEvtBeforeSubmit(draft);
+    const { startOfView, endOfView } = weekProps.component;
 
     const isExisting = event._id;
-    // include param for how to handle recurrences
     if (isExisting) {
-      dispatch(
-        editEventSlice.actions.request({
-          _id: event._id,
-          event,
-        })
-      );
+      const isOutsideView =
+        !dayjs(event.startDate).isBetween(startOfView, endOfView, null, "[]") &&
+        !dayjs(event.endDate).isBetween(startOfView, endOfView, null, "[]");
+
+      const shouldRemove = isOutsideView ? true : false;
+      const payload = { _id: event._id, event, shouldRemove };
+      dispatch(editEventSlice.actions.request(payload));
     } else {
       dispatch(createEventSlice.actions.request(event));
     }