Screens, versions and capability.
WHAT VARIES
Screen size and density Aspect ratio, including cut-outs and rounded corners Processor and memory Operating system version Available sensors and hardware System font size and accessibility settings
WHAT TO DESIGN LAYOUTS WITH
Constraints and relative sizing, never fixed positions.
WHY
Fixed layouts break on the next screen size.
WHAT TO TEST AT
The smallest supported screen, and the largest.
WHAT TO SUPPORT FOR VERSIONS
A range covering the substantial majority of your actual users.
HOW TO DECIDE
Your own analytics, once you have them; platform distribution figures before that.
WHAT SUPPORTING OLDER VERSIONS COSTS
Conditional code, and features unavailable.
WHAT DROPPING THEM COSTS
Users, which locally may be a substantial proportion.
WHAT TO RESPECT
The user's chosen font size.
WHY
Ignoring it makes your application unusable for people who need larger text.
WHAT TO CHECK
That layouts still work at the largest font setting.
WHAT TO HANDLE
Hardware that is absent, rather than assuming it exists.