Skip to content

Commit

Permalink
New guide: Improving User Experience
Browse files Browse the repository at this point in the history
  • Loading branch information
frantic committed Jul 15, 2017
1 parent 50f200b commit 8be6910
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/Accessibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Accessibility
layout: docs
category: Guides
permalink: docs/accessibility.html
next: timers
next: improvingux
previous: animations
---

Expand Down
41 changes: 41 additions & 0 deletions docs/ImprovingUserExperience.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
id: improvingux
title: Improving User Experience
layout: docs
category: Guides
permalink: docs/improvingux.html
next: timers
previous: accessibility
---

Building apps for mobile platforms is nuanced.

> We are improving and adding more details to this page. If you'd like to help out, chime in at [react-native/14979](https://github.com/facebook/react-native/issues/14979).
## Make tappable areas larger

On mobile phone it's hard to be very precise when pressing buttons. Make sure all interactive elements are 44x44 or larger. One way to do this is to leave enough space for the element, `padding`, `minWidth` and `minHeight` style values can be useful for that. Alternatively, you can use [`hitSlop` prop](docs/touchablewithoutfeedback.html#hitslop) to increase interactive area without affecting the layout. Here's a demo:

<video src="img/hitslop.mp4" autoplay loop width="320" height="120"></video>

[Try it on your phone](https://snack.expo.io/rJPwCt4HZ)

## Configure text inputs

Entering text on touch phone is a challange - small screen, software keyboard. But based on what kind of data you need, you can make it easier by properly configuring the text inputs:

* Focus the first field automatically
* Use placeholder text as an example of expected data format
* Enable or disable autocapitalization and autocorrect
* Choose keyboard type (e.g. email, numeric)
* Make sure the return button focuses the next field or submits the form

Check out [`TextInput` docs](docs/textinput.html) for more configuration options.

<video src="img/textinput.mp4" autoplay loop width="320" height="430"></video>

[Try it on your phone](https://snack.expo.io/H1iGt2vSW)

# Learn more

[Material Design](https://material.io/) and [Human Interface Guidelines](https://developer.apple.com/ios/human-interface-guidelines/overview/design-principles/) are great resources for learning more about designing for mobile platforms.
2 changes: 1 addition & 1 deletion docs/Timers.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ layout: docs
category: Guides
permalink: docs/timers.html
next: debugging
previous: accessibility
previous: improvingux
---

Timers are an important part of an application and React Native implements the [browser timers](https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Timers).
Expand Down
Binary file added website/src/react-native/img/hitslop.mp4
Binary file not shown.
Binary file added website/src/react-native/img/textinput.mp4
Binary file not shown.

0 comments on commit 8be6910

Please sign in to comment.