Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS 10 Release bundle errors #733

Open
grahamlyus opened this issue Apr 30, 2020 · 0 comments
Open

iOS 10 Release bundle errors #733

grahamlyus opened this issue Apr 30, 2020 · 0 comments

Comments

@grahamlyus
Copy link
Contributor

Environment

System:
    OS: macOS Mojave 10.14.6
    CPU: (12) x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
    Memory: 1.38 GB / 32.00 GB
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 12.11.0 - /var/folders/gk/9mp1z229013c3dl7p0wfcf500000gp/T/yarn--1588278802927-0.526041809933842/node
    Yarn: 1.19.1 - /var/folders/gk/9mp1z229013c3dl7p0wfcf500000gp/T/yarn--1588278802927-0.526041809933842/yarn
    npm: 6.11.3 - ~/.asdf/installs/nodejs/12.11.0/bin/npm
    Watchman: 4.1.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.4, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
    Android SDK:
      API Levels: 27, 28
      Build Tools: 28.0.3
      System Images: android-21 | Google APIs Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom, android-27 | Intel x86 Atom_64, android-27 | Google APIs Intel x86 Atom, android-28 | Google APIs Intel x86 Atom, android-29 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom
  IDEs:
    Xcode: 11.4/11N123k - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0
    react-native: 0.61.5 => 0.61.5
  "dependencies": {
    "react": "16.9.0",
    "react-native": "0.61.5"
  },
  "devDependencies": {
    "@babel/core": "^7.6.2",
    "@babel/runtime": "^7.6.2",
    "@haul-bundler/babel-preset-react-native": "^0.16.0",
    "@haul-bundler/cli": "^0.20.0",
    "@haul-bundler/preset-0.60": "^0.18.0",
    "@react-native-community/eslint-config": "^0.0.5",
    "babel-jest": "^24.9.0",
    "eslint": "^6.5.1",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.56.0",
    "react-test-renderer": "16.9.0"
  },

Description

Related issues #636, #685.

Running release bundle fails on iOS 10 and causes a crash at launch. There are 2 problems:

Unhandled JS Exception: Unexpected token '...'. Expected a property name.

The spread operator is not being transformed. Fixed by adding

plugins: ['@babel/plugin-proposal-object-rest-spread'],

to my babel.config.js

Unhandled JS Exception: Cannot declare a const variable twice: 'e'.

Sometimes it'll be let instead of const. Fixed by adding minifyOptions to haul.config.js:

import { withPolyfills, makeConfig } from "@haul-bundler/preset-0.60";

export default makeConfig({
  bundles: {
    index: {
      entry: withPolyfills('./index'),
      minifyOptions: {
        safari10: true,
      },
    },
  },
});

However, it also needs a patch as the minifyOptions are not being passed thru to terser-webpack-plugin:

diff --git a/node_modules/@haul-bundler/preset-0.60/build/defaultConfig.js b/node_modules/@haul-bundler/preset-0.60/build/defaultConfig.js
index 76131e9..f913f45 100644
--- a/node_modules/@haul-bundler/preset-0.60/build/defaultConfig.js
+++ b/node_modules/@haul-bundler/preset-0.60/build/defaultConfig.js
@@ -31,6 +31,7 @@ function getDefaultConfig(runtime, env, bundleName, projectConfig) {
     assetsDest,
     dev,
     minify,
+    minifyOptions,
     providesModuleNodeModules,
     hasteOptions,
     maxWorkers,
@@ -163,7 +164,8 @@ function getDefaultConfig(runtime, env, bundleName, projectConfig) {
         cache: true,
         // Set upper limit on CPU cores, to prevent Out of Memory exception on CIs.
         parallel: _isCi.default ? Math.min(_os.default.cpus().length, 8) - 1 : true,
-        sourceMap: true
+        sourceMap: true,
+        terserOptions: minifyOptions || {}
       })] : [],
       namedModules: dev,
       concatenateModules: true

Reproducible Demo

Create new project and add haul

npx react-native init MyProject --version "0.61.5"
cd MyProject
yarn add --dev @haul-bundler/cli
yarn haul init

Open ios/MyProject.xcworkspace in Xcode

Product > Scheme > Edit Scheme and change Build Configuration to Release

Select a simulator running iOS 10 (e.g. iPad Pro (9.7-inch) -- 10.3.1)

Build and Run (see Description above)

Vanilla React Native supports iOS 10, so I think Haul should also. Thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant