@imgly/editor-react-native 1.85.0-rc.1 → 1.85.0

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
@@ -34,15 +34,24 @@ To keep up-to-date with the latest changes, visit [CHANGELOG](https://img.ly/doc
34
34
 
35
35
  React Native 0.87 introduced an experimental Swift Package Manager mode (`npx react-native spm`) — see the [React Native 0.87 announcement](https://reactnative.dev/blog/2026/08/11/react-native-0.87) and the [0.87.0 release notes](https://github.com/react/react-native/releases/tag/v0.87.0). This module dual-ships a SwiftPM manifest (`ios/Package.swift`) next to its podspec, so React Native's SPM autolinking resolves it out of the box. CocoaPods currently remains the default integration path; the React Native team does not recommend the SPM mode for production yet.
36
36
 
37
- The notes below describe React Native **0.87.0**. That is the version this
38
- support was built and verified against. We have not verified newer React Native
39
- versions, so we do not know whether these workarounds still apply there. React
40
- Native calls this mode experimental and can change its commands, flags, and
41
- generated layout in any release. Check the release notes of the React Native
42
- version you use.
37
+ Expo SDK 58 supports this mode too. Set `"experiments": { "swiftPackageManager": true }`
38
+ under `expo` in `app.json`, add `expo-constants` as a direct dependency with
39
+ `npx expo install expo-constants`, then run `npx expo prebuild -p ios`. Without the direct
40
+ dependency, a package manager that does not hoist `expo-constants`, such as npm 10, installs it
41
+ under `expo`, and the first build fails with `expo-constants could not be resolved`. If you add the
42
+ dependency after a prebuild, run `npx expo prebuild -p ios --clean`. Expo SDK 58 needs iOS 16.4
43
+ or later, so an `ios.deploymentTarget` that you set in the app config, for example with
44
+ `expo-build-properties`, must be 16.4 or later.
43
45
 
44
- Note: React Native 0.87 pins its generated autolinking package to iOS 15 while this module requires iOS 16. Until the floor is derived from the linked libraries upstream, raise the `platforms:` entries in `react-native/scripts/spm/generate-spm-autolinking.js` to `.iOS(.v16)` (for example with `patch-package`).
46
+ We verified this support on React Native 0.87.0, 0.87.1 and 0.88.0, and on Expo SDK 58. We have not
47
+ verified newer versions. React Native calls this mode experimental and can change its commands,
48
+ flags, and generated layout in any release. Check the release notes of the React Native version you
49
+ use.
45
50
 
46
- Note: The app target itself must also build with an iOS 16 deployment target. The React Native template scaffolds a lower one, which works until your app code imports this module directly — for example for native customization — and then fails with a minimum-deployment-target error. Raise the **iOS Deployment Target** of the app target in Xcode to 16.0.
51
+ Note: Set the **iOS Deployment Target** of the app target in Xcode to 16.0 or later. The React Native template scaffolds iOS 15.1. On React Native 0.88, set it before you run `npx react-native spm`, or raise it later and run `npx react-native spm update`. React Native 0.88 takes the platform version of its generated packages from the app target ([iOS deployment target](https://github.com/react/react-native/blob/v0.88.0/packages/react-native/scripts/spm/__docs__/spm-scripts.md#ios-deployment-target)), so a lower target fails the build. On React Native 0.87, a lower target builds until your app code imports this module directly, for example for native customization. In an Expo app, `npx expo prebuild` writes the target from the app config, so set it there.
47
52
 
48
- Note: React Native 0.87.0 ships `hermes-compiler` for bytecode version 98 while its prebuilt SwiftPM Hermes runtime expects 99, so any build with an embedded JS bundle crashes at startup. Install `hermes-compiler@^260318099` until a React Native release aligns the two.
53
+ Note: React Native 0.87 pins its generated autolinking package to iOS 15 while this module requires iOS 16. On 0.87, raise the `platforms:` entries in `react-native/scripts/spm/generate-spm-autolinking.js` to `.iOS(.v16)` (for example with `patch-package`). React Native 0.88 needs no patch.
54
+
55
+ Note: React Native 0.87.0 downloads the Hermes runtime that the `latest-v1` tag of `hermes-compiler` names, while its own `hermes-compiler` emits bytecode version 98. When the two differ, any build with an embedded JS bundle crashes at startup. Update to React Native 0.87.1, which pins the runtime to the installed `hermes-compiler`. To stay on 0.87.0, install the `hermes-compiler` version that `npm view hermes-compiler@latest-v1 version` prints.
56
+
57
+ Note: On Expo SDK 58, this mode cannot build `expo-dev-client`: `expo-dev-launcher` and `expo-dev-menu` ship no Swift Package Manager manifest, so `npx expo prebuild` fails. Build the app without `expo-dev-client`.
@@ -171,7 +171,7 @@ repositories {
171
171
  }
172
172
 
173
173
  dependencies {
174
- api "ly.img:editor:1.85.0-rc.1"
174
+ api "ly.img:editor:1.85.0"
175
175
 
176
176
  implementation "androidx.activity:activity-ktx:1.9.0"
177
177
  implementation "androidx.appcompat:appcompat:1.7.1"
package/ios/Package.swift CHANGED
@@ -9,10 +9,12 @@
9
9
  // React Native's SPM autolinking consumes this manifest through a symlink at
10
10
  // <app>/ios/build/generated/autolinking/libs/EditorReactNative -> this
11
11
  // directory, so the relative package references below resolve against that
12
- // location. This is React Native's documented contract for libraries that ship
13
- // their own manifest (react-native/scripts/spm/__doc__/spm-header-paths-contract.md);
14
- // the package and product must be named after the npm package
15
- // (@imgly/editor-react-native -> EditorReactNative).
12
+ // location. React Native documents this layout for libraries that ship their
13
+ // own manifest under "Self-managed community packages" in
14
+ // https://github.com/react/react-native/blob/v0.88.0/packages/react-native/scripts/spm/__docs__/spm-scripts.md
15
+ // The package and product must be named EditorReactNative. React Native 0.87
16
+ // derives that name from the npm package, and 0.88 reads it from
17
+ // `swiftpmConfig.name` in package.json, otherwise it uses the podspec name.
16
18
  //
17
19
  // The Objective-C++ bridge and the Swift implementation are separate targets
18
20
  // because SwiftPM cannot compile mixed-language targets (SE-0403). The bridge
@@ -23,28 +25,8 @@
23
25
  // hand-edit it. Its entry files are excluded from the target below because they
24
26
  // reference app-side symbols that do not exist in the module.
25
27
 
26
- import Foundation
27
28
  import PackageDescription
28
29
 
29
- // Single-source the version from package.json, like the podspec does, so
30
- // release automation bumps the IMG.LY dependency pin together with the
31
- // package version. React Native's autolinking references this manifest
32
- // through a symlink, so resolve it before walking up to the package root.
33
- let version: Version = {
34
- let packageJSON = URL(fileURLWithPath: #filePath)
35
- .resolvingSymlinksInPath()
36
- .deletingLastPathComponent()
37
- .deletingLastPathComponent()
38
- .appendingPathComponent("package.json")
39
- guard let data = try? Data(contentsOf: packageJSON),
40
- let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
41
- let versionString = json["version"] as? String,
42
- let version = Version(versionString) else {
43
- fatalError("Unable to read the package version from \(packageJSON.path).")
44
- }
45
- return version
46
- }()
47
-
48
30
  let package = Package(
49
31
  name: "EditorReactNative",
50
32
  platforms: [
@@ -57,7 +39,9 @@ let package = Package(
57
39
  .package(name: "ReactNative", path: "../../../../xcframeworks"),
58
40
  .package(name: "React-GeneratedCode", path: "../../../ios"),
59
41
  // Pinned exactly: the module and IMGLYUI are versioned in lockstep, matching the podspec.
60
- .package(url: "https://github.com/imgly/IMGLYUI-swift.git", exact: version),
42
+ // The release bump rewrites this text. Xcode's cache of the evaluated manifest ignores the
43
+ // files it reads, so a version read from package.json stays old after an upgrade.
44
+ .package(url: "https://github.com/imgly/IMGLYUI-swift.git", exact: "1.85.0"),
61
45
  ],
62
46
  targets: [
63
47
  .target(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/editor-react-native",
3
- "version": "1.85.0-rc.1",
3
+ "version": "1.85.0",
4
4
  "description": "CreativeEditor SDK for React Native - enable photo, video and design editing for your users on iOS and Android.",
5
5
  "react-native": "index.js",
6
6
  "source": "index.js",
@@ -45,5 +45,8 @@
45
45
  "android": {
46
46
  "javaPackageName": "ly.img.editor.reactnative.module"
47
47
  }
48
+ },
49
+ "swiftpmConfig": {
50
+ "name": "EditorReactNative"
48
51
  }
49
52
  }
@@ -96,7 +96,7 @@ export class EditorSettingsModel implements EditorSettings {
96
96
  * sources (stickers, filters, and more).
97
97
  */
98
98
  baseUri: string =
99
- 'https://cdn.img.ly/packages/imgly/cesdk-react-native/1.85.0-rc.1/assets';
99
+ 'https://cdn.img.ly/packages/imgly/cesdk-react-native/1.85.0/assets';
100
100
 
101
101
  /**
102
102
  * Unique ID tied to your application's user.