> For the complete documentation index, see [llms.txt](https://jho406.gitbook.io/breezy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jho406.gitbook.io/breezy/docs/reference/index.md).

# index

### References

#### useSuperglue

Re-exports [useSuperglue](/breezy/docs/reference/hooks.md#usesuperglue)

#### useContent

Re-exports [useContent](/breezy/docs/reference/hooks.md#usecontent)

#### NavigationProvider

Re-exports [NavigationProvider](/breezy/docs/reference/components.navigation.md#navigationprovider)

#### NavigationContext

Re-exports [NavigationContext](/breezy/docs/reference/components.navigation.md#navigationcontext)

#### superglueReducer

Re-exports superglue

#### pageReducer

Re-exports pages

#### FetchArgs

Re-exports [FetchArgs](/breezy/docs/reference/types.actions.md#fetchargs)

#### GraftingSuccessAction

Re-exports [GraftingSuccessAction](/breezy/docs/reference/types.actions.md#graftingsuccessaction)

#### GraftingErrorAction

Re-exports [GraftingErrorAction](/breezy/docs/reference/types.actions.md#graftingerroraction)

#### PageKey

Re-exports [PageKey](/breezy/docs/reference/types.md#pagekey-4)

#### RestoreStrategy

Re-exports [RestoreStrategy](/breezy/docs/reference/types.md#restorestrategy-1)

#### NavigationAction

Re-exports [NavigationAction](/breezy/docs/reference/types.md#navigationaction-1)

#### ComponentIdentifier

Re-exports [ComponentIdentifier](/breezy/docs/reference/types.md#componentidentifier-3)

#### Keypath

Re-exports [Keypath](/breezy/docs/reference/types.md#keypath)

#### JSONPrimitive

Re-exports [JSONPrimitive](/breezy/docs/reference/types.md#jsonprimitive)

#### JSONObject

Re-exports [JSONObject](/breezy/docs/reference/types.md#jsonobject)

#### JSONMappable

Re-exports [JSONMappable](/breezy/docs/reference/types.md#jsonmappable)

#### JSONKeyable

Re-exports [JSONKeyable](/breezy/docs/reference/types.md#jsonkeyable)

#### JSONValue

Re-exports [JSONValue](/breezy/docs/reference/types.md#jsonvalue)

#### ParsedResponse

Re-exports [ParsedResponse](/breezy/docs/reference/types.md#parsedresponse)

#### Defer

Re-exports [Defer](/breezy/docs/reference/types.md#defer)

#### VisitResponse

Re-exports [VisitResponse](/breezy/docs/reference/types.md#visitresponset)

#### Page

Re-exports [Page](/breezy/docs/reference/types.md#paget)

#### GraftResponse

Re-exports [GraftResponse](/breezy/docs/reference/types.md#graftresponset)

#### PageResponse

Re-exports [PageResponse](/breezy/docs/reference/types.md#pageresponse)

#### Fragment

Re-exports [Fragment](/breezy/docs/reference/types.md#fragment)

#### AllPages

Re-exports [AllPages](/breezy/docs/reference/types.md#allpagest)

#### SuperglueState

Re-exports [SuperglueState](/breezy/docs/reference/types.md#supergluestate)

#### RootState

Re-exports [RootState](/breezy/docs/reference/types.md#rootstatet)

#### Meta

Re-exports [Meta](/breezy/docs/reference/types.md#meta)

#### VisitMeta

Re-exports [VisitMeta](/breezy/docs/reference/types.md#visitmeta)

#### VisitCreator

Re-exports [VisitCreator](/breezy/docs/reference/types.md#visitcreator)

#### RemoteCreator

Re-exports [RemoteCreator](/breezy/docs/reference/types.md#remotecreator)

#### Dispatch

Re-exports [Dispatch](/breezy/docs/reference/types.md#dispatch)

#### SuperglueStore

Re-exports [SuperglueStore](/breezy/docs/reference/types.md#supergluestore)

#### Handlers

Re-exports [Handlers](/breezy/docs/reference/types.md#handlers)

#### UJSHandlers

Re-exports [UJSHandlers](/breezy/docs/reference/types.md#ujshandlers)

#### HistoryState

Re-exports [HistoryState](/breezy/docs/reference/types.md#historystate)

#### SaveAndProcessPageThunk

Re-exports [SaveAndProcessPageThunk](/breezy/docs/reference/types.md#saveandprocesspagethunk)

#### MetaThunk

Re-exports [MetaThunk](/breezy/docs/reference/types.md#metathunk)

#### VisitMetaThunk

Re-exports [VisitMetaThunk](/breezy/docs/reference/types.md#visitmetathunk)

#### DefermentThunk

Re-exports [DefermentThunk](/breezy/docs/reference/types.md#defermentthunk)

#### BasicRequestInit

Re-exports [BasicRequestInit](/breezy/docs/reference/types.md#basicrequestinit)

#### NavigateTo

Re-exports [NavigateTo](/breezy/docs/reference/types.md#navigateto-1)

#### NavigationContextProps

Re-exports [NavigationContextProps](/breezy/docs/reference/types.md#navigationcontextprops)

#### NavigationProviderProps

Re-exports [NavigationProviderProps](/breezy/docs/reference/types.md#navigationproviderprops)

#### BuildStore

Re-exports [BuildStore](/breezy/docs/reference/types.md#buildstore)

#### BuildVisitAndRemote

Re-exports [BuildVisitAndRemote](/breezy/docs/reference/types.md#buildvisitandremote)

#### SetupProps

Re-exports [SetupProps](/breezy/docs/reference/types.md#setupprops)

#### ApplicationProps

Re-exports [ApplicationProps](/breezy/docs/reference/types.md#applicationprops)

#### Visit

Re-exports [Visit](/breezy/docs/reference/types.requests.md#visit)

#### VisitProps

Re-exports [VisitProps](/breezy/docs/reference/types.requests.md#visitprops)

#### Remote

Re-exports [Remote](/breezy/docs/reference/types.requests.md#remote)

#### RemoteProps

Re-exports [RemoteProps](/breezy/docs/reference/types.requests.md#remoteprops)

#### BeforeSave

Re-exports [BeforeSave](/breezy/docs/reference/types.requests.md#beforesave-2)

#### ApplicationRemote

Re-exports [ApplicationRemote](/breezy/docs/reference/types.requests.md#applicationremote)

#### ApplicationVisit

Re-exports [ApplicationVisit](/breezy/docs/reference/types.requests.md#applicationvisit)

### Variables

#### GRAFTING\_ERROR

> `const` **GRAFTING\_ERROR**: `"@@superglue/GRAFTING_ERROR"` = `'@@superglue/GRAFTING_ERROR'`

**Defined in**

[lib/actions.ts:12](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L12)

***

#### GRAFTING\_SUCCESS

> `const` **GRAFTING\_SUCCESS**: `"@@superglue/GRAFTING_SUCCESS"` = `'@@superglue/GRAFTING_SUCCESS'`

**Defined in**

[lib/actions.ts:13](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L13)

***

#### rootReducer

> `const` **rootReducer**: {`superglue`: `superglueReducer`;`pages`: `pageReducer`; }

**Type declaration**

| Name        | Type                                                                                                                                                                    | Default value    | Defined in                                                                                                                                              |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `superglue` | (`state`: [`SuperglueState`](/breezy/docs/reference/types.md#supergluestate), `action`: `Action`) => [`SuperglueState`](/breezy/docs/reference/types.md#supergluestate) | superglueReducer | [lib/reducers/index.ts:236](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/reducers/index.ts#L236) |
| `pages`     | (`state`: [`AllPages`](/breezy/docs/reference/types.md#allpagest), `action`: `Action`) => [`AllPages`](/breezy/docs/reference/types.md#allpagest)                       | pageReducer      | [lib/reducers/index.ts:237](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/reducers/index.ts#L237) |

**Defined in**

[lib/reducers/index.ts:235](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/reducers/index.ts#L235)

### Functions

#### saveAndProcessPage()

> **saveAndProcessPage**(`pageKey`: `string`, `page`: [`VisitResponse`](/breezy/docs/reference/types.md#visitresponset) | [`GraftResponse`](/breezy/docs/reference/types.md#graftresponset)): [`SaveAndProcessPageThunk`](/breezy/docs/reference/types.md#saveandprocesspagethunk)

Save and process a rendered view from PropsTemplate. This is the primitive function that `visit` and `remote` calls when it receives a page.

If you render a page outside the normal request response cycle, e.g, websocket, you can use this function to save the payload.

**Parameters**

| Parameter | Type                                                                                                                                   |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `pageKey` | `string`                                                                                                                               |
| `page`    | [`VisitResponse`](/breezy/docs/reference/types.md#visitresponset) \| [`GraftResponse`](/breezy/docs/reference/types.md#graftresponset) |

**Returns**

[`SaveAndProcessPageThunk`](/breezy/docs/reference/types.md#saveandprocesspagethunk)

**Defined in**

[lib/action\_creators/index.ts:74](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/action_creators/index.ts#L74)

***

#### saveResponse()

> **saveResponse**(...`args`: \[{`pageKey`: `string`;`page`: [`VisitResponse`](/breezy/docs/reference/types.md#visitresponset); }]): {}

Calling this redux#ActionCreator with `Args` will return an Action with a payload of type `P` and (depending on the `PrepareAction` method used) a `meta`- and `error` property of types `M` and `E` respectively.

**Parameters**

| Parameter | Type                                                                                                 |
| --------- | ---------------------------------------------------------------------------------------------------- |
| ...`args` | \[{`pageKey`: `string`;`page`: [`VisitResponse`](/breezy/docs/reference/types.md#visitresponset); }] |

**Returns**

{}

**Defined in**

[lib/actions.ts:15](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L15)

***

#### updateFragments()

> **updateFragments**(`payload`: {`name`: `string`;`path`: `string`;`pageKey`: `string`;`value`: [`JSONMappable`](/breezy/docs/reference/types.md#jsonmappable);`previousValue`: [`JSONMappable`](/breezy/docs/reference/types.md#jsonmappable); }): {}

A redux action called whenever a fragment is received from `visit` or updated using `remote`. Its a useful action to use for cross cutting concerns like a shared header or a shopping cart. For example:

```
import { updateFragments } from '@thoughtbot/superglue'

export const exampleSlice = createSlice({
 name: 'Example',
 initialState: {},
 extraReducers: (builder) => {
   builder.addCase(updateFragments, (state, action) => {
     // Update the slice using the latest and greatest.
     return action.value
```

**Parameters**

| Parameter                | Type                                                           |
| ------------------------ | -------------------------------------------------------------- |
| `payload`                | `object`                                                       |
| `payload.name`           | `string`                                                       |
| `payload.path`           | `string`                                                       |
| `payload.pageKey`        | `string`                                                       |
| `payload.value`          | [`JSONMappable`](/breezy/docs/reference/types.md#jsonmappable) |
| `payload.previousValue`? | [`JSONMappable`](/breezy/docs/reference/types.md#jsonmappable) |

**Returns**

{}

**Defined in**

[lib/actions.ts:64](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L64)

***

#### copyPage()

> **copyPage**(`payload`: {`from`: `string`;`to`: `string`; }): {}

A redux action you can dispatch to copy a page from one pageKey to another. Its a very useful way to create optimistic updates with a URL change. For example:

```
import { copyPage, remote } from '@thoughtbot/superglue'

dispatch(copyPage({ from: originalKey, to: targetKey}))

... make edits to target page and finally

navigateTo(targetKey)
```

**Parameters**

| Parameter      | Type     |
| -------------- | -------- |
| `payload`      | `object` |
| `payload.from` | `string` |
| `payload.to`   | `string` |

**Returns**

{}

**Defined in**

[lib/actions.ts:86](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L86)

***

#### removePage()

> **removePage**(`payload`: {`pageKey`: `string`; }): {}

A redux action you can dispatch to remove a page from your store.

```
import { removePage } from '@thoughtbot/superglue'

dispatch(removePage({ pageKey: '/delete_me_please"}))
```

**Parameters**

| Parameter         | Type     |
| ----------------- | -------- |
| `payload`         | `object` |
| `payload.pageKey` | `string` |

**Returns**

{}

**Defined in**

[lib/actions.ts:99](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L99)

***

#### beforeFetch()

> **beforeFetch**(`payload`: {`fetchArgs`: [`FetchArgs`](/breezy/docs/reference/types.actions.md#fetchargs); }): {}

A redux action called before a `fetch` takes place. It will fire in `remote` and `visit`. You can hook into this event in your redux slices like this:

```
import { beforeFetch } from '@thoughtbot/superglue'

export const exampleSlice = createSlice({
 name: 'Example',
 initialState: {},
 extraReducers: (builder) => {
   builder.addCase(beforeFetch, (state, action) => {
```

**Parameters**

| Parameter           | Type                                                             |
| ------------------- | ---------------------------------------------------------------- |
| `payload`           | `object`                                                         |
| `payload.fetchArgs` | [`FetchArgs`](/breezy/docs/reference/types.actions.md#fetchargs) |

**Returns**

{}

**Defined in**

[lib/actions.ts:117](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L117)

***

#### beforeVisit()

> **beforeVisit**(`payload`: {`currentPageKey`: `string`;`fetchArgs`: [`FetchArgs`](/breezy/docs/reference/types.actions.md#fetchargs); }): {}

A redux action called before a `visit` takes place. You can hook into this event in your redux slices like this:

```
import { beforeVisit } from '@thoughtbot/superglue'

export const exampleSlice = createSlice({
 name: 'Example',
 initialState: {},
 extraReducers: (builder) => {
   builder.addCase(beforeVisit, (state, action) => {
```

**Parameters**

| Parameter                | Type                                                             |
| ------------------------ | ---------------------------------------------------------------- |
| `payload`                | `object`                                                         |
| `payload.currentPageKey` | `string`                                                         |
| `payload.fetchArgs`      | [`FetchArgs`](/breezy/docs/reference/types.actions.md#fetchargs) |

**Returns**

{}

**Defined in**

[lib/actions.ts:135](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L135)

***

#### beforeRemote()

> **beforeRemote**(`payload`: {`currentPageKey`: `string`;`fetchArgs`: [`FetchArgs`](/breezy/docs/reference/types.actions.md#fetchargs); }): {}

A redux action called before `remote` takes place. You can hook into this event in your redux slices like this:

```
import { beforeRemote } from '@thoughtbot/superglue'

export const exampleSlice = createSlice({
 name: 'Example',
 initialState: {},
 extraReducers: (builder) => {
   builder.addCase(beforeRemote, (state, action) => {
```

**Parameters**

| Parameter                | Type                                                             |
| ------------------------ | ---------------------------------------------------------------- |
| `payload`                | `object`                                                         |
| `payload.currentPageKey` | `string`                                                         |
| `payload.fetchArgs`      | [`FetchArgs`](/breezy/docs/reference/types.actions.md#fetchargs) |

**Returns**

{}

**Defined in**

[lib/actions.ts:154](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/actions.ts#L154)

***

#### prepareStore()

> **prepareStore**(`store`: [`SuperglueStore`](/breezy/docs/reference/types.md#supergluestore), `initialPage`: [`VisitResponse`](/breezy/docs/reference/types.md#visitresponset), `path`: `string`): `void`

**Parameters**

| Parameter     | Type                                                               |
| ------------- | ------------------------------------------------------------------ |
| `store`       | [`SuperglueStore`](/breezy/docs/reference/types.md#supergluestore) |
| `initialPage` | [`VisitResponse`](/breezy/docs/reference/types.md#visitresponset)  |
| `path`        | `string`                                                           |

**Returns**

`void`

**Defined in**

[lib/index.tsx:51](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L51)

***

#### setup()

> **setup**(`__namedParameters`: [`SetupProps`](/breezy/docs/reference/types.md#setupprops)): {`visit`: [`ApplicationVisit`](/breezy/docs/reference/types.requests.md#applicationvisit);`remote`: [`ApplicationRemote`](/breezy/docs/reference/types.requests.md#applicationremote);`nextHistory`: `History`;`initialPageKey`: `string`;`ujs`: `handlers`; }

This is the setup function that the Application calls. Use this function if you like to build your own Application component.

**Parameters**

| Parameter           | Type                                                       |
| ------------------- | ---------------------------------------------------------- |
| `__namedParameters` | [`SetupProps`](/breezy/docs/reference/types.md#setupprops) |

**Returns**

{`visit`: [`ApplicationVisit`](/breezy/docs/reference/types.requests.md#applicationvisit);`remote`: [`ApplicationRemote`](/breezy/docs/reference/types.requests.md#applicationremote);`nextHistory`: `History`;`initialPageKey`: `string`;`ujs`: `handlers`; }

| Name             | Type                                                                              | Default value | Defined in                                                                                                                              |
| ---------------- | --------------------------------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `visit`          | [`ApplicationVisit`](/breezy/docs/reference/types.requests.md#applicationvisit)   | -             | [lib/index.tsx:99](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L99)   |
| `remote`         | [`ApplicationRemote`](/breezy/docs/reference/types.requests.md#applicationremote) | -             | [lib/index.tsx:100](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L100) |
| `nextHistory`    | `History`                                                                         | -             | [lib/index.tsx:101](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L101) |
| `initialPageKey` | `string`                                                                          | -             | [lib/index.tsx:102](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L102) |
| `ujs`            | [`Handlers`](/breezy/docs/reference/types.md#handlers)                            | handlers      | [lib/index.tsx:103](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L103) |

**Defined in**

[lib/index.tsx:73](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L73)

***

#### Application()

> **Application**(`__namedParameters`: [`ApplicationProps`](/breezy/docs/reference/types.md#applicationprops)): `Element`

The entry point to your superglue application. It sets up the redux Provider, redux state and the Navigation component.

This is a simple component, you can override this by copying the source code and use the exported methods used by this component (`start` and `ujsHandler`).

**Parameters**

| Parameter           | Type                                                                   |
| ------------------- | ---------------------------------------------------------------------- |
| `__namedParameters` | [`ApplicationProps`](/breezy/docs/reference/types.md#applicationprops) |

**Returns**

`Element`

**Defined in**

[lib/index.tsx:114](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/index.tsx#L114)

***

#### getIn()

> **getIn**(`node`: [`JSONMappable`](/breezy/docs/reference/types.md#jsonmappable), `path`: `string`): [`JSONValue`](/breezy/docs/reference/types.md#jsonvalue)

Retrieves data from a JSON object using a [Keypath](/breezy/docs/reference/types.md#keypath)

**Parameters**

| Parameter | Type                                                           | Description |
| --------- | -------------------------------------------------------------- | ----------- |
| `node`    | [`JSONMappable`](/breezy/docs/reference/types.md#jsonmappable) |             |
| `path`    | `string`                                                       |             |

**Returns**

[`JSONValue`](/breezy/docs/reference/types.md#jsonvalue)

**Defined in**

[lib/utils/immutability.ts:22](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/utils/immutability.ts#L22)

***

#### urlToPageKey()

> **urlToPageKey**(`url`: `string`): [`PageKey`](/breezy/docs/reference/types.md#pagekey-4)

Converts a url to a PageKey.

**Parameters**

| Parameter | Type     | Description |
| --------- | -------- | ----------- |
| `url`     | `string` |             |

**Returns**

[`PageKey`](/breezy/docs/reference/types.md#pagekey-4)

**Defined in**

[lib/utils/url.ts:64](https://github.com/thoughtbot/superglue/blob/082475a624bd2c23522d97710a5b2ed335eb293c/superglue/lib/utils/url.ts#L64)
