Open kirillzyusko opened 9 months ago
Triggered auto assignment to @JmillsExpensify (Bug
), see https://stackoverflow.com/c/expensify/questions/14418 for more details.
this is kind of halfway between a new feature and a bug, but I'm going to treat it as a bug for the sake of accounting (no CAP SW project it fits with)
Marking this as Internal
even though it will be almost 100% external. Doing so because I don't want to create an external Upwork job, but I do want a C+ to help review all the PR(s) for this. I think it will be a series of PRs, so I think we should compensate for the review of each.
Job added to Upwork: https://www.upwork.com/jobs/~01360efa253e7a2c60
Triggered auto assignment to Contributor Plus for review of internal employee PR - @cubuspl42 (Internal
)
welcome @cubuspl42! I encourage you to familiarize yourself with the context on this issue and decide whether you want to take it on or pass it off. Excited to have you help if you're interested!
moving this to weekly
@roryabraham I was already assigned https://github.com/Expensify/App/pull/16356.
Fair enough. This is a broader migration than just that issue/PR though, basically we'll be refactoring keyboard handling across the whole app.
probably wouldn't hurt to get more than 1 C+ involved here either.
@roryabraham Can you assign me here also?
Sounds interesting; I can get on board. This will be implemented by an expert agency, and C+ reviewed, right?
@cubuspl42 Please have a look at the https://github.com/Expensify/App/pull/16356.
@shubham1206agra I took a look. It's a PR with a 1-year-long post history. Let me know what exact aspect of that PR you'dl like me to focus on!
Take a look at the top description and go through code once.
This will be implemented by an expert agency, and C+ reviewed, right?
correct. 2 C+ in this case
@kirillzyusko looks like we need to resolve conflicts in https://github.com/Expensify/App/pull/16356, then @shubham1206agra and @cubuspl42 can begin review whenever they're ready
@JmillsExpensify @cubuspl42 @kirillzyusko @roryabraham @shubham1206agra this issue was created 2 weeks ago. Are we close to a solution? Let's make sure we're treating this as a top priority. Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!
Also, this is not a bug
looks like we need to resolve conflicts in https://github.com/Expensify/App/pull/16356, then @shubham1206agra and @cubuspl42 can begin review whenever they're ready
@roryabraham done. I'll merge main branch every day to keep the Pr without conflicts π
Still working on this one.
Yes, we found some bugs but they are already fixed. I'll give it another testing round today, I also bumped @shubham1206agra so they give it another pair of eyes.
Same as above.
We have an OOO situation in SWM, the author will likely be back soon
agree, we'll pick this back up when @kirillzyusko is back from OOO. He works for Margelo, btw π
Current assignee @shubham1206agra is eligible for the Internal assigner, not assigning anyone new.
@shubham1206agra reassigning, please take over as C+. If you don't have bandwidth, unassign yourself. Thanks
Triggered auto assignment to Contributor Plus for review of internal employee PR - @rojiphil (Internal
)
@rojiphil reassigning, please take over as C+. If you don't have bandwidth, unassign yourself. Thanks
@kirillzyusko any thoughts on when you'll be prioritizing this?
@roryabraham I think the current plan is to finish native-stack
integration and after that I'll switch back to this task π
In a meantime @perunt is also making some progress on integrating react-native-keyboard-controller
into Expensify codebase (recently I added a cursor position tracking with coordinates and it will give us an ability to avoid RN core patching and push a task with emoji autosuggestion forward).
Are we still working on finishing native-stack
ahead of this task, or is work resuming elsewhere via another issue?
@JmillsExpensify I'm working on this issue (and I updated issue description to mention that one PR link has been changed).
This issue has not been updated in over 15 days. @JmillsExpensify, @rojiphil, @kirillzyusko, @roryabraham, @shubham1206agra eroding to Monthly issue.
P.S. Is everyone reading this sure this is really a near-term priority? Be brave: if you disagree, go ahead and close it out. If someone disagrees, they'll reopen it, and if they don't: one less thing to do!
@JmillsExpensify, @rojiphil, @kirillzyusko, @roryabraham, @shubham1206agra, this Monthly task hasn't been acted upon in 6 weeks; closing.
If you disagree, feel encouraged to reopen it -- but pick your least important issue to close instead.
@kirillzyusko what's the plan here? Should we keep this open or revisit later?.
@roryabraham we are actively working on that!
@perunt already started to use the functionality of this library in https://github.com/Expensify/App/pull/42630 and now he is actively working on https://github.com/Expensify/App/pull/42143
Meanwhile I'm working on https://github.com/Expensify/App/pull/47096 (this PR is kind of a preparation before https://github.com/Expensify/App/pull/42143)
When we start to use more functionality of react-native-keyboard-controller
we can try to spread the usage of this library across the codebase and start to use it on Android etc.
So I'd like to keep it open since the progress is moving!
Looks like https://github.com/Expensify/App/pull/42630 and https://github.com/Expensify/App/pull/47096 were merged, and https://github.com/Expensify/App/pull/42143 is still WIP
It's in the review phase. Once testers confirm there's no jittering on their devices, we'll be good to go. I asked about such testing because I was only able to test it on a few devices. On my oldest, least reliable device (an iPhone 7 with significant throttling and overheating issues), it shows jittering. However, the rest of the devices, such as the iPhone XR and 15, work well. So, the jittering might not be representative of typical user experiences
Need someone to hand this off to. @luacmartins not sure who's best, but going to reassign to you. Maybe you can handle or pass off to another Expensify engineer
@perunt are we still waiting for a review on https://github.com/Expensify/App/pull/42143?
@luacmartins yes, review + we need to fix issues that were found π
Still working on the PR.
Problem statement
In Expensify app keyboard handling is not consistent across iOS/Android platforms:
adjustResize
(it works great, but lacks of synchronous animations - which means the screen will be instantly resized, and there will be no animation at all. For chat-like apps this is quite important to have for good UX)KeyboardAvoidingView
, subscriptions to keyboard events) since iOS keyboard handling is done in JS code, on Android we use native keyboard avoidance provided by OS and we are writing cross-platform code -> we have a lot of Platform dependent code (like enablingKeyboardAvoidingView
only on iOS), which eventually leads to UI inconsistencyDid
events)With
react-native-keyboard-controller
:Will
events which were not available prior to RN API)multiline
TextInput can not grow)Migration plan
I see next potential way for improving keyboard handling (aka migration plan):
implement inline auto suggestions (https://github.com/Expensify/App/pull/42630)
start to use it on a chat screen on iOS only (https://github.com/Expensify/App/pull/42143)
start to use this library on chat screen on Android (this library also will give a smooth transition on chat screen when keyboard appears/disappears, so UI will look better & more pleasant for end user)
search screen:
KeyboardStickyFooter
component)See it in action
See it in action
on Chat screen we can add "interactive keyboard dismissal" (when keyboard can be closed via gesture)
@roryabraham wanted to replace
useKeyboardContext
with this new libraryIn Profile->Address screen: auto scroll is waiting for
keyboardDidShow
event and we have kind of two-fold animation -> potentially can be fixed by KeyboardAwareScrollView with fully synchronized animationsAdditional resources
Upwork Automation - Do Not Edit
Issue Owner
Current Issue Owner: @kirillzyusko