-
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
Migrate LHNOptionsList to Flashlist #31052
Migrate LHNOptionsList to Flashlist #31052
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left comments.
@@ -19,11 +20,10 @@ import OptionRowLHNData from './OptionRowLHNData'; | |||
const propTypes = { | |||
/** Wrapper style for the section list */ | |||
// eslint-disable-next-line react/forbid-prop-types | |||
style: PropTypes.arrayOf(PropTypes.object), | |||
style: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]), | |
style: stylePropTypes, |
|
||
/** Extra styles for the section list container */ | ||
// eslint-disable-next-line react/forbid-prop-types | ||
contentContainerStyles: PropTypes.arrayOf(PropTypes.object).isRequired, | ||
contentContainerStyles: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]).isRequired, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
contentContainerStyles: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]).isRequired, | |
contentContainerStyles: stylePropTypes, |
|
||
/** Extra styles for the section list container */ | ||
// eslint-disable-next-line react/forbid-prop-types | ||
contentContainerStyles: PropTypes.arrayOf(PropTypes.object).isRequired, | ||
contentContainerStyles: stylePropTypes, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
contentContainerStyles: stylePropTypes, | |
contentContainerStyles: stylePropTypes.isRequired, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, one minor comment.
d4b2b23
to
2a51e8b
Compare
2a51e8b
to
4d228b2
Compare
Investigating failed tests, once they are fixed it's ready for review. I will be off Thusday and Friday, In case I couldn't fix it today, could you plase take a look on it @adhorodyski ? 🙏 |
on it! |
d24eb58
to
c7257b3
Compare
Reduced the amount of failing tests from ~30 to 11 - all in |
@mountiny unfortunately we can't yet undraft this PR - there are still Reassure tests to be fixed (and they fail locally). Hopefully this can be resolved tomorrow. Unit tests are now passing 🙂 |
@ntdiary could you please start on testing this PR? In the meantime Callstack engineers will look into the failing reassure tests. Thank you! |
@mountiny, my plate is full at the moment, will request another c+. : ) |
Tests are fixed, but we are experiencing increased render count in reassure, for now I'm not sure if it's the way FlashList works - gonna investigate it tomorrow |
Investigated the increased amount of rerenders - according to the FlashList docs:
I think that's the main reason behind additional renders indicated by Reassure. With this in mind, would it be possible to merge that PR with Reassure GH Action failing? It should set a new baseline on |
cafc4c5
to
3c428c2
Compare
@@ -1367,7 +1367,6 @@ const styles = (theme: ThemeColors) => | |||
}, | |||
|
|||
sidebarListContainer: { | |||
scrollbarWidth: 'none', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rest looks good! |
@rushatgabhane thank you for your review, I addressed your comments |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Merging despite 2 extra re-renders in reassure. |
@roryabraham looks like this was merged without a test passing. Please add a note explaining why this was done and remove the |
Not an emergency, just establishing a new baseline for renders with a different component |
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
Generating an AdHoc build for testing as I'm wondering if this PR introduced this regression. ... |
🧪🧪 Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! 🧪🧪 |
Yeah, OptionsListSkeletonView modifications seems the likely cause of this regression. This ^ iOS build contains the regression @TMisiukiewicz are you able to look at this today? If not I can easily revert and we can attempt another PR this week. |
This maybe caused #31581 as well which was demoted to NAB as it's style issue |
@Julesssss @situchan taking a look on both issues now |
Okay, I'm pretty sure now that this PR introduced the issue as the parent commit of your first change doesn't contain the bug: RPReplay_Final1701186535.MP4 |
🚀 Deployed to production by https://github.com/luacmartins in version: 1.4.1-13 🚀
|
@roryabraham can I get a payment summary on this PR? @rushatgabhane is requesting payment. |
Yep, this is just a standard C+ PR review, but it caused a regression. So $250 to @rushatgabhane and that's all here. All other involved parties will invoice separately |
Thanks! $250 payment approved for @rushatgabhane based on comment above. |
Details
Fixed Issues
$ #30910
PROPOSAL:
Tests
Offline tests
QA Steps
PR Author Checklist
### Fixed Issues
section aboveTests
sectionOffline steps
sectionQA steps
sectiontoggleReport
and notonIconClick
)myBool && <MyComponent />
.src/languages/*
files and using the translation methodWaiting for Copy
label for a copy review on the original GH to get the correct copy.STYLE.md
) were followedAvatar
, I verified the components usingAvatar
are working as expected)/** comment above it */
this
are necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);
ifthis.submit
is never passed to a component event handler likeonClick
)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)
)Avatar
is modified, I verified thatAvatar
is working as expected in all cases)ScrollView
component to make it scrollable when more elements are added to the page.main
branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTest
steps.Screenshots/Videos
Android: Native
ANDROID.mov
Android: mWeb Chrome
ANDROID_WEB.mov
iOS: Native
IOS.mp4
iOS: mWeb Safari
IOS_WEB.mp4
MacOS: Chrome / Safari
WEB.mov
MacOS: Desktop
DESKTOP.mov