@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 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
@@ -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
@@ -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.1.0",
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.1.0"
27
+ "@koolbase/core": "10.3.0"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "@react-native-async-storage/async-storage": "^3.0.2",