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

```ts
function createGate(__namedParameters?: { isOpen?: boolean }): Gate;
```

Defined in: [packages/common/src/Task.ts:5492](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Task.ts#L5492)

Creates a [Gate](https://evolu.dev/docs/api-reference/common/Task/interfaces/Gate).

### Example

```ts
import {
  assertEqual,
  assertOk,
  assertTrue,
  createGate,
  createRun,
  ok,
  type Task,
} from "@evolu/common";

await using run = createRun();
const networkGate = createGate();

const uploadedItems: Array<string> = [];
const syncOnce =
  (item: string): Task<void> =>
  async (run) => {
    await run.ok(networkGate.wait);
    uploadedItems.push(item);
    return ok();
  };

const first = run(syncOnce("first"));
const second = run(syncOnce("second"));
assertEqual(uploadedItems, []);

networkGate.open();
assertOk(await first, undefined);
assertOk(await second, undefined);
assertEqual(uploadedItems, ["first", "second"]);
assertTrue(networkGate.isOpen());
```