Try rrweb
# rrweb
**This is a simpler version of the [original rrewb README](../../README.md) within this rrweb subpackage**
[δΈζζζ‘£](../../README.zh_CN.md)
rrweb refers to 'record and replay the web', which is a tool for recording and replaying users' interactions on the web.
## Guide
[**π Read the rrweb guide here. π**](../../guide.md)
[**π³ Recipes π³**](../../docs/recipes/index.md)
## Project Structure
**[rrweb](https://github.com/rrweb-io/rrweb)** mainly includes two funtions:
- **Record**: The record function is used to record all the mutations in the DOM
- **Replay**: The replay function is to replay the recorded mutations one by one according to the corresponding timestamp.
## Roadmap
- rrdom: an ad-hoc DOM for rrweb session data [#419](https://github.com/rrweb-io/rrweb/issues/419)
- storage engine: do deduplication on a large number of rrweb sessions
- more end-to-end tests
- compact mutation data in common patterns
- provide plugins via the new plugin API, including:
- XHR plugin
- fetch plugin
- GraphQL plugin
- ...
## Internal Design
- [serialization](../../docs/serialization.md)
- [incremental snapshot](../../docs/observer.md)
- [replay](../../docs/replay.md)
- [sandbox](../../docs/sandbox.md)
## Contribute Guide
Since we want the record and replay sides to share a strongly typed data structure, rrweb is developed with typescript which provides stronger type support.
[Typescript handbook](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html)
1. Fork this repository.
2. Run `yarn install` in the root to install required dependencies for all sub-packages (note: `npm install` is _not_ recommended).
3. Run `yarn dev` in the root to get auto-building for all the sub-packages whenever you modify anything.
4. Navigate to one of the sub-packages (in the `packages` folder) where you'd like to make a change.
5. Patch the code and run `yarn test` to run the tests, make sure they pass before you commit anything.
6. Push the code and create a pull request.
Protip: You can run `yarn test` in the root folder to run all the tests.
In addition to adding integration tests and unit tests, rrweb also provides a REPL testing tool.
[Using the REPL tool](../../guide.md#REPL-tool)
## Core Team Members
## Who's using rrweb