expo-image 55.0.0 → 55.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/android/build.gradle +2 -2
  3. package/expo-module.config.json +1 -1
  4. package/ios/ImageLoadOptions.swift +10 -4
  5. package/ios/ImageLoadTask.swift +5 -5
  6. package/ios/ImageLoader.swift +5 -3
  7. package/ios/ImageModule.swift +1 -1
  8. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.aar +0 -0
  9. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.aar.md5 +1 -0
  10. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.aar.sha1 +1 -0
  11. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.aar.sha256 +1 -0
  12. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.aar.sha512 +1 -0
  13. package/local-maven-repo/expo/modules/image/expo.modules.image/{55.0.0/expo.modules.image-55.0.0.module → 55.0.2/expo.modules.image-55.0.2.module} +17 -17
  14. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.module.md5 +1 -0
  15. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.module.sha1 +1 -0
  16. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.module.sha256 +1 -0
  17. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.module.sha512 +1 -0
  18. package/local-maven-repo/expo/modules/image/expo.modules.image/{55.0.0/expo.modules.image-55.0.0.pom → 55.0.2/expo.modules.image-55.0.2.pom} +1 -1
  19. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.pom.md5 +1 -0
  20. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.pom.sha1 +1 -0
  21. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.pom.sha256 +1 -0
  22. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.2/expo.modules.image-55.0.2.pom.sha512 +1 -0
  23. package/local-maven-repo/expo/modules/image/expo.modules.image/maven-metadata.xml +4 -4
  24. package/local-maven-repo/expo/modules/image/expo.modules.image/maven-metadata.xml.md5 +1 -1
  25. package/local-maven-repo/expo/modules/image/expo.modules.image/maven-metadata.xml.sha1 +1 -1
  26. package/local-maven-repo/expo/modules/image/expo.modules.image/maven-metadata.xml.sha256 +1 -1
  27. package/local-maven-repo/expo/modules/image/expo.modules.image/maven-metadata.xml.sha512 +1 -1
  28. package/package.json +3 -3
  29. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.aar +0 -0
  30. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.aar.md5 +0 -1
  31. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.aar.sha1 +0 -1
  32. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.aar.sha256 +0 -1
  33. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.aar.sha512 +0 -1
  34. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.module.md5 +0 -1
  35. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.module.sha1 +0 -1
  36. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.module.sha256 +0 -1
  37. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.module.sha512 +0 -1
  38. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.pom.md5 +0 -1
  39. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.pom.sha1 +0 -1
  40. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.pom.sha256 +0 -1
  41. package/local-maven-repo/expo/modules/image/expo.modules.image/55.0.0/expo.modules.image-55.0.0.pom.sha512 +0 -1
  42. /package/local-maven-repo/expo/modules/image/expo.modules.image/{55.0.0/expo.modules.image-55.0.0-sources.jar → 55.0.2/expo.modules.image-55.0.2-sources.jar} +0 -0
  43. /package/local-maven-repo/expo/modules/image/expo.modules.image/{55.0.0/expo.modules.image-55.0.0-sources.jar.md5 → 55.0.2/expo.modules.image-55.0.2-sources.jar.md5} +0 -0
  44. /package/local-maven-repo/expo/modules/image/expo.modules.image/{55.0.0/expo.modules.image-55.0.0-sources.jar.sha1 → 55.0.2/expo.modules.image-55.0.2-sources.jar.sha1} +0 -0
  45. /package/local-maven-repo/expo/modules/image/expo.modules.image/{55.0.0/expo.modules.image-55.0.0-sources.jar.sha256 → 55.0.2/expo.modules.image-55.0.2-sources.jar.sha256} +0 -0
  46. /package/local-maven-repo/expo/modules/image/expo.modules.image/{55.0.0/expo.modules.image-55.0.0-sources.jar.sha512 → 55.0.2/expo.modules.image-55.0.2-sources.jar.sha512} +0 -0
package/CHANGELOG.md CHANGED
@@ -10,6 +10,16 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 55.0.2 — 2026-01-26
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [iOS] Fixed `useImage` crashing on SVGs when the max dimensions are not set. ([#42496](https://github.com/expo/expo/pull/42496) by [@tsapeta](https://github.com/tsapeta))
18
+
19
+ ## 55.0.1 — 2026-01-22
20
+
21
+ _This version does not introduce any user-facing changes._
22
+
13
23
  ## 55.0.0 — 2026-01-21
14
24
 
15
25
  ### 🎉 New features
@@ -13,13 +13,13 @@ plugins {
13
13
  apply plugin: 'com.google.devtools.ksp'
14
14
 
15
15
  group = 'expo.modules.image'
16
- version = '55.0.0'
16
+ version = '55.0.2'
17
17
 
18
18
  android {
19
19
  namespace "expo.modules.image"
20
20
  defaultConfig {
21
21
  versionCode 1
22
- versionName "55.0.0"
22
+ versionName "55.0.2"
23
23
  consumerProguardFiles("proguard-rules.pro")
24
24
 
25
25
  buildConfigField("boolean", "ALLOW_GLIDE_LOGS", project.properties.get("EXPO_ALLOW_GLIDE_LOGS", "false"))
@@ -8,7 +8,7 @@
8
8
  "publication": {
9
9
  "groupId": "expo.modules.image",
10
10
  "artifactId": "expo.modules.image",
11
- "version": "55.0.0",
11
+ "version": "55.0.2",
12
12
  "repository": "local-maven-repo"
13
13
  }
14
14
  }
@@ -3,10 +3,16 @@
3
3
  import ExpoModulesCore
4
4
 
5
5
  internal struct ImageLoadOptions: Record {
6
- @Field var maxWidth: Int = .max
7
- @Field var maxHeight: Int = .max
6
+ @Field var maxWidth: Int?
7
+ @Field var maxHeight: Int?
8
8
 
9
- func getMaxSize() -> CGSize {
10
- return CGSize(width: maxWidth, height: maxHeight)
9
+ func getMaxSize() -> CGSize? {
10
+ // If none of max dimensions are provided, just use the original image without the upper limit.
11
+ // This is important for vector images, where using `CGSize(.max, .max)`
12
+ // would actually try to create a bitmap of that size and cause a crash.
13
+ if maxWidth == nil && maxHeight == nil {
14
+ return nil
15
+ }
16
+ return CGSize(width: maxWidth ?? .max, height: maxHeight ?? .max)
11
17
  }
12
18
  }
@@ -4,18 +4,18 @@ import ExpoModulesCore
4
4
 
5
5
  internal final class ImageLoadTask: SharedObject {
6
6
  private let source: ImageSource
7
- private let maxSize: CGSize?
7
+ private let options: ImageLoadOptions
8
8
  private var task: Task<UIImage, any Error>?
9
9
 
10
- init(_ source: ImageSource, maxSize: CGSize? = nil) {
10
+ init(_ source: ImageSource, options: ImageLoadOptions) {
11
11
  self.source = source
12
- self.maxSize = maxSize
12
+ self.options = options
13
13
  super.init()
14
14
  }
15
15
 
16
16
  func load() async throws -> UIImage {
17
- let task = self.task ?? Task { [source, maxSize] in
18
- return try await ImageLoader.shared.load(source, maxSize: maxSize)
17
+ let task = self.task ?? Task { [source, options] in
18
+ return try await ImageLoader.shared.load(source, options: options)
19
19
  }
20
20
  self.task = task
21
21
  return try await task.value
@@ -11,14 +11,16 @@ internal final class ImageLoader {
11
11
  loader: SDImageLoadersManager.shared
12
12
  )
13
13
 
14
- func load(_ source: ImageSource, maxSize: CGSize? = nil) async throws -> UIImage {
14
+ func load(_ source: ImageSource, options: ImageLoadOptions) async throws -> UIImage {
15
15
  // This loader uses only the disk cache. We may want to give more control on this, but the memory cache
16
16
  // doesn't make much sense for shared refs as they're kept in memory as long as their JS objects.
17
17
  var context = createSDWebImageContext(forSource: source, cachePolicy: .disk)
18
18
 
19
- if let maxSize {
19
+ if let maxSize = options.getMaxSize() {
20
+ // Note that setting the thumbnail size rasterizes vector images into a bitmap.
20
21
  context[.imageThumbnailPixelSize] = maxSize
21
22
  }
23
+ context[.imagePreserveAspectRatio] = true
22
24
 
23
25
  return try await withCheckedThrowingContinuation { continuation in
24
26
  imageManager.loadImage(with: source.uri, context: context, progress: nil) { image, _, error, _, _, _ in
@@ -32,7 +34,7 @@ internal final class ImageLoader {
32
34
  }
33
35
  }
34
36
 
35
- internal final class ImageLoadingFailed: Exception {
37
+ internal final class ImageLoadingFailed: Exception, @unchecked Sendable {
36
38
  override var reason: String {
37
39
  "Failed to load an image"
38
40
  }
@@ -246,7 +246,7 @@ public final class ImageModule: Module {
246
246
  }
247
247
 
248
248
  AsyncFunction("loadAsync") { (source: ImageSource, options: ImageLoadOptions?) -> Image? in
249
- let image = try await ImageLoadTask(source, maxSize: options?.getMaxSize()).load()
249
+ let image = try await ImageLoadTask(source, options: options ?? ImageLoadOptions()).load()
250
250
  return Image(image)
251
251
  }
252
252
 
@@ -0,0 +1 @@
1
+ f748a5fb6c426b42b488c8863bd64992858da913d6af6ddcb59fefcb9189fbfd
@@ -0,0 +1 @@
1
+ 684e5e891821f900ae8b09bc03d92a473493c307fdbfae5d10ded248dc1c338f877395c8ce66dd75772788e33a7cd7fa39e81c77c7670df18472355735361545
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.image",
5
5
  "module": "expo.modules.image",
6
- "version": "55.0.0",
6
+ "version": "55.0.2",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -54,13 +54,13 @@
54
54
  ],
55
55
  "files": [
56
56
  {
57
- "name": "expo.modules.image-55.0.0.aar",
58
- "url": "expo.modules.image-55.0.0.aar",
59
- "size": 293351,
60
- "sha512": "abc4be30e9c4ac11c50ff65aa041a9c29b4028095bb57160c497073904ae6cd94084e5cebfc11e725347c886aec51f1bb90df714cb62c559278439bb71dd36e2",
61
- "sha256": "ba81009986021bf0d85c0429e6bec0af53f674cceac91723833a66607ae466fd",
62
- "sha1": "e0665412c6763b6587a69ffb3d2bd9e422f3644e",
63
- "md5": "f3b7b5d8446efb7dfe79d1ba04c56212"
57
+ "name": "expo.modules.image-55.0.2.aar",
58
+ "url": "expo.modules.image-55.0.2.aar",
59
+ "size": 290160,
60
+ "sha512": "684e5e891821f900ae8b09bc03d92a473493c307fdbfae5d10ded248dc1c338f877395c8ce66dd75772788e33a7cd7fa39e81c77c7670df18472355735361545",
61
+ "sha256": "f748a5fb6c426b42b488c8863bd64992858da913d6af6ddcb59fefcb9189fbfd",
62
+ "sha1": "e9d442bc409939e79f65d3ea5a4a6261f8c66085",
63
+ "md5": "fb31a0ed31ec48a3a3704f97448cc32d"
64
64
  }
65
65
  ]
66
66
  },
@@ -143,13 +143,13 @@
143
143
  ],
144
144
  "files": [
145
145
  {
146
- "name": "expo.modules.image-55.0.0.aar",
147
- "url": "expo.modules.image-55.0.0.aar",
148
- "size": 293351,
149
- "sha512": "abc4be30e9c4ac11c50ff65aa041a9c29b4028095bb57160c497073904ae6cd94084e5cebfc11e725347c886aec51f1bb90df714cb62c559278439bb71dd36e2",
150
- "sha256": "ba81009986021bf0d85c0429e6bec0af53f674cceac91723833a66607ae466fd",
151
- "sha1": "e0665412c6763b6587a69ffb3d2bd9e422f3644e",
152
- "md5": "f3b7b5d8446efb7dfe79d1ba04c56212"
146
+ "name": "expo.modules.image-55.0.2.aar",
147
+ "url": "expo.modules.image-55.0.2.aar",
148
+ "size": 290160,
149
+ "sha512": "684e5e891821f900ae8b09bc03d92a473493c307fdbfae5d10ded248dc1c338f877395c8ce66dd75772788e33a7cd7fa39e81c77c7670df18472355735361545",
150
+ "sha256": "f748a5fb6c426b42b488c8863bd64992858da913d6af6ddcb59fefcb9189fbfd",
151
+ "sha1": "e9d442bc409939e79f65d3ea5a4a6261f8c66085",
152
+ "md5": "fb31a0ed31ec48a3a3704f97448cc32d"
153
153
  }
154
154
  ]
155
155
  },
@@ -163,8 +163,8 @@
163
163
  },
164
164
  "files": [
165
165
  {
166
- "name": "expo.modules.image-55.0.0-sources.jar",
167
- "url": "expo.modules.image-55.0.0-sources.jar",
166
+ "name": "expo.modules.image-55.0.2-sources.jar",
167
+ "url": "expo.modules.image-55.0.2-sources.jar",
168
168
  "size": 59043,
169
169
  "sha512": "48b91ee43ee8ea2da842345e3e7dfa4be0230a547889c6382d4a2e01317997f569fea6f6cd7355b41655013cb5fa3c01b1242a22dcdee5003cdf90a0ec36012e",
170
170
  "sha256": "4aac755e247e19c741f4b48ee71ebca2b49c28f90219b00575a39261f8980937",
@@ -0,0 +1 @@
1
+ f32bd82fb337c7f09668d7798d1a161002ab9d3dd3961b3e129c32745ea90bd4
@@ -0,0 +1 @@
1
+ bda658e8251ede12c3de37de0e4fbc62f441991b849fcc9824ac884435daad92c178ba5207ce629db39d4bfa7c592c4a30a928b2e9555daa5d9113d103c0f7c6
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.image</groupId>
11
11
  <artifactId>expo.modules.image</artifactId>
12
- <version>55.0.0</version>
12
+ <version>55.0.2</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.image</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ 3c4e2468695edc6d86b67cbc00bd822d46d34df70fc20b42a3b412e0af01b9cf
@@ -0,0 +1 @@
1
+ b5a08d3ce517a24ace09329928175e5c6f6857a9c63cbad1739e57f70ee65450ae728ecd31530afa0e8752bf4fd87a95c03a3c68fe30a2cfdb6a6441ab0f3063
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.image</groupId>
4
4
  <artifactId>expo.modules.image</artifactId>
5
5
  <versioning>
6
- <latest>55.0.0</latest>
7
- <release>55.0.0</release>
6
+ <latest>55.0.2</latest>
7
+ <release>55.0.2</release>
8
8
  <versions>
9
- <version>55.0.0</version>
9
+ <version>55.0.2</version>
10
10
  </versions>
11
- <lastUpdated>20260121212148</lastUpdated>
11
+ <lastUpdated>20260126041959</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 8943d8626437c447b205671f6587de4d
1
+ 7310569a99b74c155cc79cdbe64ffef3
@@ -1 +1 @@
1
- b4fa45ef4c8bb1cc64f6d9249b60a73098765f6f
1
+ bf8e4444ccd3f26165eb674a6990acfa34164d01
@@ -1 +1 @@
1
- 6119d259e67401d0de420def1beb9c1498b4fe0d59cb057c1c35444d2690eae6
1
+ 61237b2776ac9db7c7a2d937887dd22df44bb3ccd7908131438ff7795219d963
@@ -1 +1 @@
1
- 5528995c4ecc40cac53dfffdb5d796678c82917e80180675ae7e58ad5e5e02fc5eba3b759c4a8499dfea3185e88f80af464dbb8daa483b1b3a241e5a0c033e09
1
+ 03304729033ebffdc6845080054d1b4d80a9b022ecdef6efa272973c7321a9fed261b2456c3266cec871b247f7fbc3c7866030b000ac236c95ceec1ecc5d13df
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "expo-image",
3
3
  "title": "Expo Image",
4
- "version": "55.0.0",
4
+ "version": "55.0.2",
5
5
  "description": "A cross-platform, performant image component for React Native and Expo with Web support",
6
6
  "main": "src/index.ts",
7
7
  "types": "build/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "sf-symbols-typescript": "^2.2.0"
33
33
  },
34
34
  "devDependencies": {
35
- "expo-module-scripts": "^55.0.0"
35
+ "expo-module-scripts": "^55.0.2"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "expo": "*",
@@ -48,5 +48,5 @@
48
48
  "jest": {
49
49
  "preset": "expo-module-scripts"
50
50
  },
51
- "gitHead": "6b424b7810c62417bb53f7e3d4e18a25403dbfeb"
51
+ "gitHead": "7d7f6762fc6907c27a329953c682134a84410dea"
52
52
  }
@@ -1 +0,0 @@
1
- e0665412c6763b6587a69ffb3d2bd9e422f3644e
@@ -1 +0,0 @@
1
- ba81009986021bf0d85c0429e6bec0af53f674cceac91723833a66607ae466fd
@@ -1 +0,0 @@
1
- abc4be30e9c4ac11c50ff65aa041a9c29b4028095bb57160c497073904ae6cd94084e5cebfc11e725347c886aec51f1bb90df714cb62c559278439bb71dd36e2
@@ -1 +0,0 @@
1
- b01610185cfd49c57d5ac96a2fc0258864db84fed75af995675ed46c9b9f455a
@@ -1 +0,0 @@
1
- fb93a5e0f5b794215b78fd1fd90d0165be88d309120a87afc59e9fd4ce2fbb62a2356a435707627e6e98dcb40a6b9414650d973eaec76d4e93512f1e6a3d548e
@@ -1 +0,0 @@
1
- 22e7de7ae6262144082b50f13cbf44ad07b13d65
@@ -1 +0,0 @@
1
- 10187331293e29a9b1fa8d31ca11e60b4d25de66fefdcf48c0939c9ab70a3f23
@@ -1 +0,0 @@
1
- 0c21a8e0a37c59914deea6d34c27486e4b3aec4c47f2c088890fb7aa65497828b17167e2b4cc0c5fd6a5f753bb76a3d1f98bfdfc57e900fe79b5b4b7ee706b77