appsmithorg/appsmith · error · Error

Save page failed

Error message

Save page failed

What it means

Error thrown when SAVE_PAGE_ERROR wins the race against SAVE_PAGE_SUCCESS while adding a building block to the canvas. The skeleton widget was inserted, but the layout save that must precede pasting the building block failed, so the saga aborts before calling addBuildingBlockActionsToApplication.

Source

Thrown at app/client/src/sagas/BuildingBlockSagas/BuildingBlockAdditionSagas.ts:204

    const loadWorkspaceId: string = yield select(getCurrentWorkspaceId);
    const existingCopiedWidgets: unknown = yield call(getCopiedWidgets);
    const buildingBlockDragStartTimestamp: number = yield select(
      getBuildingBlockDragStartTimestamp,
    );

    // start loading for dropping building blocks
    yield put({
      type: ReduxActionTypes.DRAGGING_BUILDING_BLOCK_TO_CANVAS_INIT,
    });

    // makes sure updateAndSaveLayout completes first for initial skeletonWidget addition
    const saveResult: unknown = yield race({
      success: take(ReduxActionTypes.SAVE_PAGE_SUCCESS),
      failure: take(ReduxActionErrorTypes.SAVE_PAGE_ERROR),
    });

    if (typeof saveResult === "object" && "failure" in saveResult!) {
      throw new Error("Save page failed");
    }

    const response: ApiResponse<ImportBuildingBlockToApplicationResponse> =
      yield call(addBuildingBlockActionsToApplication, dragDetails);
    const isValid: boolean = yield validateResponse(response);

    if (isValid) {
      yield saveBuildingBlockWidgetsToStore(response);

      // remove skeleton loader just before pasting the building block
      yield put({
        type: WidgetReduxActionTypes.WIDGET_SINGLE_DELETE,
        payload: {
          widgetId: skeletonLoaderId,
          parentId: buildingBlockWidget.widgetId,
          disallowUndo: true,
          isShortcut: false,
        },

View on GitHub (pinned to 8cd9021c24)

Solutions

  1. Retry the drag-and-drop after confirming the server is reachable.
  2. Reduce the existing page size (remove unused widgets) if the save payload is rejected for size.
  3. Check the debugger / network response for the SAVE_PAGE error reason.
  4. Avoid concurrent building-block drops; one editor at a time on the page.
Defensive patterns

Strategy: retry

Prevention

When it happens

Trigger: updateAndSaveLayout rejects server-side (validation error in the new skeleton, throttling, 5xx, network drop); concurrent save attempts collide; the page layout is too large and the server rejects it.

Common situations: Workspace offline briefly; large pages exceeding server limits; two editors dropping blocks at the same instant; backend deploy in progress.

Related errors


AI-assisted analysis of appsmithorg/appsmith@8cd9021c24 (2026-08-12). Data as JSON: /api/errors/18ccb2014ce93f54. Report an issue: GitHub.