@shortkitsdk/react-native 0.2.45 → 0.2.46

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.
Binary file
@@ -69,6 +69,10 @@ class ReactOverlayHost(context: Context) : FrameLayout(context), FeedOverlay {
69
69
  layout(left, top, right, bottom)
70
70
  }
71
71
 
72
+ /** Tracks the deferred measureAndLayoutSurfaceView post from configure() so it can be
73
+ * cancelled in onDetachedFromWindow before the stale dimensions are applied. */
74
+ private var configureLayoutRunnable: Runnable? = null
75
+
72
76
  /**
73
77
  * Fabric may suppress layout propagation to native child views inside
74
78
  * the SDK's RecyclerView cells. Override to force a manual layout pass.
@@ -238,7 +242,13 @@ class ReactOverlayHost(context: Context) : FrameLayout(context), FeedOverlay {
238
242
  }
239
243
  ShortKitBridge.shared?.emitEvent("onOverlayItemChanged", params)
240
244
  }
241
- // Pre-size the surface view
245
+ // Pre-size the surface view. Deferred to avoid calling sv.measure() synchronously
246
+ // during RecyclerView.onBindViewHolder — which can trigger Fabric to dispatch pending
247
+ // mount items (e.g. react-native-screens activityState updates) that commit fragment
248
+ // transactions re-entrantly, detaching the RecyclerView mid-layout and crashing with
249
+ // "Tmp detached view should be removed from RecyclerView before it can be recycled".
250
+ // Safe to defer: createSurfaceIfNeeded() already pre-sizes new surfaces, and onLayout
251
+ // re-pushes correct dimensions during the same layout pass for recycled ones.
242
252
  val parentView = parent as? android.view.View
243
253
  val w = if (width > 0) width
244
254
  else if (parentView != null && parentView.width > 0) parentView.width
@@ -246,7 +256,10 @@ class ReactOverlayHost(context: Context) : FrameLayout(context), FeedOverlay {
246
256
  val h = if (height > 0) height
247
257
  else if (parentView != null && parentView.height > 0) parentView.height
248
258
  else context.resources.displayMetrics.heightPixels
249
- measureAndLayoutSurfaceView(w, h)
259
+ configureLayoutRunnable?.let { layoutHandler.removeCallbacks(it) }
260
+ val r = Runnable { measureAndLayoutSurfaceView(w, h) }
261
+ configureLayoutRunnable = r
262
+ layoutHandler.post(r)
250
263
  }
251
264
 
252
265
  override fun activatePlayback() {
@@ -300,6 +313,8 @@ class ReactOverlayHost(context: Context) : FrameLayout(context), FeedOverlay {
300
313
 
301
314
  override fun onDetachedFromWindow() {
302
315
  super.onDetachedFromWindow()
316
+ configureLayoutRunnable?.let { layoutHandler.removeCallbacks(it) }
317
+ configureLayoutRunnable = null
303
318
  layoutHandler.removeCallbacks(layoutRunnable)
304
319
  // Cancel flow subscriptions to avoid emitting events for off-screen cells.
305
320
  // Do NOT stop the surface — keep JS alive so subscriptions persist across
@@ -8,32 +8,32 @@
8
8
  <key>BinaryPath</key>
9
9
  <string>ShortKitSDK.framework/ShortKitSDK</string>
10
10
  <key>LibraryIdentifier</key>
11
- <string>ios-arm64</string>
11
+ <string>ios-arm64_x86_64-simulator</string>
12
12
  <key>LibraryPath</key>
13
13
  <string>ShortKitSDK.framework</string>
14
14
  <key>SupportedArchitectures</key>
15
15
  <array>
16
16
  <string>arm64</string>
17
+ <string>x86_64</string>
17
18
  </array>
18
19
  <key>SupportedPlatform</key>
19
20
  <string>ios</string>
21
+ <key>SupportedPlatformVariant</key>
22
+ <string>simulator</string>
20
23
  </dict>
21
24
  <dict>
22
25
  <key>BinaryPath</key>
23
26
  <string>ShortKitSDK.framework/ShortKitSDK</string>
24
27
  <key>LibraryIdentifier</key>
25
- <string>ios-arm64_x86_64-simulator</string>
28
+ <string>ios-arm64</string>
26
29
  <key>LibraryPath</key>
27
30
  <string>ShortKitSDK.framework</string>
28
31
  <key>SupportedArchitectures</key>
29
32
  <array>
30
33
  <string>arm64</string>
31
- <string>x86_64</string>
32
34
  </array>
33
35
  <key>SupportedPlatform</key>
34
36
  <string>ios</string>
35
- <key>SupportedPlatformVariant</key>
36
- <string>simulator</string>
37
37
  </dict>
38
38
  </array>
39
39
  <key>CFBundlePackageType</key>
@@ -11,9 +11,9 @@
11
11
  <key>CFBundlePackageType</key>
12
12
  <string>FMWK</string>
13
13
  <key>CFBundleVersion</key>
14
- <string>0.2.45</string>
14
+ <string>0.2.46</string>
15
15
  <key>CFBundleShortVersionString</key>
16
- <string>0.2.45</string>
16
+ <string>0.2.46</string>
17
17
  <key>MinimumOSVersion</key>
18
18
  <string>16.0</string>
19
19
  </dict>
@@ -53531,7 +53531,7 @@
53531
53531
  "kind": "StringLiteral",
53532
53532
  "offset": 154,
53533
53533
  "length": 8,
53534
- "value": "\"0.2.45\""
53534
+ "value": "\"0.2.46\""
53535
53535
  },
53536
53536
  {
53537
53537
  "filePath": "\/Users\/michaelseleman\/shortkit\/swift_sdk\/Sources\/ShortKit\/ShortKit.swift",
@@ -10,11 +10,11 @@
10
10
  </data>
11
11
  <key>Info.plist</key>
12
12
  <data>
13
- u7j7pZRjQJaDhHv1/MOjq74VqQQ=
13
+ HFe8gphNyV4HnieYCOqvkvgE3bY=
14
14
  </data>
15
15
  <key>Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.abi.json</key>
16
16
  <data>
17
- 9BdFRkFoR7lgfXnYhDL389eJmwo=
17
+ SUdG/HxqdZ4xrQciGk0YP4IH5dg=
18
18
  </data>
19
19
  <key>Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.private.swiftinterface</key>
20
20
  <data>
@@ -50,7 +50,7 @@
50
50
  <dict>
51
51
  <key>hash2</key>
52
52
  <data>
53
- WALbUO/EvUJCytrq1Pf9m/N5otOWV4QoP+MHYYeW/sM=
53
+ maGtk3nXMXwSSS9I07IQx70kOJspiS/8npTQ661BsnE=
54
54
  </data>
55
55
  </dict>
56
56
  <key>Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.private.swiftinterface</key>
@@ -11,9 +11,9 @@
11
11
  <key>CFBundlePackageType</key>
12
12
  <string>FMWK</string>
13
13
  <key>CFBundleVersion</key>
14
- <string>0.2.45</string>
14
+ <string>0.2.46</string>
15
15
  <key>CFBundleShortVersionString</key>
16
- <string>0.2.45</string>
16
+ <string>0.2.46</string>
17
17
  <key>MinimumOSVersion</key>
18
18
  <string>16.0</string>
19
19
  </dict>
@@ -53531,7 +53531,7 @@
53531
53531
  "kind": "StringLiteral",
53532
53532
  "offset": 154,
53533
53533
  "length": 8,
53534
- "value": "\"0.2.45\""
53534
+ "value": "\"0.2.46\""
53535
53535
  },
53536
53536
  {
53537
53537
  "filePath": "\/Users\/michaelseleman\/shortkit\/swift_sdk\/Sources\/ShortKit\/ShortKit.swift",
@@ -53531,7 +53531,7 @@
53531
53531
  "kind": "StringLiteral",
53532
53532
  "offset": 154,
53533
53533
  "length": 8,
53534
- "value": "\"0.2.45\""
53534
+ "value": "\"0.2.46\""
53535
53535
  },
53536
53536
  {
53537
53537
  "filePath": "\/Users\/michaelseleman\/shortkit\/swift_sdk\/Sources\/ShortKit\/ShortKit.swift",
@@ -10,11 +10,11 @@
10
10
  </data>
11
11
  <key>Info.plist</key>
12
12
  <data>
13
- u7j7pZRjQJaDhHv1/MOjq74VqQQ=
13
+ HFe8gphNyV4HnieYCOqvkvgE3bY=
14
14
  </data>
15
15
  <key>Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
16
16
  <data>
17
- 9BdFRkFoR7lgfXnYhDL389eJmwo=
17
+ SUdG/HxqdZ4xrQciGk0YP4IH5dg=
18
18
  </data>
19
19
  <key>Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
20
20
  <data>
@@ -30,7 +30,7 @@
30
30
  </data>
31
31
  <key>Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
32
32
  <data>
33
- 9BdFRkFoR7lgfXnYhDL389eJmwo=
33
+ SUdG/HxqdZ4xrQciGk0YP4IH5dg=
34
34
  </data>
35
35
  <key>Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
36
36
  <data>
@@ -66,7 +66,7 @@
66
66
  <dict>
67
67
  <key>hash2</key>
68
68
  <data>
69
- WALbUO/EvUJCytrq1Pf9m/N5otOWV4QoP+MHYYeW/sM=
69
+ maGtk3nXMXwSSS9I07IQx70kOJspiS/8npTQ661BsnE=
70
70
  </data>
71
71
  </dict>
72
72
  <key>Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
@@ -94,7 +94,7 @@
94
94
  <dict>
95
95
  <key>hash2</key>
96
96
  <data>
97
- WALbUO/EvUJCytrq1Pf9m/N5otOWV4QoP+MHYYeW/sM=
97
+ maGtk3nXMXwSSS9I07IQx70kOJspiS/8npTQ661BsnE=
98
98
  </data>
99
99
  </dict>
100
100
  <key>Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shortkitsdk/react-native",
3
- "version": "0.2.45",
3
+ "version": "0.2.46",
4
4
  "description": "ShortKit React Native SDK — short-form video feed",
5
5
  "react-native": "src/index",
6
6
  "source": "src/index",