[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:5497](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5497)

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());
```