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

```ts
function isPlainObject(value: unknown): value is Record<string, unknown>;
```

Defined in: [packages/common/src/Object.ts:81](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Object.ts#L81)

Checks if a value is a plain object (e.g., created with `{}` or `Object`).

Accepts objects with a `null` prototype. Otherwise, it uses a realm-neutral
structural heuristic: the immediate prototype must be a root object with own
`hasOwnProperty` and `isPrototypeOf` properties. This recognizes ordinary
Objects from another JavaScript realm without relying on prototype identity.

A custom root prototype with the same shape can therefore be classified as
plain. This function assumes trusted JavaScript and is not a prototype
authentication or security boundary. Other custom prototypes, class
instances, and built-in objects are rejected.

### Example

```ts

class Example {
  readonly value = "example";
}

assertTrue(isPlainObject({}));
assertTrue(isPlainObject(Object.create(null)));
assertFalse(isPlainObject(new Date()));
assertFalse(isPlainObject(new Example()));
assertFalse(isPlainObject([]));
assertFalse(isPlainObject(null));
```