@trainstar/synchro-react-native 0.4.0-rc.2 → 0.4.0-rc.3

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
@@ -4,23 +4,22 @@ React Native TurboModule bridge for Synchro. The package wraps the native Swift
4
4
 
5
5
  ## Requirements
6
6
 
7
- - React Native `>=0.82.1 <0.84.0`, with its compatible React version.
7
+ - React Native `>=0.82.1 <0.89.0` and React `>=19.1.1 <20.0.0`.
8
+ - React Native `0.88.0` requires React `19.3.0` and Node `^22.13.0 || ^24.3.0 || >=26.0.0`.
8
9
  - React Native `0.82.1` needs the [fmt 12.1.0 backport](https://trainstar.github.io/synchro/reference/support-policy/#react-native-0821-fmt-backport) with Xcode 27.
9
- - React Native `0.83.10` contains the fmt correction.
10
10
  - Applications built with Xcode 27 must adopt the [UIKit scene lifecycle](https://developer.apple.com/documentation/uikit/transitioning-to-the-uikit-scene-based-life-cycle).
11
11
  - iOS `17.0+`
12
12
  - Android `minSdk 24`
13
- - Node `20.19.4+`
14
13
  - Android development and CI should use JDK `17`
15
14
 
16
15
  ## Installation
17
16
 
18
- Install the published package only after Synchro `0.4.0-rc.2` is available. Before that,
17
+ Install the published package only after Synchro `0.4.0-rc.3` is available. Before that,
19
18
  use the local artifact flow in
20
19
  [Client Consumption](https://trainstar.github.io/synchro/clients/consumption/).
21
20
 
22
21
  ```sh
23
- npm install @trainstar/synchro-react-native@0.4.0-rc.2
22
+ npm install @trainstar/synchro-react-native@0.4.0-rc.3
24
23
  ```
25
24
 
26
25
  Apply the delivered React Native CLI correction after each fresh npm install and
@@ -71,11 +70,11 @@ TypeScript build-info paths with its installed `fs-extra` literal operation.
71
70
  It rejects the current project directory and paths outside it before removal.
72
71
  It does not change compilation or TypeScript generation.
73
72
 
74
- Before you run `pod install`, add these published Synchro `0.4.0-rc.2` dependencies to the
73
+ Before you run `pod install`, add these published Synchro `0.4.0-rc.3` dependencies to the
75
74
  application `ios/Podfile`:
76
75
 
77
76
  ```ruby
78
- pod 'Synchro', :git => 'https://github.com/trainstar/synchro.git', :tag => 'v0.4.0-rc.2'
77
+ pod 'Synchro', :git => 'https://github.com/trainstar/synchro.git', :tag => 'v0.4.0-rc.3'
79
78
  pod 'GRDB.swift', :git => 'https://github.com/groue/GRDB.swift.git', :tag => 'v7.8.0'
80
79
  ```
81
80
 
@@ -265,7 +264,7 @@ When one mutation in a group does not apply, the server applies no mutation of t
265
264
 
266
265
  After a failed group with a conflict, local state holds the server row for the conflicting member. It holds local values for every other member. The SDK does not revert those local values. Use `inspectRejectedMutations()` to find them and write new intent.
267
266
 
268
- The atomic API requires the Synchro `0.4.0-rc.2` extension and adapter. Use this deployment order:
267
+ The atomic API requires the Synchro `0.4.0-rc.3` extension and adapter. Use this deployment order:
269
268
 
270
269
  1. Install the `0.4.0` extension and adapter on the server.
271
270
  2. Release the client code that calls `atomicWriteTransaction()`.
@@ -295,8 +294,9 @@ The iOS schema bridge rejects malformed JSON with the existing `UNKNOWN` error c
295
294
 
296
295
  ## Development
297
296
 
298
- The published package accepts Node `20.19.4` or later. Repository development
299
- uses the Node `22.20.0` pin in `.nvmrc`.
297
+ The published package requires Node `20.19.4` or later.
298
+ React Native `0.88.0` adds the higher Node requirement listed above.
299
+ Repository development uses the Node `22.20.0` pin in `.nvmrc`.
300
300
 
301
301
  ```sh
302
302
  make lint-rn
@@ -16,6 +16,7 @@ Pod::Spec.new do |s|
16
16
  s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"
17
17
  s.private_header_files = "ios/**/*.h"
18
18
  s.compiler_flags = "-Werror=protocol"
19
+ s.libraries = "c++"
19
20
 
20
21
  s.dependency "Synchro", "= #{s.version}"
21
22
 
@@ -32,7 +32,7 @@ apply plugin: "kotlin-android"
32
32
 
33
33
  apply plugin: "com.facebook.react"
34
34
 
35
- def defaultSynchroVersion = "0.4.0-rc.2"
35
+ def defaultSynchroVersion = "0.4.0-rc.3"
36
36
  def resolvedSynchroVersion = findProperty("synchroVersion")?.toString() ?: defaultSynchroVersion
37
37
 
38
38
  android {
@@ -407,10 +407,7 @@ class SynchroModuleTransactionTest {
407
407
  }
408
408
 
409
409
  /**
410
- * RN 0.83 makes ReactApplicationContext abstract. BridgeReactContext is its concrete
411
- * @VisibleForTesting subclass. Its legacy-architecture assertion is inert only because the pinned
412
- * react-android 0.83.0 debug artifact sets UNSTABLE_ENABLE_MINIFY_LEGACY_ARCHITECTURE to false.
413
- * This context runs no JavaScript, so these tests do not cover the bridgeless JavaScript host.
410
+ * This context exercises native SQLite calls. The application tests verify JavaScript dispatch.
414
411
  */
415
412
  @Suppress("DEPRECATION")
416
413
  internal fun bridgeTestContext(context: android.content.Context): BridgeReactContext = BridgeReactContext(context)
@@ -442,14 +439,14 @@ private class RecordingPromise(val name: String) : Promise {
442
439
  }
443
440
 
444
441
  override fun resolve(value: Any?) = record { resolved.add(value) }
445
- override fun reject(code: String, message: String?) = rejectWith(code, null)
446
- override fun reject(code: String, throwable: Throwable?) = rejectWith(code, throwable)
447
- override fun reject(code: String, message: String?, throwable: Throwable?) = rejectWith(code, throwable)
442
+ override fun reject(code: String?, message: String?) = rejectWith(code, null)
443
+ override fun reject(code: String?, throwable: Throwable?) = rejectWith(code, throwable)
444
+ override fun reject(code: String?, message: String?, throwable: Throwable?) = rejectWith(code, throwable)
448
445
  override fun reject(throwable: Throwable) = rejectWith(null, throwable)
449
446
  override fun reject(throwable: Throwable, userInfo: WritableMap) = rejectWith(null, throwable)
450
- override fun reject(code: String, userInfo: WritableMap) = rejectWith(code, null)
451
- override fun reject(code: String, throwable: Throwable?, userInfo: WritableMap) = rejectWith(code, throwable)
452
- override fun reject(code: String, message: String?, userInfo: WritableMap) = rejectWith(code, null)
447
+ override fun reject(code: String?, userInfo: WritableMap) = rejectWith(code, null)
448
+ override fun reject(code: String?, throwable: Throwable?, userInfo: WritableMap) = rejectWith(code, throwable)
449
+ override fun reject(code: String?, message: String?, userInfo: WritableMap) = rejectWith(code, null)
453
450
  override fun reject(code: String?, message: String?, throwable: Throwable?, userInfo: WritableMap?) =
454
451
  rejectWith(code, throwable)
455
452