API reference@evolu/commonlocal‑first/Evolu › EvoluErrorDep

Defined in: packages/common/src/local-first/Evolu.ts:757

Properties

evoluError

readonly evoluError: ReadonlyStore<
  | EvoluError
| null>;

Defined in: packages/common/src/local-first/Evolu.ts:812

ReadonlyStore of EvoluError shared by all Evolu instances created from the same createEvoluDeps result.

Subscribe once to show user-facing error messages across all instances.

Example

import {
  assertEqual,
  createStore,
  Millis,
  type EvoluError,
} from "@evolu/common";
import type { EvoluErrorDep } from "@evolu/common/local-first";

// Stand-in for run.deps.evoluError from createEvoluDeps.
using evoluError = createStore<EvoluError | null>(null);
const deps = { evoluError } satisfies EvoluErrorDep;
let displayedMessage = "";
const showMessage = (message: string) => {
  displayedMessage = message;
};

deps.evoluError.subscribe(() => {
  const error = deps.evoluError.get();
  if (!error) return;

  // oxlint-disable-next-line typescript/switch-exhaustiveness-check -- The default intentionally handles every other EvoluError.
  switch (error.type) {
    case "TimestampDriftError":
      // Show guidance specific to the detected error.
      showMessage("Your system clock appears incorrect. Please fix it.");
      break;
    default:
      // Show a generic user message for other operational errors.
      showMessage("Something went wrong. Please try again.");
  }
});

deps.evoluError.set({
  type: "TimestampDriftError",
  next: Millis.orThrow(360000),
  now: Millis.orThrow(0),
});
assertEqual(
  displayedMessage,
  "Your system clock appears incorrect. Please fix it.",
);