title: After upgrading to React Native 0.60.5 iOS release build gives "No bundle URL present" error
body: <p>I've just updated my project from React Native <code>0.59.9</code> to <code>0.60.5</code> with <code>react-native upgrade</code> and the update helper mentioned in the official blog post. Although my project is already a little "complex" because it's using some libraries etc. it seemed the update was successful.</p>
  
  <p>But unfortunately my app won't work with the <code>Test - Release</code> scheme anymore. On the debug scheme it works without any problems. The release also reaches the "Build succeeded" status, but as soon the app launches it's stuck because of the "No bundle URL present" error (see also my attached Xcode screenshot). </p>
  
  <p>I've tried everything I could find on the internet so far. Re-installing the NPM dependencies and Pods; removing the build folder, changing the <code>NSAppTransportSecurity</code> in the <code>Info.plist</code>, but 
  it won't resolve the issue.. The deployed app via TestFlight breaks as well on startup.</p>
  
  <h2>React Native info</h2>
  
  <pre><code>System:
      OS: macOS 10.14.6
      CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
      Memory: 430.30 MB / 8.00 GB
      Shell: 5.3 - /bin/zsh
    Binaries:
      Node: 10.11.0 - ~/.nvm/versions/node/v10.11.0/bin/node
      Yarn: 1.10.1 - /usr/local/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.11.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.4, macOS 10.14, tvOS 12.4, watchOS 5.3
      Android SDK:
        API Levels: 23, 26, 28, 29
        Build Tools: 28.0.3, 29.0.0
        System Images: android-29 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 3.4 AI-183.6156.11.34.5522156
      Xcode: 10.3/10G8 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.9.0 =&gt; 16.9.0
      react-native: 0.60.5 =&gt; 0.60.5
    npmGlobalPackages:
      react-native-cli: 2.0.1
  </code></pre>
  
  <h2>Steps To Reproduce</h2>
  
  <ol>
  <li>Update react-native from 0.59.9 to 0.60.5</li>
  <li>Remove <code>node_modules</code>, <code>ios/Pods</code>, <code>ios/build</code> and <code>Podfile.lock</code></li>
  <li>Re-install <code>node_modules</code> and run <code>pod install</code></li>
  <li>Open <code>Project.xcworkspace</code></li>
  <li>Select the scheme "Project - Test" go to "Edit scheme > Run > Build Configuration" and change the scheme to "Test - Release"</li>
  <li>Build the project (on device or simulator, doesn't matter)</li>
  <li>"Build succeeded" and app starts</li>
  <li>App is stuck on splash screen and Xcode shows the error as in the attached screenshot</li>
  </ol>
  
  <h2>Files / Code</h2>
  
  <p>Currently these are my <code>Info.plist</code>, <code>Podfile</code> and <code>package.json</code>: </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
  &lt;plist version="1.0"&gt;
  &lt;dict&gt;
      &lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
      &lt;string&gt;en&lt;/string&gt;
      &lt;key&gt;CFBundleDisplayName&lt;/key&gt;
      &lt;string&gt;Jobner&lt;/string&gt;
      &lt;key&gt;CFBundleExecutable&lt;/key&gt;
      &lt;string&gt;$(EXECUTABLE_NAME)&lt;/string&gt;
      &lt;key&gt;CFBundleIdentifier&lt;/key&gt;
      &lt;string&gt;$(PRODUCT_BUNDLE_IDENTIFIER)&lt;/string&gt;
      &lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
      &lt;string&gt;6.0&lt;/string&gt;
      &lt;key&gt;CFBundleName&lt;/key&gt;
      &lt;string&gt;$(PRODUCT_NAME)&lt;/string&gt;
      &lt;key&gt;CFBundlePackageType&lt;/key&gt;
      &lt;string&gt;APPL&lt;/string&gt;
      &lt;key&gt;CFBundleShortVersionString&lt;/key&gt;
      &lt;string&gt;1.0&lt;/string&gt;
      &lt;key&gt;CFBundleSignature&lt;/key&gt;
      &lt;string&gt;????&lt;/string&gt;
      &lt;key&gt;CFBundleVersion&lt;/key&gt;
      &lt;string&gt;2&lt;/string&gt;
      &lt;key&gt;LSRequiresIPhoneOS&lt;/key&gt;
      &lt;true/&gt;
      &lt;key&gt;NSAppTransportSecurity&lt;/key&gt;
      &lt;dict&gt;
          &lt;key&gt;NSAllowsArbitraryLoads&lt;/key&gt;
          &lt;true/&gt;
          &lt;key&gt;NSExceptionDomains&lt;/key&gt;
          &lt;dict&gt;
              &lt;key&gt;localhost&lt;/key&gt;
              &lt;dict&gt;
                  &lt;key&gt;NSExceptionAllowsInsecureHTTPLoads&lt;/key&gt;
                  &lt;true/&gt;
              &lt;/dict&gt;
          &lt;/dict&gt;
      &lt;/dict&gt;
      &lt;key&gt;UILaunchStoryboardName&lt;/key&gt;
      &lt;string&gt;LaunchScreen&lt;/string&gt;
      &lt;key&gt;UIRequiredDeviceCapabilities&lt;/key&gt;
      &lt;array&gt;
          &lt;string&gt;armv7&lt;/string&gt;
      &lt;/array&gt;
      &lt;key&gt;UISupportedInterfaceOrientations&lt;/key&gt;
      &lt;array&gt;
          &lt;string&gt;UIInterfaceOrientationPortrait&lt;/string&gt;
      &lt;/array&gt;
      &lt;key&gt;UIViewControllerBasedStatusBarAppearance&lt;/key&gt;
      &lt;false/&gt;
      &lt;key&gt;UIStatusBarHidden&lt;/key&gt;
      &lt;true/&gt;
      &lt;key&gt;ITSAppUsesNonExemptEncryption&lt;/key&gt;
      &lt;false/&gt;
      &lt;key&gt;NSLocationWhenInUseUsageDescription&lt;/key&gt;
      &lt;string&gt;Your location is required for searching jobs near you&lt;/string&gt;
      &lt;key&gt;NSLocationAlwaysUsageDescription&lt;/key&gt;
      &lt;string&gt;Your location is required for searching jobs near you&lt;/string&gt;
    &lt;key&gt;LSApplicationQueriesSchemes&lt;/key&gt;
    &lt;array&gt;
      &lt;string&gt;whatsapp&lt;/string&gt;
    &lt;/array&gt;
  &lt;/dict&gt;
  &lt;/plist&gt;
  </code></pre>
  
  <pre><code>platform :ios, '9.0'
  require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
  
  project 'Project',
    'Prod - Debug' =&gt; :debug,
    'Acc - Debug' =&gt; :debug,
    'Test - Debug' =&gt; :debug,
    'Prod - Release' =&gt; :release,
    'Acc - Release' =&gt; :release,
    'Test - Release' =&gt; :release
  
  target 'Project' do
    # Pods for Project
    pod 'React', :path =&gt; '../node_modules/react-native/'
    pod 'React-Core', :path =&gt; '../node_modules/react-native/React'
    pod 'React-DevSupport', :path =&gt; '../node_modules/react-native/React'
    pod 'React-RCTActionSheet', :path =&gt; '../node_modules/react-native/Libraries/ActionSheetIOS'
    pod 'React-RCTAnimation', :path =&gt; '../node_modules/react-native/Libraries/NativeAnimation'
    pod 'React-RCTBlob', :path =&gt; '../node_modules/react-native/Libraries/Blob'
    pod 'React-RCTImage', :path =&gt; '../node_modules/react-native/Libraries/Image'
    pod 'React-RCTLinking', :path =&gt; '../node_modules/react-native/Libraries/LinkingIOS'
    pod 'React-RCTNetwork', :path =&gt; '../node_modules/react-native/Libraries/Network'
    pod 'React-RCTSettings', :path =&gt; '../node_modules/react-native/Libraries/Settings'
    pod 'React-RCTText', :path =&gt; '../node_modules/react-native/Libraries/Text'
    pod 'React-RCTVibration', :path =&gt; '../node_modules/react-native/Libraries/Vibration'
    pod 'React-RCTWebSocket', :path =&gt; '../node_modules/react-native/Libraries/WebSocket'
  
    pod 'React-cxxreact', :path =&gt; '../node_modules/react-native/ReactCommon/cxxreact'
    pod 'React-jsi', :path =&gt; '../node_modules/react-native/ReactCommon/jsi'
    pod 'React-jsiexecutor', :path =&gt; '../node_modules/react-native/ReactCommon/jsiexecutor'
    pod 'React-jsinspector', :path =&gt; '../node_modules/react-native/ReactCommon/jsinspector'
    pod 'yoga', :path =&gt; '../node_modules/react-native/ReactCommon/yoga'
  
    pod 'DoubleConversion', :podspec =&gt; '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
    pod 'glog', :podspec =&gt; '../node_modules/react-native/third-party-podspecs/glog.podspec'
    pod 'Folly', :podspec =&gt; '../node_modules/react-native/third-party-podspecs/Folly.podspec'
  
    target 'ProjectTests' do
      inherit! :search_paths
      # Pods for testing
    end
  
    use_native_modules!
  end
  </code></pre>
  
  <pre><code>{
    "name": "project",
    "version": "0.0.1",
    "private": true,
    "scripts": {
      "start": "react-native start",
      "lint": "eslint --ext .jsx --ext .js src/",
      "ios": "react-native run-ios --scheme \"Project - Test\" --configuration \"Test - Debug\"",
      "android": "ENVFILE=.env.dev react-native run-android --variant=devDebug --appIdSuffix=dev",
      "postinstall": "npx jetify"
    },
    "dependencies": {
      "@aws-amplify/auth": "1.2.31",
      "@aws-amplify/core": "1.1.0",
      "@babel/polyfill": "7.4.4",
      "@react-native-community/async-storage": "1.6.1",
      "accounting": "0.4.1",
      "amazon-cognito-identity-js": "3.0.15",
      "cross-fetch": "3.0.4",
      "dayjs": "1.8.15",
      "iban": "0.0.12",
      "prop-types": "15.7.2",
      "qs": "6.7.0",
      "react": "16.9.0",
      "react-geocode": "0.1.2",
      "react-native": "0.60.5",
      "react-native-android-keyboard-adjust": "^1.2.0",
      "react-native-bootsplash": "1.0.1",
      "react-native-config": "luggit/react-native-config#master",
      "react-native-datepicker": "1.7.2",
      "react-native-device-info": "2.3.2",
      "react-native-gesture-handler": "1.3.0",
      "react-native-keyboard-aware-scroll-view": "0.9.1",
      "react-native-keyboard-spacer": "^0.4.1",
      "react-native-linear-gradient": "2.5.6",
      "react-native-pdf": "5.1.4",
      "react-native-svg": "9.8.4",
      "react-navigation": "3.11.0",
      "react-redux": "7.1.1",
      "redux": "4.0.4",
      "redux-devtools-extension": "2.13.8",
      "redux-thunk": "2.3.0",
      "reselect": "^4.0.0",
      "rn-fetch-blob": "0.10.16",
      "styled-components": "4.3.2"
    },
    "devDependencies": {
      "@babel/core": "7.5.5",
      "@babel/plugin-proposal-export-default-from": "7.5.2",
      "@babel/plugin-proposal-export-namespace-from": "7.5.2",
      "@babel/plugin-syntax-dynamic-import": "7.2.0",
      "@babel/runtime": "7.5.5",
      "babel-eslint": "10.0.2",
      "babel-plugin-module-resolver": "3.2.0",
      "babel-plugin-styled-components": "1.10.6",
      "eslint": "^5.16.0",
      "eslint-config-react-app": "^4.0.1",
      "eslint-import-resolver-babel-module": "5.1.0",
      "eslint-plugin-flowtype": "3.13.0",
      "eslint-plugin-import": "2.18.2",
      "eslint-plugin-jsx-a11y": "^6.2.1",
      "eslint-plugin-react": "7.14.3",
      "eslint-plugin-react-hooks": "1.6.1",
      "eslint-plugin-react-native": "3.7.0",
      "jetifier": "^1.6.4",
      "metro-react-native-babel-preset": "0.56.0"
    },
    "xcodeSchemes": {
      "Debug": [
        "Test - Debug",
        "Acc - Debug",
        "Prod - Debug"
      ],
      "Release": [
        "Test - Release",
        "Acc - Release",
        "Prod - Release"
      ],
      "projectDirectory": "ios",
      "settings": {}
    },
    "rnpm": {
      "assets": [
        "./src/app/static/fonts/"
      ]
    }
  }
  </code></pre>
  
  <p>The <code>AppDelegate.m</code> should link to the correct bundle file right? This code is in there:</p>
  
  <pre><code>
  - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
  {
  #if DEBUG
    return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
  #else
    return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
  #endif
  }
  </code></pre>
  
  <p>(I posted this question/bug in the React Native issue tracker on Github as well.)</p>
  
  <p><a href="https://i.stack.imgur.com/UE5Yo.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/UE5Yo.jpg" alt="enter image description here"></a></p>
  
  <h3>Edited:</h3>
  
  <p>I've found a solution in <a href="https://stackoverflow.com/questions/43854369/no-bundle-url-present-error-with-react-native-ios-release-mode">this Stack Overflow post</a>.  Following these steps you can create a <code>main.jsbundle</code> and <code>assets</code> folder and add it to your project.</p>
  
  <ol>
  <li>Run the following command: <code>react-native bundle --dev false --platform ios --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest ./ios</code></li>
  <li>Add <code>main.jsbundle</code> and <code>assets</code> directory to Xcode by dragging them in your project.</li>
  </ol>
  
  <p>Although this feels like a temporary solution.. I've got two <code>main.jsbundle</code> files right now. Can I delete the one in my project folder? And the <code>assets</code> folder includes some node modules do I have this command every time I add new modules and manually drag the assets in my project root?</p>
  
  <p>Also when I build it via CI/CD (Bitrise) there is no <code>main.jsbundle</code> created in the root since it is ignored by default in <code>.gitignore</code>. So my TestFlight builds are still failing. How to handle this? </p>
  
  <p>What exactly is happening here? </p>
  
  <p><a href="https://i.stack.imgur.com/f1fR3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/f1fR3.png" alt="enter image description here"></a></p>