API reference@evolu/commonSchedule › exponential

function exponential(
  base: Duration,
  factor?: number,
): Schedule<
  number &
    Brand<"NonNaN"> &
    Brand<"Finite"> &
    Brand<"Int"> &
    Brand<"NonNegative"> &
    Brand<"LessThan281474976710655"> &
    Brand<"Millis">
>;

Defined in: packages/common/src/Schedule.ts:294

Exponential backoff schedule.

Computes delay as base * factor^(step - 1):

  • Step 1: base
  • Step 2: base * factor
  • Step 3: base * factor²
  • ...

Never stops — combine with take or maxElapsed to limit.

Exponential growth factors

import { assertOk, exponential, testCreateDeps } from "@evolu/common";

// Standard doubling and gentler 1.5× growth.
const standard = exponential("100ms");
const gentle = exponential("100ms", 1.5);
const standardStep = standard(testCreateDeps());
const gentleStep = gentle(testCreateDeps());
assertOk(standardStep(undefined), [100, 100]);
assertOk(standardStep(undefined), [200, 200]);
assertOk(gentleStep(undefined), [100, 100]);
assertOk(gentleStep(undefined), [150, 150]);