[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:36](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Object.ts#L36)

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

Accepts objects with `Object.prototype` and objects with a `null` prototype
created via `Object.create(null)`. Rejects class instances and other built-in
objects because their prototype chain includes an application-specific or
built-in prototype before `Object.prototype`.

The prototype-chain check uses structure instead of `prototype ===
Object.prototype` so it also works for plain objects coming from another
JavaScript realm.

### Example

```ts
isPlainObject({}); // true
isPlainObject(Object.create(null)); // true
isPlainObject(new Date()); // false
isPlainObject(new (class Example {})()); // false
isPlainObject([]); // false
isPlainObject(null); // false
```