API reference › @evolu/common › Schedule › 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]);