expo-updates 29.0.17 → 29.0.18

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
+ ## 29.0.18 — 2026-05-28
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [cli] Write private key into owner-only permissions file ([#45880](https://github.com/expo/expo/pull/45880) by [@kitten](https://github.com/kitten))
18
+ - Prevent logging on download progress events to reduce log size. ([#42436](https://github.com/expo/expo/pull/42436) by [@alanjhughes](https://github.com/alanjhughes))
19
+
13
20
  ## 29.0.17 — 2026-04-27
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 = '29.0.17'
45
+ version = '29.0.18'
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
@@ -88,7 +88,7 @@ android {
88
88
  namespace "expo.modules.updates"
89
89
  defaultConfig {
90
90
  versionCode 31
91
- versionName '29.0.17'
91
+ versionName '29.0.18'
92
92
  consumerProguardFiles("proguard-rules.pro")
93
93
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
94
94
 
@@ -71,7 +71,9 @@ class UpdatesStateMachine(
71
71
  private fun processEvent(event: UpdatesStateEvent) {
72
72
  if (transition(event)) {
73
73
  context = reduceContext(context, event)
74
- logger.info("Updates state change: ${event.type}, context = ${context.json}")
74
+ if (event !is UpdatesStateEvent.DownloadProgress) {
75
+ logger.info("Updates state change: ${event.type}, context = ${context.json}")
76
+ }
75
77
  sendContextToJS()
76
78
  }
77
79
  }
@@ -35,7 +35,9 @@ async function generateCodeSigningAsync(projectRoot, { certificateValidityDurati
35
35
  const certificatePEM = (0, code_signing_certificates_1.convertCertificateToCertificatePEM)(certificate);
36
36
  await Promise.all([
37
37
  fs_1.promises.writeFile(path_1.default.join(keyOutputDir, 'public-key.pem'), keyPairPEM.publicKeyPEM),
38
- fs_1.promises.writeFile(path_1.default.join(keyOutputDir, 'private-key.pem'), keyPairPEM.privateKeyPEM),
38
+ fs_1.promises.writeFile(path_1.default.join(keyOutputDir, 'private-key.pem'), keyPairPEM.privateKeyPEM, {
39
+ mode: 0o600,
40
+ }),
39
41
  fs_1.promises.writeFile(path_1.default.join(certificateOutputDir, 'certificate.pem'), certificatePEM),
40
42
  ]);
41
43
  (0, log_1.log)(`Generated public and private keys output in ${keyOutputDir}. Remember to add them to .gitignore or to encrypt them. (e.g. with git-crypt)`);
@@ -51,7 +51,9 @@ export async function generateCodeSigningAsync(
51
51
 
52
52
  await Promise.all([
53
53
  fs.writeFile(path.join(keyOutputDir, 'public-key.pem'), keyPairPEM.publicKeyPEM),
54
- fs.writeFile(path.join(keyOutputDir, 'private-key.pem'), keyPairPEM.privateKeyPEM),
54
+ fs.writeFile(path.join(keyOutputDir, 'private-key.pem'), keyPairPEM.privateKeyPEM, {
55
+ mode: 0o600,
56
+ }),
55
57
  fs.writeFile(path.join(certificateOutputDir, 'certificate.pem'), certificatePEM),
56
58
  ]);
57
59
 
@@ -316,7 +316,9 @@ internal class UpdatesStateMachine {
316
316
  if transition(event) {
317
317
  // Only change context if transition succeeds
318
318
  context = reducedContext(context, event)
319
- logger.info(message: "Updates state change: state = \(state), event = \(event.type), context = \(context)")
319
+ if event.type != .downloadProgress {
320
+ logger.info(message: "Updates state change: state = \(state), event = \(event.type), context = \(context)")
321
+ }
320
322
  sendContextToJS()
321
323
  }
322
324
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-updates",
3
- "version": "29.0.17",
3
+ "version": "29.0.18",
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",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@expo/code-signing-certificates": "^0.0.6",
42
- "@expo/plist": "^0.4.8",
42
+ "@expo/plist": "^0.4.9",
43
43
  "@expo/spawn-async": "^1.7.2",
44
44
  "arg": "4.1.0",
45
45
  "chalk": "^4.1.2",
@@ -73,5 +73,5 @@
73
73
  "react": "*",
74
74
  "react-native": "*"
75
75
  },
76
- "gitHead": "dd4e87727c4ef32ac5d8a7b5a42fd80da254140f"
76
+ "gitHead": "45c60e10956764bbac6c62454890eeb25c74bbd6"
77
77
  }