Optional fields are disruptive

Showing optional fields by default disrupts the checkout experience:

 

Default visible fields

Typically, those fields are:

 

Hide optional fields

Hide them by default, and add links to make them visible:

 

Auto-detect

Auto-detect the city and/or region based on the postal code. (see best practice #123 for my main recommendation in regards to the address fields)

EXAMPLES