[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Schedule](https://evolu.dev/docs/api-reference/common/Schedule) › exponential

```ts
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](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Schedule.ts#L294)

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](https://evolu.dev/docs/api-reference/common/Schedule/functions/take) or [maxElapsed](https://evolu.dev/docs/api-reference/common/Schedule/functions/maxElapsed) to limit.

### Exponential growth factors

```ts

// 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]);
```