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

Defined in: [packages/common/src/Store.ts:20](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Store.ts#L20)

A store for managing state with change notifications. Like a [Ref](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref) with
subscriptions.

Store is a valid dependency in Evolu's [Dependency
Injection](https://evolu.dev/docs/dependency-injection) pattern—use it when
functions need shared mutable state with subscriptions.

## Extends

- [`ReadonlyStore`](https://evolu.dev/docs/api-reference/common/Store/interfaces/ReadonlyStore)\<`T`\>
- [`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref)\<`T`\>

## Methods

<a id="dispose"></a>

### \[dispose\]()

```ts
[dispose](): void;
```

Defined in: node\_modules/@typescript/old/lib/lib.esnext.disposable.d.ts:34

#### Inherited from

[`ReadonlyStore`](https://evolu.dev/docs/api-reference/common/Store/interfaces/ReadonlyStore).[`[dispose]`](/docs/api-reference/common/Store/interfaces/ReadonlyStore#dispose)

## Properties

<a id="get"></a>

### get

```ts
readonly get: () => T;
```

Defined in: [packages/common/src/Store.ts:31](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Store.ts#L31)

Returns the current state of the store.

#### Inherited from

[`ReadonlyStore`](https://evolu.dev/docs/api-reference/common/Store/interfaces/ReadonlyStore).[`get`](https://evolu.dev/docs/api-reference/common/Store/interfaces/ReadonlyStore#get)

---

<a id="getandset"></a>

### getAndSet

```ts
readonly getAndSet: (value: T) => T;
```

Defined in: [packages/common/src/Ref.ts:54](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Ref.ts#L54)

Sets the current value and returns the previous value.

#### Inherited from

[`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref).[`getAndSet`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref#getandset)

---

<a id="getandupdate"></a>

### getAndUpdate

```ts
readonly getAndUpdate: (updater: (current: T) => T) => T;
```

Defined in: [packages/common/src/Ref.ts:63](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Ref.ts#L63)

Updates the current value and returns the previous value.

#### Inherited from

[`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref).[`getAndUpdate`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref#getandupdate)

---

<a id="modify"></a>

### modify

```ts
readonly modify: <R>(modifier: (current: T) => readonly [R, T]) => R;
```

Defined in: [packages/common/src/Ref.ts:69](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Ref.ts#L69)

Modifies the current value and returns a computed result.

#### Inherited from

[`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref).[`modify`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref#modify)

---

<a id="set"></a>

### set

```ts
readonly set: (value: T) => void;
```

Defined in: [packages/common/src/Ref.ts:51](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Ref.ts#L51)

Sets the current value.

#### Inherited from

[`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref).[`set`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref#set)

---

<a id="setandget"></a>

### setAndGet

```ts
readonly setAndGet: (value: T) => T;
```

Defined in: [packages/common/src/Ref.ts:57](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Ref.ts#L57)

Sets the current value and returns it.

#### Inherited from

[`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref).[`setAndGet`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref#setandget)

---

<a id="subscribe"></a>

### subscribe

```ts
readonly subscribe: (listener: Listener) => Unsubscribe;
```

Defined in: [packages/common/src/Store.ts:37](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Store.ts#L37)

Registers a listener to be called on state changes and returns a function
to unsubscribe.

#### Inherited from

[`ReadonlyStore`](https://evolu.dev/docs/api-reference/common/Store/interfaces/ReadonlyStore).[`subscribe`](https://evolu.dev/docs/api-reference/common/Store/interfaces/ReadonlyStore#subscribe)

---

<a id="update"></a>

### update

```ts
readonly update: (updater: (current: T) => T) => void;
```

Defined in: [packages/common/src/Ref.ts:60](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Ref.ts#L60)

Updates the current value.

#### Inherited from

[`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref).[`update`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref#update)

---

<a id="updateandget"></a>

### updateAndGet

```ts
readonly updateAndGet: (updater: (current: T) => T) => T;
```

Defined in: [packages/common/src/Ref.ts:66](https://github.com/evoluhq/evolu/blob/01c7a0a97dfe48f56ef61564d1715c514d063517/packages/common/src/Ref.ts#L66)

Updates the current value and returns it.

#### Inherited from

[`Ref`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref).[`updateAndGet`](https://evolu.dev/docs/api-reference/common/Ref/interfaces/Ref#updateandget)