API reference@evolu/commonlocal‑first/Schema › ValidateSchema

type ValidateSchema<S> =
  ValidateSchemaHasId<S> extends never
    ? ValidateIdColumnType<S> extends never
      ? ValidateNoSystemColumns<S> extends never
        ? ValidateColumnTypes<S> extends never
          ? S
          : ValidateColumnTypes<S>
        : ValidateNoSystemColumns<S>
      : ValidateIdColumnType<S>
    : ValidateSchemaHasId<S>;

Defined in: packages/common/src/local-first/Schema.ts:107

Validates an EvoluSchema at compile time, returning the first error found as a readable string literal type. This approach provides much clearer and more actionable TypeScript errors than the default, which are often hard to read.

Validates the following schema requirements:

  1. All tables must have an 'id' column
  2. The 'id' column output type must extend Id
  3. Tables cannot use system column names (createdAt, updatedAt, isDeleted)
  4. All column output types must be compatible with SQLite (extend SqliteValue)