-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[$500] Workspace - Endless skeleton loader on the member page if you switch to it multiple times #40595
Comments
Triggered auto assignment to @puneetlath ( |
👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
|
@puneetlath FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors |
We think that this bug might be related to #wave-collect - Release 1 |
Job added to Upwork: https://www.upwork.com/jobs/~01e843a4238c37c0d9 |
Triggered auto assignment to Contributor-plus team member for initial proposal review - @hungvu193 ( |
Upon thorough analysis, it's evident that the endless skeleton loader arises from delays in data fetching and rendering when switching to the member page multiple times. To address this issue, I propose the following technical changes:
I hope this solution will help you with this issue. Cooper Brown from Upwork. |
📣 @mericanAncer127! 📣
|
Issue Analysis and Proposal: After reviewing the reported problem and examining the behavior described, it appears that the infinite scroll feature may be closely related to the issue at hand. The endless skeleton loader observed on the member page could potentially be triggered or exacerbated by the continuous loading mechanism implemented through infinite scroll. Understanding the Impact: Infinite scroll, while convenient for users in certain contexts, can sometimes lead to performance issues or unexpected behaviors, especially when dealing with complex data rendering and asynchronous loading processes. In this case, the endless skeleton loader suggests a failure in properly handling the continuous loading of member data. Proposal for Resolution: To address this issue effectively, I propose temporarily disabling the infinite scroll feature on the member page. By doing so, we can isolate the behavior and investigate any underlying causes more thoroughly. Additionally, this approach will allow us to assess the impact of infinite scroll on the reported problem and determine whether it is the primary contributing factor. Next Steps: Disable the infinite scroll feature on the member page. |
📣 @jitendraCredentia! 📣
|
This feels like a niche issue so if by the time other blockers are resolved, I would demote it |
I can't reproduce on latest main |
I will demote now and add Needs reproduction label |
This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989 |
I've asked applause to re-test. |
Upwork job price has been updated to $500 |
Bumping this to $500 to try and get a proposal. |
ProposalPlease re-state the problem that we are trying to solve in this issue.Endless skeleton loader appears on the member page if you switch to it multiple times What is the root cause of that problem?I believe that there's only 1 scenario that lead to this issue, which is somehow API calls proxyRequest.on('response', (proxyResponse) => {
if(requestPath?.includes('CreateWorkspace') || requestPath?.includes('OpenWorkspaceMembersPage')){
response.writeHead(200, {'content-type': 'application/json'});
response.write(Buffer.from(JSON.stringify({jsonCode: 429})))
response.end()
return;
}
response.writeHead(proxyResponse.statusCode ?? 0, proxyResponse.headers);
proxyResponse.pipe(response);
}); If the
causing the const isOfflineAndNoMemberDataAvailable = isEmptyObject(policy?.employeeList) && isOffline;
const isLoading = useMemo(
() => !isOfflineAndNoMemberDataAvailable && (!OptionsListUtils.isPersonalDetailsReady(personalDetails) || isEmptyObject(policy?.employeeList)),
[isOfflineAndNoMemberDataAvailable, personalDetails, policy?.employeeList],
); We can guarantee that <SelectionList
ref={selectionListRef}
canSelectMultiple={isPolicyAdmin}
sections={[{data, isDisabled: false}]}
ListItem={TableListItem}
disableKeyboardShortcuts={removeMembersConfirmModalVisible}
headerMessage={getHeaderMessage()}
headerContent={getHeaderContent()}
onSelectRow={openMemberDetails}
onCheckboxPress={(item) => toggleUser(item.accountID)}
onSelectAll={() => toggleAllUsers(data)}
onDismissError={dismissError}
showLoadingPlaceholder={isLoading}
showScrollIndicator
shouldPreventDefaultFocusOnSelectRow={!DeviceCapabilities.canUseTouchScreen()}
textInputRef={textInputRef}
customListHeader={getCustomListHeader()}
listHeaderWrapperStyle={[styles.ph9, styles.pv3, styles.pb5]}
/> You can see the video below to see the described behavior (until the web-9MB-5MB.mp4What changes do you think we should make in order to solve the problem?First, there are no concrete evidence supporting my assumption about the failures of these 2 APIs in this bug (and the ReasoningWe'll need to take a look at the function isPersonalDetailsReady(personalDetails: OnyxEntry<PersonalDetailsList>): boolean {
const personalDetailsKeys = Object.keys(personalDetails ?? {});
return personalDetailsKeys.some((key) => personalDetails?.[key]?.accountID);
}
const isOfflineAndNoMemberDataAvailable = isEmptyObject(policy?.employeeList) && isOffline;
const isLoading = useMemo(
() => !isOfflineAndNoMemberDataAvailable && (!OptionsListUtils.isPersonalDetailsReady(personalDetails) || isEmptyObject(policy?.employeeList)),
[isOfflineAndNoMemberDataAvailable, personalDetails, policy?.employeeList],
); The definition of the Further investigation into the optimistic update of CreateWorkspace API call, and other related API calls like If the assumption is true, the BE should take a look into the root cause of API failures. And on FE's side, to avoid the infinite loader in case of API failure, we can update the
and since the workspace member list cannot be empty (at least the owner is in the member list), we can show the message
What alternative solutions did you explore? (Optional)N/A |
@dominictb Do you have any consistent steps to reproduce this issue? |
@hungvu193 Currently no, as mentioned, I could only simulate (but not reproduce) the issue based on my assumption. |
tbh, that's really hard to review it while we couldn't reproduce it but let me try to take another look today. |
Issue not reproducible during KI retests. (First week) |
@hungvu193 u got any chance to take a look at this? |
@hungvu193 the empty array value of ![]() However, if the OpenApp returns, the employeeList again cannot be empty, or at least it cannot be null unless the situation described in my proposal happens, thus my assumption is not totally inaccurate |
I think this is intentional. So I still don't agree with you at that point. |
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸 |
@hungvu193 to be honest, I don't think it should be intentional that way. The onyx updates coming from the Again, it still confirms that the |
Issue not reproducible during KI retests. (Second week) |
@puneetlath, @hungvu193 Huh... This is 4 days overdue. Who can take care of this? |
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸 |
@puneetlath, @hungvu193 6 days overdue. This is scarier than being forced to listen to Vogon poetry! |
Ok, based on the discussion I agree that we can close this out. Thanks everyone. |
If you haven’t already, check out our contributing guidelines for onboarding and email [email protected] to request to join our Slack channel!
Version Number: 1.4.63.7
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Issue reported by: Applause - Internal Team
Action Performed:
Expected Result:
Skeleton loader should only be visible for a very short time
Actual Result:
Endless skeleton loader appears on the member page if you switch to it multiple times
Workaround:
Unknown
Platforms:
Which of our officially supported platforms is this issue occurring on?
Screenshots/Videos
Add any screenshot/video evidence
Bug6455086_1713542431121.MMUC4948.mp4
View all open jobs on GitHub
Upwork Automation - Do Not Edit
The text was updated successfully, but these errors were encountered: