-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Closed
Closed
Copy link
Labels
Awaiting PaymentAuto-added when associated PR is deployed to productionAuto-added when associated PR is deployed to productionDailyKSv2KSv2InternalRequires API changes or must be handled by Expensify staffRequires API changes or must be handled by Expensify staffNewFeatureSomething to build that is a new item.Something to build that is a new item.Task
Description
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
Troubleshootingsection to theAvatar > Aboutpage, just aboveReport a bug- This will always be available, both on staging and production builds
- Move the following
Test preferencessettings 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 consolewhich 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
Savebutton that just copies all available logs into a text file that is saved on the device - Add a
Sharebutton that brings up aSearchselector 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 #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
Metadata
Metadata
Labels
Awaiting PaymentAuto-added when associated PR is deployed to productionAuto-added when associated PR is deployed to productionDailyKSv2KSv2InternalRequires API changes or must be handled by Expensify staffRequires API changes or must be handled by Expensify staffNewFeatureSomething to build that is a new item.Something to build that is a new item.Task