1. Instrumenting browsers to collect performance and error data provides visibility into how applications are used and any issues users encounter.
2. Analyzing the collected data can reveal problems like third party module failures, loading errors, and undefined variables. It also shows how users interact with features.
3. To better understand issues, developers should simulate failure modes during testing and collect additional metadata on users and deployments. Overall, browser monitoring is critical for web applications but must be implemented in a way teams will adopt.
11. How much javascript must I sit through
A saga in three parts
I. How we instrument Honeycomb
II. Making sense of your weird browser data
III. How this changes everything writing web apps
14. The MVP browser
monitoring toolkit
● Performance
● RAIL model
● Loading metrics: page load time,
resource load time, first paint.
● Errors
● An event per client-side javascript
error, with metadata like user id,
browser version, current page.
16. The MVP browser
monitoring toolkit
● Performance
● RAIL model
● Loading metrics: page load time,
resource load time, first paint.
● Errors
● An event per client-side javascript
error, with metadata like user id,
browser version, current page.
17. The MVP browser
monitoring tools
● Performance
● Honeycomb
● We also use SignalFx
● Other TSDBs work great too
● Errors
● Sentry
● Bugsnag
● TrackJS, Rollbar, & many more
18. The MVP browser
monitoring code
● Performance
● Write a custom thing
● But actually, use Boomerang
● Errors
● Sentry’s Raven JS is o/s
● So is Bugsnag’s
● … or write a custom thing (no)
19. Browser instrumentation is different
What questions are we trying to answer?
● Regressions (performance, errors)
● Product usage (analytics)
● Device capabilities (???)
20. Browser instrumentation is different
What are we trying to find?
● The Ghost of Code Past
● The Ghost of Code Present
● The Ghost of Code Future (!!!)
24. Frontend errors: the easy ones
• Exception Class:
• Message:
• Stacktrace[0]:
• Timing:
• Trend:
ReferenceError
this.drawGraph is undefined
/static/components/timeline.jsx:19
Within 2s of page load
Constant low volume
25. Frontend errors: the less easy ones
• Exception Class:
• Message:
• Stacktrace[0]:
• Timing:
• Trend:
NS_ERROR_XPC_SECURITY_MANAGER_VETO
NS_ERROR_XPC_SECURITY_MANAGER_VETO:
JS frame :: <TOP_LEVEL>
Within 2s of page load
happened a handful of times
but to only 1 user
35. 3. It’s not showing up
• Exception Class:
• Message:
• Stacktrace[0]:
• Timing:
• Trend:
ReferenceError
Uncaught ReferenceError: App is not defined
/static/main.js:1 - anonymous
Within 5s of page load
Sporadic, many users
44. Our browser
monitoring toolkit
● Performance
● Honeycomb
● We also use SignalFx
● Other TSDBs work great too
● Errors
● Sentry
● Bugsnag
● TrackJS, Rollbar, & many more
45. Our browser
monitoring toolkit
● Metrics
● Server utilization stats
● Timings and counts
● Events
● Significant actions
● Have associated metadata
● Also timings and counts
46. Our browser
monitoring toolkit
● Metrics
● Server utilization stats
● Timings and counts
● Events
● Significant actions
● Have associated metadata
● Also timings and counts
50. • Installed fonts
• Screen dimensions & color depth
• Browser language
• Online/offline status
• Emoji support
• Page visibility (backgrounded?)
• Connection type
• Support for emerging browser APIs
• Geographical location (using a library)
Available via the browser
(now or soon)
51. • A/B test groups
• JS asset version
• CSS asset version
• Canary deploy?
• User ID / User Name
• Team ID / Team Name
• Plan type
• … more domain things relevant to your app
…plus data you provide