All Projects → joshwcomeau → Redux Vcr

joshwcomeau / Redux Vcr

📼 Record and replay user sessions

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Redux Vcr

Meal Prep
Source code for a 4-part series I wrote about Vue, Vue Router, Vuex and Vuetify
Stars: ✭ 496 (-14.92%)
Mutual labels:  firebase
Angular Commerce
Angular components for scaffolding online store
Stars: ✭ 526 (-9.78%)
Mutual labels:  firebase
Firebaseandroidchat
Chat with features : Login with Google | Send Photo Camera | Send Photo Gallery | Send Location
Stars: ✭ 571 (-2.06%)
Mutual labels:  firebase
Nextjs Firebase Authentication
Next.js + Firebase Starter
Stars: ✭ 502 (-13.89%)
Mutual labels:  firebase
Tamiat
⛵️ Vuejs and Firebase based CMS
Stars: ✭ 510 (-12.52%)
Mutual labels:  firebase
Firebase Action
GitHub Action for interacting with Firebase
Stars: ✭ 554 (-4.97%)
Mutual labels:  firebase
Messenger
iOS - Real-time messaging app 🎨
Stars: ✭ 491 (-15.78%)
Mutual labels:  firebase
React Native Starter
Professional react-native starter kit with everything you'll ever need to deploy rock solid apps
Stars: ✭ 579 (-0.69%)
Mutual labels:  firebase
Todo Angular Firebase
Todo app with Angular CLI • AngularFire2 • Firebase • OAuth • SW-Precache
Stars: ✭ 517 (-11.32%)
Mutual labels:  firebase
Bonfire Firebase Sample
An app to discuss your favourite emojis. This is a sample app built with Firebase.
Stars: ✭ 564 (-3.26%)
Mutual labels:  firebase
Rxfirebase
Rxjava 2.0 wrapper on Google's Android Firebase library.
Stars: ✭ 509 (-12.69%)
Mutual labels:  firebase
Flank
🚤 Massively parallel Android and iOS test runner for Firebase Test Lab
Stars: ✭ 509 (-12.69%)
Mutual labels:  firebase
Quickstart Unity
Firebase Quickstart Samples for Unity
Stars: ✭ 553 (-5.15%)
Mutual labels:  firebase
Chat app
A flutter chat app built with firestore. It is clone of messenger.User can create stories,chat and search in real time.
Stars: ✭ 493 (-15.44%)
Mutual labels:  firebase
Learning Resources
"Technology Gold mine" to collect and share materials/resources
Stars: ✭ 573 (-1.72%)
Mutual labels:  firebase
Firebase Module
🔥 Easily integrate Firebase into your Nuxt project. 🔥
Stars: ✭ 493 (-15.44%)
Mutual labels:  firebase
Redux Firestore
Redux bindings for Firestore
Stars: ✭ 530 (-9.09%)
Mutual labels:  firebase
Angular 1 5 Components App
A Contacts Manager application built on Angular 1.5 components, ui-router 1.0.0, Firebase.
Stars: ✭ 583 (+0%)
Mutual labels:  firebase
Vuexfire
Check
Stars: ✭ 574 (-1.54%)
Mutual labels:  firebase
Startup Os
Working examples of Google's Open Source stack and deployment to the cloud.
Stars: ✭ 564 (-3.26%)
Mutual labels:  firebase

ReduxVCR

A Redux devtool that lets you replay user sessions in real-time.

build status npm version npm monthly downloads

NOTE: This project is in early alpha. I've been using it in production in Key&Pad, but it has not been tested in larger/more complex applications.


Demo

You can see a live demo of real, in-production data at Key&Pad. Click on the VCR screen, select a cassette, and hear some dynamically-recreated music!

Blog Post

Check out the Medium post that details how and why this is being built.

Features

Insights

By re-watching a recorded session in real-time, you learn tons about how users use your application. Great for gauging UX, spotting bugs, etc.

Developer Experience

Features quality-of-life configuration:

  • Max delay between actions: Set a maximum wait time, to remove long gaps when users go idle.
  • Speed controls: play your cassettes in 0.5x or 2x speed.
  • More to come!

Serverless Security

The goal for ReduxVCR was to not need any server-side integration for developers creating front-end-only applications, while still being secure. Using Firebase, we're able to automatically authenticate all users, assuring that they can only edit their own slice of the state, and not read from or write to any other users' sessions.

For replaying the sessions, GitHub OAuth is used. You set which GitHub email you want to have read access within Firebase.

Modular Architecture

Rather than create one monolithic package, ReduxVCR consists of 4 individual packages:

  • Capture The capture layer is responsible for watching the stream of actions, selecting the ones that you'd like to record, and augmenting them with timestamps and metadata.

  • Persist The persist layer receives the data from Capture and persists it to Firebase. It handles all anonymous authentication concerns.

  • Retrieve The retrieve layer, meant to be used in development only, fetches the data from Firebase, and handles all admin authentication concerns.

  • Replay Finally, the replay layer is your interface to navigating and watching the recorded cassettes.

An effort has been made to ensure that packages can be swapped out. For example, you may wish to use custom database storage, in which case you'd build your own Persist and Retrieve modules. You may wish to have a different UX, in which case you'd build your own Replay module.

Straightforward Integration

A fair amount of work has been put into making the integration as simple as possible. For simple apps, the process shouldn't take more than a couple of minutes.


Getting Started

There are two parts to integrating Redux VCR into your application.

Troubleshooting

As common issues arise, their solutions will be shared here.

Roadmap

There are a few pretty blatant things missing from ReduxVCR.

  • Event Recording

    Right now, we're only recording the series of Redux actions. Ideally, we'd want our scroll position to mirror the user's, and it would be nice to know where their cursor is.

  • Scrubbing and Navigation

    When replaying cassettes, there is currently no way to "jump" to a specific portion in the cassette, to see how far along you are in the sequence, etc. A media-player-style scrubber would help quickly analyze and replay crucial moments in a cassette.

  • Support for common tools and environments

    Immutable.js and React Native are both currently untested/unsupported.

I have limited free time at the moment, so if anybody would like to contribute to this project, these would be great places to start :)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].