Another potential issue (this happened to me): even if you make all of the necessary code changes (cf. http://moduscreate.com/automated-ip-configuration-for-react-native-development/ for a good walkthrough), start the server, etc., it may still fail because of App Transport Security. You'll need to add your IP address to the list of NSExceptionDomains in the app's Info.plist file or, alternatively, disable ATS completely (discouraged--read above article to understand why).
Example entry:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>YOUR-IP-HERE</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPSLoads</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>1.0</string>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
localhost. But since this is running on a different device, then 'localhost` would not be the place to look for the server. I seelocalhosthard-coded in thepackager.jsscript.