-
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
LOW: Implement filtering for search pages. #37619
Comments
Auto-assigning issues to engineers is no longer supported. If you think this issue should receive engineering attention, please raise it in #whatsnext. |
Triggered auto assignment to @stephanieelliott ( |
Making @TMisiukiewicz the issue owner here since for now we're just awaiting a PR |
Already incorporated the algorithm into the codebase and created an util responsible for filtering, now working on implementing it into the first search page |
I just opened a draft PR with an example implementation in Search Page, I would be more than happy to get some initial feedback! @roryabraham how should we approach implementing it in other search pages? Should we implement filtering in all required pages with this single PR or should we get this one merged first and then implement each one separately? |
let's definitely break it up into a series of smaller PRs if there's a straightforward way to do that. It might feel like more work but things always tend to go smoother this way 🙂 |
@TMisiukiewicz Could you help to make a video about this problem on staging? I also see this problem
But It seems the RCA is from Screen.Recording.2024-03-13.at.16.51.08.movPlease correct me if I missed anything |
hi @DylanDylann, the server search is not related to the changes made in this PR. This PR improves the performance of the local search by replacing options generation with filtering. On staging, you can enable showing verbose logs in the console and look for the messages: Staging: Screen.Recording.2024-03-13.at.11.42.32.movAdhoc: Screen.Recording.2024-03-13.at.11.45.05.movAs you can see in the Adhoc build, the |
@TMisiukiewicz Thanks. I see that in your PR. |
PR is moving along, seems like we are ready to test 🚀 |
PR is waiting on your review @roryabraham! |
Sorry for the delay. I'll try to review tomorrow. It's a large PR so something I need to carve out a bit more time for |
PR is being actively reviewed |
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.1-19 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue: If no regressions arise, payment will be issued on 2024-07-02. 🎊 For reference, here are some details about the assignees on this issue:
|
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.3-7 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue: If no regressions arise, payment will be issued on 2024-07-10. 🎊 For reference, here are some details about the assignees on this issue:
|
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.5-13 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue: If no regressions arise, payment will be issued on 2024-07-17. 🎊 For reference, here are some details about the assignees on this issue:
|
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.6-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue: If no regressions arise, payment will be issued on 2024-07-22. 🎊 For reference, here are some details about the assignees on this issue:
|
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
|
Hi @stephanieelliott According to the payment summary, the payment for me should be $500, but only $250 was paid out (via this offer), can you help re-check on this? |
Oops! So weird, the job was $500 but the milestone was just $250. Sorry about that! Sent another $250 as a bonus on the same job, so we should be square now! |
@stephanieelliott Thanks so much for looking into this 🥇 |
Problem
Based on our measurements in high-traffic accounts, the search page takes an average of 4100ms to re-render on every keystroke. This is a problem because the user will notice a significant lag between changing their search term and the results list updating.
The root cause of this problem is
getSearchText
, which is called for every keystroke and is inefficient because it reconstructs all the options in the results list using createOption over and over.Solution
Let's speed up
getSearchText
by refactoring it such that, instead of re-generating all the result options every time the search terms change, we just generate the options once and filter them based on the current search term.To achieve this, we recommend using a rank-value sorting, where a higher number means it will appear higher in the list:
Note that this will maintain the current search result ordering, just implement it in a different way. By making this change, we can improve the following metrics:
open_search
→ Before: ~5900ms → After: ~4900ms (~1000ms improvement)load_search_options
→ Before: ~4100ms → After: ~3200ms (~900ms improvement)We can apply this technique everywhere in the app where we use a search bar to filter option results.
Issue Owner
Current Issue Owner: @stephanieelliottThe text was updated successfully, but these errors were encountered: