expo-updates 57.0.11 → 57.0.12

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/CHANGELOG.md CHANGED
@@ -10,6 +10,13 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 57.0.12 — 2026-08-04
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [iOS] Set `always_out_of_date` on the `Generate updates resources for expo-updates` script_phase to silence the Xcode "run script phase will run on every build" dependency-analysis warning. ([#47622](https://github.com/expo/expo/pull/47622) by [@ramonclaudio](https://github.com/ramonclaudio))
18
+ - [iOS] Fix SIGABRT during log purge when the persistent log contains a truncated line: `UpdatesLogReader` guarded on UTF-8 byte length but advanced the string index by Characters, so a line holding only the multi-byte emoji log prefix trapped with "String index is out of bounds". ([#48222](https://github.com/expo/expo/pull/48222) by [@valinagacevschi](https://github.com/valinagacevschi))
19
+
13
20
  ## 57.0.11 — 2026-07-29
14
21
 
15
22
  _This version does not introduce any user-facing changes._
@@ -42,7 +42,7 @@ expoModule {
42
42
  }
43
43
 
44
44
  group = 'host.exp.exponent'
45
- version = '57.0.11'
45
+ version = '57.0.12'
46
46
 
47
47
  // Utility method to derive boolean values from the environment or from Java properties,
48
48
  // and return them as strings to be used in BuildConfig fields
@@ -89,7 +89,7 @@ android {
89
89
  namespace "expo.modules.updates"
90
90
  defaultConfig {
91
91
  versionCode 31
92
- versionName '57.0.11'
92
+ versionName '57.0.12'
93
93
  consumerProguardFiles("proguard-rules.pro")
94
94
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
95
95
 
@@ -71,11 +71,14 @@ public final class UpdatesLogReader {
71
71
  }
72
72
 
73
73
  private func logStringToFilteredLogEntry(entryString: String, epoch: UInt) -> UpdatesLogEntry? {
74
- if entryString.lengthOfBytes(using: .utf8) < 2 {
74
+ // NOTE: the guard must count Characters, not UTF-8 bytes. Every log line is prefixed
75
+ // with a multi-byte emoji (see ExpoModulesCore.LogType.prefix), so a truncated line
76
+ // containing only the prefix passes a byte-length guard and then traps in
77
+ // index(_:offsetBy:) with "String index is out of bounds" -> SIGABRT.
78
+ if entryString.count < 2 {
75
79
  return nil
76
80
  }
77
- let suffixFrom = entryString.index(entryString.startIndex, offsetBy: 2)
78
- let entryStringSuffix = String(entryString.suffix(from: suffixFrom))
81
+ let entryStringSuffix = String(entryString.dropFirst(2))
79
82
  let entry = UpdatesLogEntry.create(from: entryStringSuffix)
80
83
  return entry?.timestamp ?? 0 >= epoch ? entry : nil
81
84
  }
@@ -113,11 +113,17 @@ Pod::Spec.new do |s|
113
113
  if $expo_updates_create_updates_resources != false
114
114
  project_root_env_var = ENV['PROJECT_ROOT'] ? "export PROJECT_ROOT=#{ENV['PROJECT_ROOT']}\n" : ""
115
115
  force_bundling_flag = ex_updates_native_debug ? "export FORCE_BUNDLING=1\n" : ""
116
- s.script_phase = {
116
+ script_phase = {
117
117
  :name => 'Generate updates resources for expo-updates',
118
118
  :script => project_root_env_var + force_bundling_flag + 'bash -l -c "$PODS_TARGET_SRCROOT/../scripts/create-updates-resources-ios.sh"',
119
119
  :execution_position => :before_compile
120
120
  }
121
+ # :always_out_of_date is only available in CocoaPods 1.13.0 and later
122
+ if Gem::Version.new(Pod::VERSION) >= Gem::Version.new('1.13.0')
123
+ # always run the script without warning
124
+ script_phase[:always_out_of_date] = "1"
125
+ end
126
+ s.script_phase = script_phase
121
127
 
122
128
  # Generate EXUpdates.bundle without existing resources
123
129
  # `create-updates-resources-ios.sh` will generate updates resources in EXUpdates.bundle
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-updates",
3
- "version": "57.0.11",
3
+ "version": "57.0.12",
4
4
  "description": "Fetches and manages remotely-hosted assets and updates to your app's JS bundle.",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -61,8 +61,8 @@
61
61
  "ts-node": "^10.9.2",
62
62
  "xstate": "^4.37.2",
63
63
  "@expo/metro-config": "57.0.7",
64
+ "expo": "57.0.10",
64
65
  "expo-module-scripts": "56.0.3",
65
- "expo": "57.0.9",
66
66
  "expo-dev-client": "57.0.10"
67
67
  },
68
68
  "peerDependencies": {
@@ -82,7 +82,7 @@
82
82
  "./scripts/with-node.sh"
83
83
  ]
84
84
  },
85
- "gitHead": "ff6a677893d78b02c3adf63f67ba159b926395b0",
85
+ "gitHead": "fb5049481ebd5cadd499c4d1f1d5e47f9ac678be",
86
86
  "scripts": {
87
87
  "build": "expo-module build",
88
88
  "clean": "expo-module clean",