Hacker News new | ask | show | jobs
by benthehenten 3025 days ago
I'm not sure about the implementation in Session Stack, but I work at LogRocket (https://logrocket.com) where we're solving a similar problem. We use a few methods to ensure that we have a minimal overhead on performance.

- 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.

2 comments

> - We use worker threads for data encoding and network I/O

Is this open sourced? I would like to understand how this works? (how do you capture network i/o?)

As the first LR evangelist (there are many now) at my workplace I am always curious how you guys do what you do. Looks like pure magic.

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!