How JavaScript works: the rendering engine and tips to optimize its performance
blog.sessionstack.com
blog.sessionstack.com
How well does the service work, and is there a noticeable performance impact for the software to record on mid-range mobile devices?
It looks really interesting and would probably be really helpful, but I can't include anything else in our applications that will further tax our already struggling lower-end devices with more code that needs to run and more data that needs to be transmitted.
- We use worker threads for data encoding and network I/O
- We use the MutationObserver API for capturing diffs of the DOM
- We pull static resources directly from an application's servers (vs uploading from the client)
- Loading method shims first (and later the rest of our SDK asynchronously) to reduce initial loading time
- Batching requests and waiting for network downtime to send data
- We use Protobufs as a wire format for reducing bandwidth
I'm sure Session Stack employs some similar techniques- would be curious to hear about methods they're using as well.
I've poked around in the console a fair amount but would be really interested in two things you listed above:
- "We use the MutationObserver API for capturing diffs of the DOM"
- "We use Protobufs as a wire format for reducing bandwidth"
I know you all write pretty awesome JS articles on a regular basis but I have so many questions about how LR works! Spill the beans but not the secret sauce!
Is this open sourced? I would like to understand how this works? (how do you capture network i/o?)
If you have any feedback or need assistance, you can always reach me at alex@sessionstack.com or ping us in our live chat inside the product :)