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

# Extensions

Both [createMiddleware](broken://pages/-L8oOdRtI5NPRSDh9ux6) and [createMetaReducer](/redux-beacon/index-1/create-meta-reducer.md) accept an **optional** extensions object as their third parameter. If provided, an extensions object should have at least one of the following properties:

```javascript
{
  logger,
  offlineStorage,
}
```

Each property corresponds to a different type of extension that Redux Beacon supports:

* [`offlineStorage` extensions](/redux-beacon/index-2.md#offlinestorage-extensions)
* [`logger` extensions](/redux-beacon/index-2.md#logger-extensions)

As an added convenience we maintain some prebuilt extension constructors:

| Extension Type   | Extension Constructor                                               |
| ---------------- | ------------------------------------------------------------------- |
| `logger`         | [logger](/redux-beacon/index-2/logger.md)                           |
| `offlineStorage` | [offlineWeb](/redux-beacon/index-2/offline-web.md)                  |
| `offlineStorage` | [offlineReactNative](/redux-beacon/index-2/offline-react-native.md) |

## logger extensions

`logger` extensions provide a means to log events after they are created.

## offlineStorage extensions

`offlineStorage` extensions provide a means to record analytics events even when your app is offline. An `offlineStorage` extension should have three methods: `saveEvents`, `purgeEvents`, and `isConnected`.
