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

Defined in: [packages/common/src/Types.ts:208](https://github.com/evoluhq/evolu/blob/f0109fb501a593010e858e39248dde1200eeb2d7/packages/common/src/Types.ts#L208)

Realm-neutral runtime identity for a TypeScript interface.

Extend this interface and add its runtime evidence with [instance](https://evolu.dev/docs/api-reference/common/Types/functions/instance) when
constructing a value. Unlike JavaScript `instanceof`, the identity does not
depend on a constructor or prototype and therefore survives realms, package
duplication, object spreading, and structured cloning.

The marker is intentionally forgeable. It identifies values created by
trusted constructors; it is not structural validation or a security
boundary.

### Adding runtime identity

```ts

interface Foo extends Instance<"Foo"> {
  readonly value: string;
}

const foo: Foo = {
  ...instance("Foo"),
  value: "value",
};

assertEqual(foo["~evolu/instance"], "Foo");
```

## Properties

<a id="evoluinstance"></a>

### ~evolu/instance

```ts
readonly ~evolu/instance: Name;
```

Defined in: [packages/common/src/Types.ts:209](https://github.com/evoluhq/evolu/blob/f0109fb501a593010e858e39248dde1200eeb2d7/packages/common/src/Types.ts#L209)