Skip to content
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

[Tracking] Migrate away from Touchables and create a standardized, accessible button library using Pressables #14589

Closed
18 of 20 tasks
mountiny opened this issue Jan 26, 2023 · 51 comments
Assignees
Labels
Engineering Planning Changes still in the thought process Weekly KSv2

Comments

@mountiny
Copy link
Contributor

mountiny commented Jan 26, 2023

Design doc link: here

Proposal:

Migrate away from Touchables and create a standardized, accessible button library using Pressables

Problem:

The next release of react-native-web will deprecate Touchable components – the same is likely to happen in a future release of react-native. We use Touchables extensively throughout the app. Meanwhile, we have a clear problem with a lack of accessibility.

Solution:

Let’s kill two birds with one stone by taking accessibility (and general UI/UX) into account as we do this migration, and create a standardized framework for Pressables across the app. This includes:

  • Migrating away from Touchables and standardizing on Pressable, everywhere in the app
  • Creating a standardized framework for all of our Pressable components that accounts for:
    • Visual accessibility (i.e: changes in style for hovered and pressed stated)
    • ScreenReader accessibility (i.e: tabindex, focus, etc…)
    • Custom cursor states (i.e: disabled pressables should have the cursor: not-allowed style)
    • Cross-platform compatibility, including iPads with keyboards and touch-screen laptops
    • Haptic feedback (with a framework to standardize various forms of haptic feedback)
    • Intuitive gesture handling (i.e: if you tap on a button, but slide your finger away before lifting your finger, that’s an indication that the user probably meant to “cancel” their tap)
  • Ideally creating lint rules to automatically enforce that this framework is followed

Tasks

  • Post Proposal (full Problem/Solution statement) in #expensify-open-source
  • Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
  • Paste Proposal in the space above with a link to the Slack thread
  • Email [email protected] and paste in the Proposal
  • Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
  • Email [email protected] (continue the same email chain as before) with the link to your Design Doc
  • Host a pre-design meeting (example) in #expensify-open-source to discuss any necessary details in public before filling out the High-level of proposed solution section.
  • Fill out the High-level of proposed solution section
  • Email [email protected] again with links to the doc and pre-design conversation in Slack
  • Add the DesignDocReview label to get the High-level of proposed solution section reviewed
  • Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Host another pre-design meeting in #expensify-open-source to ask for engineering feedback on the technical solution.
  • Fill out the Detailed implementation of the solution and related sections.
  • Re-add the DesignDocReview label to this issue
  • Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Email [email protected] one last time to let them know the Design Doc is moving into the implementation phase
  • Implement the changes
  • Send out a follow up email to [email protected] once everything has been implemented and do a Project Wrap-Up retrospective that provides:
    • Summary of what we accomplished with this project
    • What went well?
    • What could we have done better?
    • What did we learn?

cc @roryabraham

@mountiny mountiny added Engineering Weekly KSv2 Planning Changes still in the thought process labels Jan 26, 2023
@melvin-bot melvin-bot bot locked and limited conversation to collaborators Jan 26, 2023
@Expensify Expensify unlocked this conversation Jan 26, 2023
@robertKozik
Copy link
Contributor

Let me look into it

@s77rt
Copy link
Contributor

s77rt commented Jan 26, 2023

Will this cover the use of TouchableWithoutFeedback
We have this issue here #14301 where we are trying to actually do the opposite, as it's a case where accessibility is something that we don't want and the button should not have any feedback.

@roryabraham
Copy link
Contributor

Created WIP design doc here

@melvin-bot melvin-bot bot removed the Overdue label Feb 6, 2023
@roryabraham roryabraham added the DesignDocReview Autoassigner for design doc reviews label Feb 8, 2023
This was referenced Feb 8, 2023
@MelvinBot
Copy link

👋 Hello Generalist Track Team - you have been assigned to review this High Level Design Doc. Please, treat this as a priority. Review this Stack Overflow for some tips on reviewing a design doc. Once you are done, simply press the Add "Reviewed Doc" comment button in the right hand side K2 pannel or follow these instructions.


@melvin-bot melvin-bot bot removed the DesignDocReview Autoassigner for design doc reviews label Feb 8, 2023
@roryabraham
Copy link
Contributor

High level ready for review. Also started a slack convo here

@trentpetty
Copy link

I have read and reviewed this Design Doc!

1 similar comment
@KirkBarrett
Copy link

I have read and reviewed this Design Doc!

@melvin-bot melvin-bot bot removed the Overdue label Jun 10, 2023
@melvin-bot melvin-bot bot added the Overdue label Jun 19, 2023
@roryabraham
Copy link
Contributor

According to https://github.com/orgs/Expensify/projects/29/views/1?layout=board, we have:

  • 35 issues done
  • 17 done & HOLD for payment
  • 18 in progress
  • 8 more TODO

@melvin-bot melvin-bot bot removed the Overdue label Jun 19, 2023
@melvin-bot melvin-bot bot added the Overdue label Jun 27, 2023
@roryabraham
Copy link
Contributor

We are very close to being done here, with I think only one remaining Pressable to migrate 🎉

Then we will merge https://github.com/Expensify/App/pull/20363/files to prevent any re-introduction of the old pressables.

@melvin-bot melvin-bot bot removed the Overdue label Jun 28, 2023
@melvin-bot melvin-bot bot added the Overdue label Jul 7, 2023
@roryabraham
Copy link
Contributor

#20363 is ongoing. All that's left here is that and also the documentation updates.

@melvin-bot melvin-bot bot removed the Overdue label Jul 7, 2023
@melvin-bot melvin-bot bot added the Overdue label Jul 17, 2023
@roryabraham
Copy link
Contributor

Only issue that's not HOLD for payment is #17005.

@melvin-bot melvin-bot bot removed the Overdue label Jul 18, 2023
@roryabraham
Copy link
Contributor

@melvin-bot melvin-bot bot added the Overdue label Jul 26, 2023
@roryabraham
Copy link
Contributor

Just waiting on the documentation PR here, then we're done

@melvin-bot melvin-bot bot removed the Overdue label Jul 26, 2023
@melvin-bot melvin-bot bot added the Overdue label Aug 4, 2023
@roryabraham
Copy link
Contributor

Still waiting on a documentation PR

@melvin-bot melvin-bot bot removed the Overdue label Aug 7, 2023
@melvin-bot melvin-bot bot added the Overdue label Aug 21, 2023
@roryabraham
Copy link
Contributor

@robertKozik is busy with C+ work, this isn't urgent but would be really nice to get finished soon. All that's left is documentation

@melvin-bot melvin-bot bot removed the Overdue label Aug 30, 2023
@melvin-bot melvin-bot bot added the Overdue label Sep 11, 2023
@roryabraham
Copy link
Contributor

DM'd @robertKozik to bump on this

@melvin-bot melvin-bot bot removed the Overdue label Sep 12, 2023
@melvin-bot melvin-bot bot added the Overdue label Sep 21, 2023
@roryabraham
Copy link
Contributor

Documentation added, sent project wrap up email, closing this out 🎉

@melvin-bot melvin-bot bot removed the Overdue label Sep 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Engineering Planning Changes still in the thought process Weekly KSv2
Projects
None yet
Development

No branches or pull requests