@otaupdate/react-native 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -319,3 +319,4 @@ compatible with. Devices on other binary versions never receive it.
319
319
  | Every update rolls back | `notifyAppReady()` is never reached — usually an early crash, or the call sits behind a screen the user has to navigate to. |
320
320
  | `no_matching_binary_version` | The release's `targetBinaryVersion` does not cover the installed native version. |
321
321
  | Works in debug, not release | Debug builds load from Metro; the OTA path only runs in release builds. |
322
+ | Android: mandatory update reload-loops (bare RN) | Fixed in 1.0.2. Before that, `IMMEDIATE`/`ON_NEXT_RESUME` tried an in-place JS reload that reused a bundle path fixed at process start, so the same mandatory update kept re-triggering forever. 1.0.2 does a real process restart instead — update to it. |
@@ -1,9 +1,9 @@
1
1
  package com.otaupdate
2
2
 
3
+ import android.content.Intent
3
4
  import android.os.Handler
4
5
  import android.os.Looper
5
6
  import android.util.Log
6
- import com.facebook.react.ReactApplication
7
7
  import com.facebook.react.bridge.Arguments
8
8
  import com.facebook.react.bridge.LifecycleEventListener
9
9
  import com.facebook.react.bridge.Promise
@@ -221,33 +221,35 @@ class OtaUpdateModule(private val reactContext: ReactApplicationContext) :
221
221
  }
222
222
 
223
223
  /**
224
- * Recreates the React context so the new bundle is loaded. Handles both the
225
- * bridge and bridgeless (new architecture) hosts; the bridgeless path is
226
- * reached reflectively so this module still compiles against RN 0.71.
224
+ * Restarts the whole process so the new bundle is loaded.
225
+ *
226
+ * This used to try an in-place JS-context reload (ReactHost.reload() via
227
+ * reflection on the new architecture, recreateReactContextInBackground() as
228
+ * a bridge-mode fallback) — but on Android BOTH of those reuse a bundle
229
+ * loader/path that was fixed once at ReactInstanceManager/ReactHost
230
+ * construction time (see ReactInstanceManager#mBundleLoader, a `final`
231
+ * field, and DefaultReactHost's internal singleton caching). Neither ever
232
+ * re-consults MainApplication's getJSBundleFile()/jsBundleFilePath, so an
233
+ * IMMEDIATE or ON_NEXT_RESUME install silently kept reloading the OLD
234
+ * bundle forever — for a mandatory update this produced an infinite
235
+ * reload loop, since the freshly-reloaded old bundle immediately saw the
236
+ * same "mandatory update available" response and tried to install again.
237
+ *
238
+ * A genuine process kill + relaunch is the only reliable way to force
239
+ * MainApplication to re-run from scratch and pick up the new bundle path —
240
+ * the same technique restart libraries like react-native-restart use.
241
+ * iOS does not need this: RCTTriggerReloadCommandListeners re-queries
242
+ * bundleURL() fresh on every reload, so it was never affected.
227
243
  */
228
244
  private fun reload() {
229
- val application = reactContext.applicationContext
230
- if (application !is ReactApplication) {
231
- Log.e(OtaUpdateStore.TAG, "Application does not implement ReactApplication — cannot restart")
232
- return
233
- }
234
-
245
+ val context = reactContext.applicationContext
235
246
  try {
236
- val reactHost = runCatching {
237
- ReactApplication::class.java.getMethod("getReactHost").invoke(application)
238
- }.getOrNull()
239
-
240
- if (reactHost != null) {
241
- reactHost.javaClass.methods
242
- .firstOrNull { it.name == "reload" && it.parameterTypes.size == 1 }
243
- ?.invoke(reactHost, "OTA update applied")
244
- ?: Log.e(OtaUpdateStore.TAG, "ReactHost has no reload(String) method")
245
- return
246
- }
247
-
248
- application.reactNativeHost.reactInstanceManager.recreateReactContextInBackground()
247
+ val launchIntent = context.packageManager.getLaunchIntentForPackage(context.packageName)
248
+ ?: throw IllegalStateException("no launch intent for ${context.packageName}")
249
+ context.startActivity(Intent.makeRestartActivityTask(launchIntent.component))
250
+ Runtime.getRuntime().exit(0)
249
251
  } catch (e: Exception) {
250
- Log.e(OtaUpdateStore.TAG, "failed to restart the React context", e)
252
+ Log.e(OtaUpdateStore.TAG, "failed to restart the app process", e)
251
253
  }
252
254
  }
253
255
 
@@ -1 +1 @@
1
- {"version":3,"file":"OtaUpdate.d.ts","sourceRoot":"","sources":["../src/OtaUpdate.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,cAAc,EAGnB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAmGjB,qEAAqE;AACrE,wBAAsB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAOjF;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAUzE;AAqDD;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAcpD;AAED,wBAAsB,UAAU,CAAC,qBAAqB,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAaxE;AAED,kFAAkF;AAClF,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAE3D;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,MAAM,IAAI,CAoClE;AAED,gEAAgE;AAChE,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
1
+ {"version":3,"file":"OtaUpdate.d.ts","sourceRoot":"","sources":["../src/OtaUpdate.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,cAAc,EAGnB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAqGjB,qEAAqE;AACrE,wBAAsB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAOjF;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAUzE;AAqDD;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAcpD;AAED,wBAAsB,UAAU,CAAC,qBAAqB,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAaxE;AAED,kFAAkF;AAClF,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAE3D;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,MAAM,IAAI,CAoClE;AAED,gEAAgE;AAChE,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
package/lib/OtaUpdate.js CHANGED
@@ -13,6 +13,12 @@ const react_native_1 = require("react-native");
13
13
  const api_1 = require("./api");
14
14
  const native_1 = require("./native");
15
15
  const types_1 = require("./types");
16
+ /**
17
+ * The one hosted server every app talks to. Native config (Info.plist /
18
+ * strings.xml) can still override this for internal staging use, but no
19
+ * user of the published SDK needs to set it — this is why.
20
+ */
21
+ const DEFAULT_SERVER_URL = 'https://api.otaupdate.dev';
16
22
  let cachedConfig = null;
17
23
  let syncInFlight = null;
18
24
  let lastSyncAt = 0;
@@ -20,6 +26,8 @@ let appReadyNotified = false;
20
26
  async function getConfiguration(overrideDeploymentKey) {
21
27
  if (!cachedConfig) {
22
28
  cachedConfig = await native_1.NativeOtaUpdate.getConfiguration();
29
+ if (!cachedConfig.serverUrl)
30
+ cachedConfig.serverUrl = DEFAULT_SERVER_URL;
23
31
  }
24
32
  // Re-read the running package on every call: it changes after an install.
25
33
  const current = await native_1.NativeOtaUpdate.getCurrentPackage().catch(() => null);
@@ -36,10 +44,6 @@ function assertConfigured(config) {
36
44
  'ota_deployment_key in strings.xml (Android), or pass `deploymentKey` to sync(). ' +
37
45
  'With Expo, set it in the config plugin options.');
38
46
  }
39
- if (!config.serverUrl) {
40
- throw new Error('No OTA server URL configured. Set OtaServerUrl (iOS) / ota_server_url (Android), ' +
41
- 'or the `serverUrl` config plugin option.');
42
- }
43
47
  }
44
48
  function toRemotePackage(info, config) {
45
49
  const remote = {
@@ -1 +1 @@
1
- {"version":3,"file":"OtaUpdate.js","sourceRoot":"","sources":["../src/OtaUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OtaUpdate.js","sourceRoot":"","sources":["../src/OtaUpdate.ts"],"names":[],"mappings":";;AAoHA,wCAOC;AAMD,oBAUC;AA2DD,wCAcC;AAED,gCAEC;AAED,8CAaC;AAGD,oCAEC;AAED,8BAEC;AAUD,sCAoCC;AAGD,0CAKC;AAtSD,+CAA6D;AAC7D,+BAA+D;AAC/D,qCAAwF;AACxF,mCAWiB;AAEjB;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAEvD,IAAI,YAAY,GAA4B,IAAI,CAAC;AACjD,IAAI,YAAY,GAA+B,IAAI,CAAC;AACpD,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,KAAK,UAAU,gBAAgB,CAAC,qBAA8B;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,MAAM,wBAAe,CAAC,gBAAgB,EAAE,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,SAAS;YAAE,YAAY,CAAC,SAAS,GAAG,kBAAkB,CAAC;IAC3E,CAAC;IACD,0EAA0E;IAC1E,MAAM,OAAO,GAAG,MAAM,wBAAe,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO;QACL,GAAG,YAAY;QACf,aAAa,EAAE,qBAAqB,IAAI,YAAY,CAAC,aAAa;QAClE,WAAW,EAAG,OAAO,EAAE,WAAkC,IAAI,IAAI;QACjE,KAAK,EAAG,OAAO,EAAE,KAA4B,IAAI,IAAI;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAwB;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,2EAA2E;YACzE,kFAAkF;YAClF,iDAAiD,CACpD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAyB,EACzB,MAAwB;IAExB,MAAM,MAAM,GAAkB;QAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;QACtC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,EAAE;QACnD,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG;QAC5B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;QACjC,KAAK,CAAC,QAAQ,CAAC,UAAiD;YAC9D,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxE,IAAI,CAAC;gBACH,sEAAsE;gBACtE,kEAAkE;gBAClE,MAAM,MAAM,GAAG,MAAM,wBAAe,CAAC,cAAc,CAAC;oBAClD,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC,CAAC;gBACH,KAAK,IAAA,kBAAY,EAAC,MAAM,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjE,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;oBAAS,CAAC;gBACT,YAAY,EAAE,MAAM,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACrB,MAAgF,EAChF,MAAqB;IAErB,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,CAAC,OAAO,CACX,OAAoB,mBAAW,CAAC,eAAe,EAC/C,yBAAyB,GAAG,CAAC;YAE7B,MAAM,wBAAe,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;YACzF,kEAAkE;YAClE,uEAAuE;YACvE,qEAAqE;YACrE,kBAAkB;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qEAAqE;AAC9D,KAAK,UAAU,cAAc,CAAC,aAAsB;IACzD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACrD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAA,iBAAW,EAAC,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,CAAC,WAAW;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACxE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;AAClD,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,IAAI,CAAC,UAAuB,EAAE;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,kBAAU,CAAC,gBAAgB,CAAC,CAAC;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,YAAY,GAAG,IAAI,CAAC;QACpB,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAoB;IACzC,MAAM,MAAM,GAAG,CAAC,MAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC;IAE5E,IAAI,CAAC;QACH,MAAM,CAAC,kBAAU,CAAC,mBAAmB,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7D,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,kBAAU,CAAC,UAAU,CAAC,CAAC;YAC9B,OAAO,kBAAU,CAAC,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACjD,MAAM,CAAC,kBAAU,CAAC,oBAAoB,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,kBAAU,CAAC,cAAc,CAAC,CAAC;gBAClC,OAAO,kBAAU,CAAC,cAAc,CAAC;YACnC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,kBAAU,CAAC,mBAAmB,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEhE,MAAM,CAAC,kBAAU,CAAC,iBAAiB,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW;YAC7B,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,mBAAW,CAAC,SAAS,CAAC;YACzD,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,mBAAW,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,yBAAyB,IAAI,CAAC,CAAC,CAAC;QAElE,MAAM,CAAC,kBAAU,CAAC,gBAAgB,CAAC,CAAC;QACpC,OAAO,kBAAU,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,wEAAwE;QACxE,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAW,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC7D,KAAK,IAAA,kBAAY,EAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;QACD,MAAM,CAAC,kBAAU,CAAC,aAAa,CAAC,CAAC;QACjC,OAAO,kBAAU,CAAC,aAAa,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,cAAc;IAClC,IAAI,gBAAgB;QAAE,OAAO;IAC7B,gBAAgB,GAAG,IAAI,CAAC;IACxB,MAAM,wBAAe,CAAC,sBAAsB,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,wBAAe,CAAC,iBAAiB,EAAE,CAAC;QAC1D,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,KAAK,IAAA,kBAAY,EAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,qBAAqB,GAAG,KAAK;IAC5D,MAAM,wBAAe,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC1D,CAAC;AAEM,KAAK,UAAU,iBAAiB;IACrC,MAAM,GAAG,GAAG,MAAM,wBAAe,CAAC,iBAAiB,EAAE,CAAC;IACtD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO;QACL,KAAK,EAAG,GAAG,CAAC,KAAgB,IAAI,IAAI;QACpC,WAAW,EAAG,GAAG,CAAC,WAAsB,IAAI,IAAI;QAChD,WAAW,EAAG,GAAG,CAAC,WAAsB,IAAI,IAAI;QAChD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QACrC,UAAU,EAAG,GAAG,CAAC,UAAqB,IAAI,IAAI;QAC9C,UAAU,EAAG,GAAG,CAAC,UAAqB,IAAI,EAAE;QAC5C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACjC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,kFAAkF;AAC3E,KAAK,UAAU,YAAY;IAChC,MAAM,wBAAe,CAAC,YAAY,EAAE,CAAC;AACvC,CAAC;AAEM,KAAK,UAAU,SAAS;IAC7B,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC;AAED,+EAA+E;AAE/E,IAAI,qBAAqB,GAAkC,IAAI,CAAC;AAEhE;;;GAGG;AACH,SAAgB,aAAa,CAAC,UAAsB,EAAE;IACpD,MAAM,EACJ,eAAe,GAAG,IAAI,EACtB,aAAa,GAAG,IAAI,EACpB,mBAAmB,GAAG,EAAE,EACxB,IAAI,EAAE,WAAW,GAAG,EAAE,GACvB,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,gCAAuB,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CACV,+DAA+D;YAC7D,yCAAyC,CAC5C,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,2EAA2E;IAC3E,sDAAsD;IACtD,KAAK,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,eAAe;QAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,CAAC,KAAqB,EAAE,EAAE;YACxC,IAAI,KAAK,KAAK,QAAQ;gBAAE,OAAO;YAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,mBAAmB,GAAG,IAAI;gBAAE,OAAO;YACjE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,MAAM,YAAY,GAAG,uBAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClE,qBAAqB,GAAG,YAAY,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,EAAE;QACV,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,qBAAqB,GAAG,IAAI,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,SAAgB,eAAe;IAC7B,YAAY,GAAG,IAAI,CAAC;IACpB,YAAY,GAAG,IAAI,CAAC;IACpB,UAAU,GAAG,CAAC,CAAC;IACf,gBAAgB,GAAG,KAAK,CAAC;AAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@otaupdate/react-native",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Over-the-air JS bundle updates for React Native \u2014 bare and Expo",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -1,7 +1,10 @@
1
1
  import { ConfigPlugin } from '@expo/config-plugins';
2
2
  export interface OtaPluginOptions {
3
- /** Server that serves updates, e.g. https://ota.example.com */
4
- serverUrl: string;
3
+ /**
4
+ * Overrides the hosted server the SDK talks to. Leave unset — the SDK
5
+ * already defaults to the hosted platform. Only for internal staging use.
6
+ */
7
+ serverUrl?: string;
5
8
  /** Deployment key used on both platforms unless overridden below. */
6
9
  deploymentKey?: string;
7
10
  iosDeploymentKey?: string;
@@ -8,15 +8,15 @@ function keysFor(options) {
8
8
  if (!ios || !android) {
9
9
  throw new Error(`[${PACKAGE_NAME}] Missing deployment key. Provide "deploymentKey", or both ` +
10
10
  '"iosDeploymentKey" and "androidDeploymentKey", in the plugin options.\n\n' +
11
- ' ["@otaupdate/react-native", { "serverUrl": "https://ota.example.com", ' +
12
- '"iosDeploymentKey": "…", "androidDeploymentKey": "…" }]');
11
+ ' ["@otaupdate/react-native", { "iosDeploymentKey": "", "androidDeploymentKey": "…" }]');
13
12
  }
14
13
  return { ios, android };
15
14
  }
16
15
  // --- iOS ---------------------------------------------------------------------
17
16
  const withOtaInfoPlist = (config, options) => (0, config_plugins_1.withInfoPlist)(config, (mod) => {
18
17
  mod.modResults.OtaDeploymentKey = keysFor(options).ios;
19
- mod.modResults.OtaServerUrl = options.serverUrl;
18
+ if (options.serverUrl)
19
+ mod.modResults.OtaServerUrl = options.serverUrl;
20
20
  return mod;
21
21
  });
22
22
  /**
@@ -65,11 +65,12 @@ const withOtaAppDelegate = (config) => (0, config_plugins_1.withAppDelegate)(con
65
65
  // --- Android -----------------------------------------------------------------
66
66
  const withOtaStrings = (config, options) => (0, config_plugins_1.withStringsXml)(config, (mod) => {
67
67
  const { android } = keysFor(options);
68
- mod.modResults = config_plugins_1.AndroidConfig.Strings.setStringItem([
69
- // translatable=false keeps these out of localisation exports.
70
- { $: { name: 'ota_deployment_key', translatable: 'false' }, _: android },
71
- { $: { name: 'ota_server_url', translatable: 'false' }, _: options.serverUrl },
72
- ], mod.modResults);
68
+ // translatable=false keeps these out of localisation exports.
69
+ const items = [{ $: { name: 'ota_deployment_key', translatable: 'false' }, _: android }];
70
+ if (options.serverUrl) {
71
+ items.push({ $: { name: 'ota_server_url', translatable: 'false' }, _: options.serverUrl });
72
+ }
73
+ mod.modResults = config_plugins_1.AndroidConfig.Strings.setStringItem(items, mod.modResults);
73
74
  return mod;
74
75
  });
75
76
  // Note: there is deliberately no MainApplication patch on Android.
@@ -84,10 +85,6 @@ const withOtaStrings = (config, options) => (0, config_plugins_1.withStringsXml)
84
85
  // changes — it already did, against the RN 0.86 template.
85
86
  // --- Entry point --------------------------------------------------------------
86
87
  const withOtaUpdate = (config, options) => {
87
- if (!options?.serverUrl) {
88
- throw new Error(`[${PACKAGE_NAME}] "serverUrl" is required.\n\n` +
89
- ' ["@otaupdate/react-native", { "serverUrl": "https://ota.example.com", "deploymentKey": "…" }]');
90
- }
91
88
  keysFor(options); // fail fast at config time rather than at build time
92
89
  config = withOtaInfoPlist(config, options);
93
90
  config = withOtaAppDelegate(config);
package/src/OtaUpdate.ts CHANGED
@@ -14,6 +14,13 @@ import {
14
14
  type SyncOptions,
15
15
  } from './types';
16
16
 
17
+ /**
18
+ * The one hosted server every app talks to. Native config (Info.plist /
19
+ * strings.xml) can still override this for internal staging use, but no
20
+ * user of the published SDK needs to set it — this is why.
21
+ */
22
+ const DEFAULT_SERVER_URL = 'https://api.otaupdate.dev';
23
+
17
24
  let cachedConfig: OtaConfiguration | null = null;
18
25
  let syncInFlight: Promise<SyncStatus> | null = null;
19
26
  let lastSyncAt = 0;
@@ -22,6 +29,7 @@ let appReadyNotified = false;
22
29
  async function getConfiguration(overrideDeploymentKey?: string): Promise<OtaConfiguration> {
23
30
  if (!cachedConfig) {
24
31
  cachedConfig = await NativeOtaUpdate.getConfiguration();
32
+ if (!cachedConfig.serverUrl) cachedConfig.serverUrl = DEFAULT_SERVER_URL;
25
33
  }
26
34
  // Re-read the running package on every call: it changes after an install.
27
35
  const current = await NativeOtaUpdate.getCurrentPackage().catch(() => null);
@@ -41,12 +49,6 @@ function assertConfigured(config: OtaConfiguration): void {
41
49
  'With Expo, set it in the config plugin options.',
42
50
  );
43
51
  }
44
- if (!config.serverUrl) {
45
- throw new Error(
46
- 'No OTA server URL configured. Set OtaServerUrl (iOS) / ota_server_url (Android), ' +
47
- 'or the `serverUrl` config plugin option.',
48
- );
49
- }
50
52
  }
51
53
 
52
54
  function toRemotePackage(