App icon indicating copy to clipboard operation
App copied to clipboard

[$500] HIGH: Add `Avatar > About > Troubleshooting` section

Open quinthar opened this issue 6 months ago • 92 comments

Strategy: A billion users means a billion problems. To diagnose and solve them at scale, we capture client-side logs and upload centrally.

Problem: Some problems can't be diagnosed cleanly after the fact from the logs, for a few reasons:

  • External contributors don't have access to production logs.
  • Internal engineers do have production access, but they're often cumbersome to access.
  • The logs are often ambiguous, such as if you have multiple devices connected and tabs open at the same time -- reverse engineering what happened for a particular client is confusing and time consuming.
  • Observing logs in realtime is cumbersome or sometimes impossible, which slows down and complicates testing.
  • Even if you have all the access you need, when talking with a user sometimes it's difficult to find the logs specific to them.

Solution: Let's expand our ability to remotely diagnose production devices with better dev tools built into the app itself. Specifically:

  • Add a Troubleshooting section to the Avatar > About page, just above Report a bug
    • This will always be available, both on staging and production builds
  • Move the following Test preferences settings into this new menu:
    • Use staging server
    • Force offline
    • Simulate failing network requests
    • Authentication status: Invalidate
    • Device credentials: Destroy
  • Add Reset and refresh, which wipes Onyx clean except for the minimum needed to call OpenApp (so you don't need to reauthenticate)
  • Add View console which opens a simple console:
    • This would first open up and initialize with all locally stored logs, so you can scroll back and see what happened
    • It would also append new logs in realtime
    • There would also be a Save button that just copies all available logs into a text file that is saved on the device
    • Add a Share button that brings up a Search selector and just posts the logs into the selected room (and then leaves the user navigated there, so they can talk about them). I'm imagining this would be useful for chatting with a real world user and asking them to do something and send you the logs.
    • At the bottom is a command line that works similar to the Chrome console, where you can execute arbitrary JavaScript, with the results output to the console

This is blocking https://github.com/Expensify/App/issues/33040.

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~01c2a08b8b8ae90e21
  • Upwork Job ID: 1744202378047897600
  • Last Price Increase: 2024-01-15
  • Automatic offers:
    • fedirjh | Reviewer | 28115102

quinthar avatar Jan 08 '24 03:01 quinthar