Skip to content

Commit f28a769

Browse files
feat: native shimmer and image loading redesign (#3467)
## 🎯 Goal In this PR, we redesign the implementation of `ImageLoadingIndicator` to present as a gradient shimmer with an activity indicator. Since we tried a couple of approaches (one with `LinearGradient` from `RNSVG`), at the end we settled for a purely native implementation for performance reasons. Having that many animated views be potentially active on the screen tanks scrolling performance of the `MessageList` (i.e a lot of images loading, perhaps with poor network conditions if they aren't cached). The shimmer is Fabric only, lives in shared native sources, and is exposed through the native handler registration flow for consistent integration across the current SDK setup. Visuals and behaviour are aligned between Android and iOS, keeping a single moving shimmer gradient, and tuning width/shape/alpha for a smoother effect closer to the previous output. For packaging and local development flow, native source sync is now driven from `shared-native` as the source of truth so local dev and release packaging stay aligned, with build/script flow updated so copies refresh automatically when running the sample app. I'm not yet sure this is the correct approach, but since this is relatively new as we didn't have that many native implementations in the SDK in the past it'll have to do for now and we'll of course refine it as we go on. Just for reference, the native shimmer implementation improves: - Scrolling on Android by about 30-40 FPS (yes, really) - Scrolling on iOS by about 10 FPS (it was fine-ish before as well) compared to a `LinearGradient` and `Animated.View` approach for rendering a shimmer. TODO: - [x] Write docs for the native side - [x] Some additional cleanup - [x] Maybe tweak/polish the shimmer/gradient a little bit more - [x] Consolidate where we copy resources from (probably one folder for the shared stuff, and we always copy from there) so that future native implementations are trivial to add and all of the tooling works - [x] Have another run at the `build.gradle` copying edge cases, I think this can be done simpler ## 🛠 Implementation details <!-- Provide a description of the implementation --> ## 🎨 UI Changes <!-- Add relevant screenshots --> <details> <summary>iOS</summary> <table> <thead> <tr> <td>Before</td> <td>After</td> </tr> </thead> <tbody> <tr> <td> <!--<img src="" /> --> </td> <td> <!--<img src="" /> --> </td> </tr> </tbody> </table> </details> <details> <summary>Android</summary> <table> <thead> <tr> <td>Before</td> <td>After</td> </tr> </thead> <tbody> <tr> <td> <!--<img src="" /> --> </td> <td> <!--<img src="" /> --> </td> </tr> </tbody> </table> </details> ## 🧪 Testing <!-- Explain how this change can be tested (or why it can't be tested) --> ## ☑️ Checklist - [ ] I have signed the [Stream CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform) (required) - [ ] PR targets the `develop` branch - [ ] Documentation is updated - [ ] New code is tested in main example apps, including all possible scenarios - [ ] SampleApp iOS and Android - [ ] Expo iOS and Android --------- Co-authored-by: Khushal Agarwal <khushal.agarwal987@gmail.com>
1 parent 239a6be commit f28a769

File tree

59 files changed

+1818
-424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1818
-424
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ index.android.bundle
2323
*.app
2424
*.DSYM.zip
2525
**/metrics/
26+
package/shared-native/.sync-state/

examples/ExpoMessaging/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
"version": "1.0.0",
44
"main": "expo-router/entry",
55
"scripts": {
6+
"sync-native": "bash ../../package/scripts/reconcile-shared-native.sh expo-package && bash ../../package/scripts/sync-shared-native.sh expo-package",
7+
"prestart": "yarn sync-native",
8+
"preandroid": "yarn sync-native",
9+
"preios": "yarn sync-native",
610
"start": "expo start --dev-client",
711
"android": "expo run:android",
812
"ios": "expo run:ios",
@@ -44,6 +48,7 @@
4448
"react-native-safe-area-context": "~5.6.0",
4549
"react-native-screens": "~4.16.0",
4650
"react-native-svg": "15.12.1",
51+
"react-native-teleport": "^1.0.2",
4752
"react-native-worklets": "0.5.1",
4853
"stream-chat-expo": "link:../../package/expo-package",
4954
"stream-chat-react-native-core": "link:../../package"

examples/ExpoMessaging/yarn.lock

Lines changed: 27 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,7 +1533,15 @@
15331533
resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.4.tgz#9d5b4b6f23309260a12856cb574c5e64e6c133f7"
15341534
integrity sha512-6m8+P+dE/RPl4OPzjTxcTbQ0rGeRyeTvAi9KwIffBVCiAMKrfXfLZaqD1F+m8t4B5/Q5aHsMozOgirkH1F5oMQ==
15351535

1536-
"@gorhom/bottom-sheet@^5.1.6", "@gorhom/bottom-sheet@^5.1.8":
1536+
"@gorhom/bottom-sheet@5.1.8":
1537+
version "5.1.8"
1538+
resolved "https://registry.yarnpkg.com/@gorhom/bottom-sheet/-/bottom-sheet-5.1.8.tgz#65547917f5b1dae5a1291dabd4ea8bfee09feba4"
1539+
integrity sha512-QuYIVjn3K9bW20n5bgOSjvxBYoWG4YQXiLGOheEAMgISuoT6sMcA270ViSkkb0fenPxcIOwzCnFNuxmr739T9A==
1540+
dependencies:
1541+
"@gorhom/portal" "1.0.14"
1542+
invariant "^2.2.4"
1543+
1544+
"@gorhom/bottom-sheet@^5.1.6":
15371545
version "5.2.6"
15381546
resolved "https://registry.yarnpkg.com/@gorhom/bottom-sheet/-/bottom-sheet-5.2.6.tgz#5f2045f6ca965383afe39f7dfa3afad1502b7467"
15391547
integrity sha512-vmruJxdiUGDg+ZYcDmS30XDhq/h/+QkINOI5LY/uGjx8cPGwgJW0H6AB902gNTKtccbiKe/rr94EwdmIEz+LAQ==
@@ -4256,22 +4264,6 @@ json5@^2.2.3:
42564264
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
42574265
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
42584266

4259-
jsonwebtoken@^9.0.2:
4260-
version "9.0.2"
4261-
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3"
4262-
integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==
4263-
dependencies:
4264-
jws "^3.2.2"
4265-
lodash.includes "^4.3.0"
4266-
lodash.isboolean "^3.0.3"
4267-
lodash.isinteger "^4.0.4"
4268-
lodash.isnumber "^3.0.3"
4269-
lodash.isplainobject "^4.0.6"
4270-
lodash.isstring "^4.0.1"
4271-
lodash.once "^4.0.0"
4272-
ms "^2.1.1"
4273-
semver "^7.5.4"
4274-
42754267
jsonwebtoken@^9.0.3:
42764268
version "9.0.3"
42774269
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#6cd57ab01e9b0ac07cb847d53d3c9b6ee31f7ae2"
@@ -4288,15 +4280,6 @@ jsonwebtoken@^9.0.3:
42884280
ms "^2.1.1"
42894281
semver "^7.5.4"
42904282

4291-
jwa@^1.4.1:
4292-
version "1.4.2"
4293-
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.2.tgz#16011ac6db48de7b102777e57897901520eec7b9"
4294-
integrity sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==
4295-
dependencies:
4296-
buffer-equal-constant-time "^1.0.1"
4297-
ecdsa-sig-formatter "1.0.11"
4298-
safe-buffer "^5.0.1"
4299-
43004283
jwa@^2.0.1:
43014284
version "2.0.1"
43024285
resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804"
@@ -4306,14 +4289,6 @@ jwa@^2.0.1:
43064289
ecdsa-sig-formatter "1.0.11"
43074290
safe-buffer "^5.0.1"
43084291

4309-
jws@^3.2.2:
4310-
version "3.2.2"
4311-
resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
4312-
integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
4313-
dependencies:
4314-
jwa "^1.4.1"
4315-
safe-buffer "^5.0.1"
4316-
43174292
jws@^4.0.1:
43184293
version "4.0.1"
43194294
resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.1.tgz#07edc1be8fac20e677b283ece261498bd38f0690"
@@ -4448,6 +4423,11 @@ lodash-es@4.17.21:
44484423
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
44494424
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
44504425

4426+
lodash-es@4.17.23:
4427+
version "4.17.23"
4428+
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.23.tgz#58c4360fd1b5d33afc6c0bbd3d1149349b1138e0"
4429+
integrity sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==
4430+
44514431
lodash.camelcase@^4.3.0:
44524432
version "4.3.0"
44534433
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
@@ -5555,6 +5535,11 @@ react-native-svg@15.12.1:
55555535
css-tree "^1.1.3"
55565536
warn-once "0.1.1"
55575537

5538+
react-native-teleport@^1.0.2:
5539+
version "1.0.2"
5540+
resolved "https://registry.yarnpkg.com/react-native-teleport/-/react-native-teleport-1.0.2.tgz#f5bed0534acba29787a6e3707513eed91cb4f8ea"
5541+
integrity sha512-+DE9N9JMxulUZwREDPBYl10Urmqocvzw++/BXzC34YzaHaDfbmgvr/KFJjGYoZhJUMcOJjBC9OxESH6+yzvxJA==
5542+
55585543
react-native-url-polyfill@^2.0.0:
55595544
version "2.0.0"
55605545
resolved "https://registry.yarnpkg.com/react-native-url-polyfill/-/react-native-url-polyfill-2.0.0.tgz#db714520a2985cff1d50ab2e66279b9f91ffd589"
@@ -6052,10 +6037,10 @@ stream-chat-react-native-core@8.1.0:
60526037
version "0.0.0"
60536038
uid ""
60546039

6055-
stream-chat@^9.27.2:
6056-
version "9.27.2"
6057-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.27.2.tgz#5b41173e513f3606c47c93f391693b589e663968"
6058-
integrity sha512-OdALDzg8lO8CAdl8deydJ1+O4wJ7mM9dPLeCwDppq/OQ4aFIS9X38P+IdXPcOCsgSS97UoVUuxD2/excC5PEeg==
6040+
stream-chat@^9.35.1:
6041+
version "9.35.1"
6042+
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.35.1.tgz#d828854a9c27ea7e45e6642d9107966c6606f552"
6043+
integrity sha512-649sgO7+llFuW+y/Ja0K4d94aUC+EMxYUVo5mq5AFGT86vUAIXmRIMVHYHA/jw4MYoqfWAFrDK6L9Rhyn/eMkQ==
60596044
dependencies:
60606045
"@types/jsonwebtoken" "^9.0.8"
60616046
"@types/ws" "^8.5.14"
@@ -6068,17 +6053,17 @@ stream-chat@^9.27.2:
60686053
ws "^8.18.1"
60696054

60706055
stream-chat@^9.9.0:
6071-
version "9.20.3"
6072-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.20.3.tgz#5f47d6f46d146202c743282f5fb7350f4a640922"
6073-
integrity sha512-206Lea0ZAVWbfYZkIwLG5m+++ELD3f8EAEL/YzbMDL++E2vU2WhQ2d1HNb1ROXURZUF0Sy845htTw1rwnahomw==
6056+
version "9.36.0"
6057+
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.36.0.tgz#154e0d6bdf8b15e97a6d9718c655d2ede34f6f25"
6058+
integrity sha512-D1b5THI4UbnvsEcJyUv1tUIgK6lCYT+aStrV+87mdrM9owX+WUpKaWFkxz/Ug+DOrJtTazvfuzvpJMyDi82NXA==
60746059
dependencies:
60756060
"@types/jsonwebtoken" "^9.0.8"
60766061
"@types/ws" "^8.5.14"
60776062
axios "^1.12.2"
60786063
base64-js "^1.5.1"
60796064
form-data "^4.0.4"
60806065
isomorphic-ws "^5.0.0"
6081-
jsonwebtoken "^9.0.2"
6066+
jsonwebtoken "^9.0.3"
60826067
linkifyjs "^4.3.2"
60836068
ws "^8.18.1"
60846069

examples/SampleApp/fastlane/Fastfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ lane :frameworks_sizes do
184184
yarn_all
185185
sh('yarn build')
186186
sh('yarn minify-bundle')
187+
187188
js_bundle_size = file_size(path: 'package/lib/module/bundle.min.js')
188189
{ js_bundle_size: js_bundle_size }
189190
end

examples/SampleApp/ios/Podfile.lock

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,6 @@ PODS:
289289
- React-RCTText (= 0.80.2)
290290
- React-RCTVibration (= 0.80.2)
291291
- React-callinvoker (0.80.2)
292-
- React-Codegen (0.1.0)
293292
- React-Core (0.80.2):
294293
- boost
295294
- DoubleConversion
@@ -1920,6 +1919,35 @@ PODS:
19201919
- ReactCommon/turbomodule/core
19211920
- SocketRocket
19221921
- Yoga
1922+
- react-native-blur (4.4.1):
1923+
- boost
1924+
- DoubleConversion
1925+
- fast_float
1926+
- fmt
1927+
- glog
1928+
- hermes-engine
1929+
- RCT-Folly
1930+
- RCT-Folly/Fabric
1931+
- RCTRequired
1932+
- RCTTypeSafety
1933+
- React-Core
1934+
- React-debug
1935+
- React-Fabric
1936+
- React-featureflags
1937+
- React-graphics
1938+
- React-hermes
1939+
- React-ImageManager
1940+
- React-jsi
1941+
- React-NativeModulesApple
1942+
- React-RCTFabric
1943+
- React-renderercss
1944+
- React-rendererdebug
1945+
- React-utils
1946+
- ReactCodegen
1947+
- ReactCommon/turbomodule/bridging
1948+
- ReactCommon/turbomodule/core
1949+
- SocketRocket
1950+
- Yoga
19231951
- react-native-cameraroll (7.10.0):
19241952
- boost
19251953
- DoubleConversion
@@ -2722,6 +2750,35 @@ PODS:
27222750
- ReactCommon/turbomodule/core
27232751
- SocketRocket
27242752
- Yoga
2753+
- RNCClipboard (1.16.3):
2754+
- boost
2755+
- DoubleConversion
2756+
- fast_float
2757+
- fmt
2758+
- glog
2759+
- hermes-engine
2760+
- RCT-Folly
2761+
- RCT-Folly/Fabric
2762+
- RCTRequired
2763+
- RCTTypeSafety
2764+
- React-Core
2765+
- React-debug
2766+
- React-Fabric
2767+
- React-featureflags
2768+
- React-graphics
2769+
- React-hermes
2770+
- React-ImageManager
2771+
- React-jsi
2772+
- React-NativeModulesApple
2773+
- React-RCTFabric
2774+
- React-renderercss
2775+
- React-rendererdebug
2776+
- React-utils
2777+
- ReactCodegen
2778+
- ReactCommon/turbomodule/bridging
2779+
- ReactCommon/turbomodule/core
2780+
- SocketRocket
2781+
- Yoga
27252782
- RNFastImage (8.6.3):
27262783
- React-Core
27272784
- SDWebImage (~> 5.11.1)
@@ -3146,7 +3203,6 @@ PODS:
31463203
- RCT-Folly/Fabric
31473204
- RCTRequired
31483205
- RCTTypeSafety
3149-
- React-Codegen
31503206
- React-Core
31513207
- React-debug
31523208
- React-Fabric
@@ -3275,6 +3331,7 @@ DEPENDENCIES:
32753331
- React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
32763332
- React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
32773333
- react-native-blob-util (from `../node_modules/react-native-blob-util`)
3334+
- "react-native-blur (from `../node_modules/@react-native-community/blur`)"
32783335
- "react-native-cameraroll (from `../node_modules/@react-native-camera-roll/camera-roll`)"
32793336
- "react-native-document-picker (from `../node_modules/@react-native-documents/picker`)"
32803337
- "react-native-geolocation (from `../node_modules/@react-native-community/geolocation`)"
@@ -3315,6 +3372,7 @@ DEPENDENCIES:
33153372
- ReactCodegen (from `build/generated/ios`)
33163373
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
33173374
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
3375+
- "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)"
33183376
- RNFastImage (from `../node_modules/react-native-fast-image`)
33193377
- "RNFBApp (from `../node_modules/@react-native-firebase/app`)"
33203378
- "RNFBMessaging (from `../node_modules/@react-native-firebase/messaging`)"
@@ -3351,7 +3409,6 @@ SPEC REPOS:
33513409
- nanopb
33523410
- PromisesObjC
33533411
- PromisesSwift
3354-
- React-Codegen
33553412
- SDWebImage
33563413
- SDWebImageWebPCoder
33573414
- SocketRocket
@@ -3446,6 +3503,8 @@ EXTERNAL SOURCES:
34463503
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
34473504
react-native-blob-util:
34483505
:path: "../node_modules/react-native-blob-util"
3506+
react-native-blur:
3507+
:path: "../node_modules/@react-native-community/blur"
34493508
react-native-cameraroll:
34503509
:path: "../node_modules/@react-native-camera-roll/camera-roll"
34513510
react-native-document-picker:
@@ -3526,6 +3585,8 @@ EXTERNAL SOURCES:
35263585
:path: "../node_modules/react-native/ReactCommon"
35273586
RNCAsyncStorage:
35283587
:path: "../node_modules/@react-native-async-storage/async-storage"
3588+
RNCClipboard:
3589+
:path: "../node_modules/@react-native-clipboard/clipboard"
35293590
RNFastImage:
35303591
:path: "../node_modules/react-native-fast-image"
35313592
RNFBApp:
@@ -3584,13 +3645,12 @@ SPEC CHECKSUMS:
35843645
op-sqlite: a7e46cfdaebeef219fd0e939332967af9fe6d406
35853646
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
35863647
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
3587-
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
3648+
RCT-Folly: 59ec0ac1f2f39672a0c6e6cecdd39383b764646f
35883649
RCTDeprecation: 300c5eb91114d4339b0bb39505d0f4824d7299b7
35893650
RCTRequired: e0446b01093475b7082fbeee5d1ef4ad1fe20ac4
35903651
RCTTypeSafety: cb974efcdc6695deedf7bf1eb942f2a0603a063f
35913652
React: e7a4655b09d0e17e54be188cc34c2f3e2087318a
35923653
React-callinvoker: 62192daaa2f30c3321fc531e4f776f7b09cf892b
3593-
React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a
35943654
React-Core: b23cdaaa9d76389d958c06af3c57aa6ad611c542
35953655
React-CoreModules: 8e0f562e5695991e455abbebe1e968af71d52553
35963656
React-cxxreact: 6ccbe0cc2c652b29409b14b23cfb3cd74e084691
@@ -3619,6 +3679,7 @@ SPEC CHECKSUMS:
36193679
React-Mapbuffer: 8f620d1794c6b59a8c3862c3ae820a2e9e6c9bb0
36203680
React-microtasksnativemodule: dcf5321c9a41659a6718df8a5f202af1577c6825
36213681
react-native-blob-util: a511afccff6511544ebf56928e6afdf837b037a7
3682+
react-native-blur: ecdc987ab8d8fba95abef14551f033376872d0a6
36223683
react-native-cameraroll: 8c3ba9b6f511cf645778de19d5039b61d922fdfb
36233684
react-native-document-picker: b37cf6660ad9087b782faa78a1e67687fac15bfd
36243685
react-native-geolocation: b7f68b8c04e36ee669c630dbc48dd42cf93a0a41
@@ -3659,6 +3720,7 @@ SPEC CHECKSUMS:
36593720
ReactCodegen: 4928682e20747464165effacc170019a18da953c
36603721
ReactCommon: ec1cdf708729338070f8c4ad746768a782fd9eb1
36613722
RNCAsyncStorage: f30b3a83064e28b0fc46f1fbd3834589ed64c7b9
3723+
RNCClipboard: 8e5237c79dafacea5b7adf4c3ab39a4236b5ef7e
36623724
RNFastImage: 462a183c4b0b6b26fdfd639e1ed6ba37536c3b87
36633725
RNFBApp: db9c2e6d36fe579ab19b82c0a4a417ff7569db7e
36643726
RNFBMessaging: de62448d205095171915d622ed5fb45c2be5e075
@@ -3673,7 +3735,7 @@ SPEC CHECKSUMS:
36733735
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
36743736
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
36753737
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
3676-
stream-chat-react-native: f42e234640869e0eafcdd354441414ad1818b9fe
3738+
stream-chat-react-native: 3a5d663e1d32afb54a3afba3691f08be65a20374
36773739
Teleport: c089481dd2bb020e3dced39b7f8849b93d1499f6
36783740
Yoga: ce248fb32065c9b00451491b06607f1c25b2f1ed
36793741

examples/SampleApp/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
"url": "https://github.com/GetStream/stream-chat-react-native.git"
88
},
99
"scripts": {
10+
"sync-native": "bash ../../package/scripts/reconcile-shared-native.sh native-package && bash ../../package/scripts/sync-shared-native.sh native-package",
11+
"preandroid": "yarn sync-native",
1012
"android": "react-native run-android",
13+
"preios": "yarn sync-native",
1114
"ios": "react-native run-ios",
15+
"prestart": "yarn sync-native",
1216
"start": "react-native start",
1317
"test": "jest",
1418
"lint": "eslint .",

examples/TypeScriptMessaging/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
"version": "0.0.1",
44
"private": true,
55
"scripts": {
6+
"sync-native": "bash ../../package/scripts/reconcile-shared-native.sh native-package && bash ../../package/scripts/sync-shared-native.sh native-package",
7+
"preandroid": "yarn sync-native",
68
"android": "react-native run-android",
9+
"preios": "yarn sync-native",
710
"ios": "react-native run-ios",
11+
"prestart": "yarn sync-native",
812
"start": "react-native start",
913
"test": "jest",
1014
"lint": "eslint .",

package/expo-package/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# android
2+
android/build
3+
android/src/main/java/com/streamchatreactnative/shared
4+
5+
# ios
6+
ios/build
7+
ios/shared

0 commit comments

Comments
 (0)