# `Electric.Client.Message.ResumeMessage`
[🔗](https://github.com/electric-sql/electric/tree/%40core/elixir-client%400.9.4/packages/elixir-client/lib/electric/client/message.ex#L168)

Emitted by the synchronisation stream before terminating early. If passed
as an option to [`Client.stream/3`](`Electric.Client.stream/3`) allows for
resuming a shape stream at the given point.

E.g.

```
# passing `live: false` means the stream will terminate once it receives an
# `up-to-date` message from the server
messages = Electric.Client.stream(client, "my_table", live: false) |> Enum.to_list()

%ResumeMessage{} = resume = List.last(messages)

# `stream` will resume from whatever point the initial one finished
stream = Electric.Client.stream(client, "my_table", resume: resume)
```

# `t`

```elixir
@type t() :: %Electric.Client.Message.ResumeMessage{
  key_data: %{
    required(String.t()) =&gt; %{
      tags: MapSet.t(String.t()),
      msg: Electric.Client.Message.ChangeMessage.t()
    }
  },
  offset: Electric.Client.Offset.t(),
  schema: Electric.Client.schema(),
  shape_handle: Electric.Client.shape_handle(),
  tag_to_keys: %{required(String.t()) =&gt; MapSet.t(String.t())}
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
