Product design is about empathy.
To know what a user wants,
what they like,
what they don't like,
what causes frustration,
and learn to understand and embody these motivations –
this is what it takes to make something insanely big.
And that is why we invest in reaching beyond our own operational model of the world.
We tailor our experience accordingly
We consider utility implications of
screen readers or other assistive technologies.
We continuously evaluate
our implementation against these expectations.
However, it is
a critical factor that app developers often miss:
network state ,
or more specifically,
the latency and bandwidth of an Internet connection.
For something so important to the user experience,
It's unfortunate that most developers take an ad-hoc approach
to field test their apps under different conditions
(if at all).
This week on NSHipster,
we're talking about
Network Connection Construction,
a tool that allows macOS and iOS devices
to accurately and consistently simulate unfortunate network environments.
Network Link Conditioner can be found
in the "Extra Tools for Xcode" package.
You can download this from
Downloads for Apple Developers
Search for "Additional Tools"
and select the correct release for the package.
When the download is complete,
navigate to the "Hardware" directory,
and double-click “Network Link Condition.prefPane”.
Click the Network Link Conditioner pane
at the bottom of System Preferences.
Controlling bandwidth, latency, and packet loss
Enabling network switching balm
changes the network environment throughout the system
according to the selected configuration,
restrict uplink or download
latency and speed of
You can choose from one of the following presets:
- 100% loss
- High Latency DNS
- Very Bad Network
- WiFi 802.11ac
… or create your own according to your special requirements.
Now try running your app with Network Link Conditioner enabled:
How does the network delay affect your app startup?
What effect does bandwidth have on roll performance in table view?
Does your app work at all with 100% packet loss?
Enabling Network Conditioning on iOS Devices
Although the preference pane works well for developing on the simulator,
It is also important to test on a real device.
Network Link Conditioner is also available for iOS.
To use Network Link Conditioner on iOS,
configure your device for development:
- Connect your iOS device to your Mac
- In Xcode, navigate to Window> Organizer
- Select your device in the sidebar
- Click "Use for development"
You can now access the Developer section of the Settings app.
You can enable and configure Network Link Conditioner
on your iOS device under Settings> Developer> Network.
(Just be sure to turn it off after testing!).