@koolbase/react-native 10.1.0 → 10.3.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/CHANGELOG.md +25 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/platform.js +7 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/platform.js +7 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,31 @@ adheres to [Semantic Versioning][semver].
|
|
|
7
7
|
[kac]: https://keepachangelog.com/en/1.1.0/
|
|
8
8
|
[semver]: https://semver.org/
|
|
9
9
|
|
|
10
|
+
## 10.3.0
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Analytics events carried no user unless the app called `identify()`.**
|
|
15
|
+
Nothing errored when it never did, so every event landed anonymous and
|
|
16
|
+
retention, funnels and per-user analysis were quietly worthless — found in
|
|
17
|
+
a real project as 53 events, 8 registered users, and not one event carrying
|
|
18
|
+
a user id. The SDK already knows who is signed in; it now says so. The
|
|
19
|
+
Flutter SDK fixed this in 11.2.0 and the TypeScript SDKs did not, until now.
|
|
20
|
+
|
|
21
|
+
`identify()` still wins for an app with its own identity system, and
|
|
22
|
+
`reset()` releases that override and falls back to the Koolbase session.
|
|
23
|
+
|
|
24
|
+
If you have been calling `identify()` yourself, nothing changes. If you have
|
|
25
|
+
not, your events will start carrying users — which is the point, though it
|
|
26
|
+
means your analytics before and after this version are not comparable.
|
|
27
|
+
|
|
28
|
+
## 10.2.0
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- The platform seam gains a locking contract. React Native satisfies it by
|
|
33
|
+
running the function: one process, one store, nothing to coordinate.
|
|
34
|
+
|
|
10
35
|
## 10.1.0
|
|
11
36
|
|
|
12
37
|
### Changed
|
package/dist/cjs/index.js
CHANGED
|
@@ -62,7 +62,7 @@ exports.Koolbase = {
|
|
|
62
62
|
_flags = new core_1.KoolbaseFlags(config, deviceId);
|
|
63
63
|
// Initialize analytics
|
|
64
64
|
if (config.analyticsEnabled !== false) {
|
|
65
|
-
_analytics = new core_1.KoolbaseAnalytics(config);
|
|
65
|
+
_analytics = new core_1.KoolbaseAnalytics(config, () => _auth?.currentUser?.id ?? null);
|
|
66
66
|
await _analytics.init(config.appVersion);
|
|
67
67
|
}
|
|
68
68
|
// Initialize messaging
|
package/dist/cjs/platform.js
CHANGED
|
@@ -38,6 +38,13 @@ function reactNativePlatform() {
|
|
|
38
38
|
os: String(react_native_1.Platform.OS),
|
|
39
39
|
version: String(react_native_1.Platform.Version),
|
|
40
40
|
},
|
|
41
|
+
// A React Native app is one process over its own storage. Two copies of
|
|
42
|
+
// the SDK cannot be racing over one AsyncStorage, so the in-process
|
|
43
|
+
// serialisation in offline-state is the whole answer.
|
|
44
|
+
locks: {
|
|
45
|
+
exclusive: (_name, fn) => fn(),
|
|
46
|
+
tryExclusive: async (_name, fn) => { await fn(); return { ran: true }; },
|
|
47
|
+
},
|
|
41
48
|
authStorage: () => ((0, auth_storage_js_1.isKeychainAvailable)() ? new auth_storage_js_1.SecureAuthStorage() : null),
|
|
42
49
|
};
|
|
43
50
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -44,7 +44,7 @@ export const Koolbase = {
|
|
|
44
44
|
_flags = new KoolbaseFlags(config, deviceId);
|
|
45
45
|
// Initialize analytics
|
|
46
46
|
if (config.analyticsEnabled !== false) {
|
|
47
|
-
_analytics = new KoolbaseAnalytics(config);
|
|
47
|
+
_analytics = new KoolbaseAnalytics(config, () => _auth?.currentUser?.id ?? null);
|
|
48
48
|
await _analytics.init(config.appVersion);
|
|
49
49
|
}
|
|
50
50
|
// Initialize messaging
|
package/dist/esm/platform.js
CHANGED
|
@@ -32,6 +32,13 @@ export function reactNativePlatform() {
|
|
|
32
32
|
os: String(Platform.OS),
|
|
33
33
|
version: String(Platform.Version),
|
|
34
34
|
},
|
|
35
|
+
// A React Native app is one process over its own storage. Two copies of
|
|
36
|
+
// the SDK cannot be racing over one AsyncStorage, so the in-process
|
|
37
|
+
// serialisation in offline-state is the whole answer.
|
|
38
|
+
locks: {
|
|
39
|
+
exclusive: (_name, fn) => fn(),
|
|
40
|
+
tryExclusive: async (_name, fn) => { await fn(); return { ran: true }; },
|
|
41
|
+
},
|
|
35
42
|
authStorage: () => (isKeychainAvailable() ? new SecureAuthStorage() : null),
|
|
36
43
|
};
|
|
37
44
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koolbase/react-native",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.3.0",
|
|
4
4
|
"description": "React Native SDK for Koolbase \u2014 auth, database, storage, realtime, feature flags, and functions in one package.",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"url": "https://github.com/koolbase/koolbase-react-native"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@koolbase/core": "10.
|
|
27
|
+
"@koolbase/core": "10.3.0"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@react-native-async-storage/async-storage": "^3.0.2",
|