- Test on as many real devices as possible. Testing in emulators is unacceptable.
- Keep URIs short. It is difficult to type long URIs on a phone's 12-key keypad.
- Make URI deliver similar content regardless of the browser.
- Minimize the amount of navigation links at the top of a page. Use bottom navigation links instead. Screens are small, so don't waste it with navigation links instead of content. Data connections are slow, so don't make people wait for their content.
- Try to keep content reachable within four request/response transactions.
- If a link navigates to content that is large, let the user know before he clicks. Data connections are slow and screens are small--maybe the user doesn't want that content right now.
- Don't auto-refresh a page unless the user can toggle it off.
- Use server redirects instead of markup redirects. Data connections are slow, so don't make the mobile browser download a page only to be redirected to another page.
- Keep total page size <= 10 to 20 kbytes for the Default Delivery Context.
- It's OK for a page to scrool vertically or horizontally, but not both. The screen is small, and it's easy for the user to become disoriented with too much scrolling.
- Use care with colors; devices often have crappy displays and it's difficult to distinguish colors.
- Don't use frames. They might not be supported, or the might not be rendered where you expect them.
- Avoid tables, and especially tables with fixed sizes that won't render well on different screen sizes.
- Use ALT tags for images. Make pages usable in no-image mode.
- Use style sheets for presentation control.
- Don't send content the device can't render.
- Don't rely on cookies.
- Allow caching where possible.
- Avoid text entry. Prefer multiple choice selection.
W3C Mobile Web Best Practices
W3C recently published Mobile Web Best Practices, a set of guidelines for mobile web developers. Many of these guidelines are also applicable to downloadable mobile applications. Here are some key notes: