louislam/uptime-kuma · warning · Error

Status Page is not found

Error message

Status Page is not found

What it means

Thrown by the deleteStatusPage handler in its else branch: when the resolved statusPageID does not correspond to an existing page (the lookup used to authorize deletion failed). It is the terminal branch after the delete flow confirms there is nothing to delete.

Source

Thrown at server/socket-handlers/status-page-socket-handler.js:511

                    server.entryPage = "dashboard";
                    await Settings.set("entryPage", server.entryPage, "general");
                }

                // No need to delete records from `status_page_cname`, because it has cascade foreign key.
                // But for incident & group, it is hard to add cascade foreign key during migration, so they have to be deleted manually.

                // Delete incident
                await R.exec("DELETE FROM incident WHERE status_page_id = ? ", [statusPageID]);

                // Delete group
                await R.exec("DELETE FROM `group` WHERE status_page_id = ? ", [statusPageID]);

                // Delete status_page
                await R.exec("DELETE FROM status_page WHERE id = ? ", [statusPageID]);

                apicache.clear();
            } else {
                throw new Error("Status Page is not found");
            }

            callback({
                ok: true,
            });
        } catch (error) {
            callback({
                ok: false,
                msg: error.message,
            });
        }
    });
};

/**
 * Check slug a-z, 0-9, - only
 * Regex from: https://stackoverflow.com/questions/22454258/js-regex-string-validation-for-slug
 * @param {string} slug Slug to test

View on GitHub (pinned to 6b5ea01557)

Solutions

  1. Refresh the status page list before allowing delete; hide delete for pages no longer present.
  2. Treat the error as already-deleted and update the UI accordingly.
  3. Confirm the slug/id passed is from the current page list.
Defensive patterns

Strategy: validation

Validate before calling

const exists = statusPages.some(p => Number(p.id) === Number(statusPageID));
if (!exists) throw new Error("Status Page is not found");
socket.emit("deleteStatusPage", statusPageID, cb);

Type guard

function statusPageExists(id, list) {
  return Array.isArray(list) && list.some(p => Number(p.id) === Number(id));
}

Try / catch

try { await emitAsync("deleteStatusPage", id, cb); }
catch (e) { if (/is not found/.test(e.message)) removeFromUI(id); else throw e; }

Prevention

When it happens

Trigger: Client emits 'deleteStatusPage' with a slug/id that no longer resolves to a status_page row; the handler reaches the else branch and rejects the deletion.

Common situations: Page already deleted in another session; stale delete button; race between two clients deleting the same page; slug typo.

Related errors


AI-assisted analysis of louislam/uptime-kuma@6b5ea01557 (2026-08-12). Data as JSON: /api/errors/986483a50af740e2. Report an issue: GitHub.