Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Lifecycle events miss context information #527

Closed
BerniWittmann opened this issue May 5, 2022 · 9 comments · Fixed by #532
Closed

Initial Lifecycle events miss context information #527

BerniWittmann opened this issue May 5, 2022 · 9 comments · Fixed by #532
Labels
bug Something isn't working 🚧 Work In Progress

Comments

@BerniWittmann
Copy link

Aswe want to setup ads tracking with google ads we need to have some device context data set on the initial lifecycle events (especially Application Installed and Application Opened). However this information is missing most of the time (from my observations not all of the time, but most of them). I have found #449 which describes the same issue with a beta version, but I am on the latest version and it still happens for me.

  • analytics-react-native version: 2.1.12
  • Integrations versions (if used): idfa: 0.2.1
  • React Native version: 0.63.3
  • iOS or Android or both?: both

Steps to reproduce

have trackAppLifecycleEvents: true, activated in the client and reinstall and open app, while checking the debugger on segment.com

Expected behavior

{
  "anonymousId": "xxxx",
  "context": {
    "app": {
      "build": "0",
      "name": "App",
      "namespace": "app.name",
      "version": "1.0.0"
    },
    "device": {
      "adTrackingEnabled": false,
      "advertisingId": "xxxx",
      "trackingStatus": "notDetermined",
      "id": "xxxx",
      "manufacturer": "Apple",
      "model": "x86_64",
      "name": "i***",
      "type": "ios"
    },
    "library": {
      "name": "@segment/analytics-react-native",
      "version": "2.1.12"
    },
    "os": {
      "version": "15.4"
    }
  },
  "event": "Application Opened",
  "integrations": {},
  "messageId": "xxx",
  "originalTimestamp": "2022-05-05T06:39:41.995Z",
  "properties": {
    "build": "0",
    "from_background": false,
    "version": "1.61.0"
  },
  "receivedAt": "2022-05-05T06:40:12.978Z",
  "sentAt": "2022-05-05T06:40:11.990Z",
  "timestamp": "2022-05-05T06:39:42.983Z",
  "type": "track",
  "writeKey": "xxxxx"
}

Actual behavior

{
  "anonymousId": "xxxx",
  "context": {
    "app": {
      "namespace": "app.name",
      "version": "1.0.0"
    },
    "device": {
      "adTrackingEnabled": false,
      "advertisingId": "xxxx",
      "trackingStatus": "notDetermined"
    },
    "library": {
      "name": "unknown",
      "version": "unknown"
    },
    "os": {
      "version": "15.4"
    }
  },
  "event": "Application Opened",
  "integrations": {},
  "messageId": "xxx",
  "originalTimestamp": "2022-05-05T06:39:41.995Z",
  "properties": {
    "build": "0",
    "from_background": false,
    "version": "1.61.0"
  },
  "receivedAt": "2022-05-05T06:40:12.978Z",
  "sentAt": "2022-05-05T06:40:11.990Z",
  "timestamp": "2022-05-05T06:39:42.983Z",
  "type": "track",
  "writeKey": "xxxxx"
}
@BerniWittmann BerniWittmann added the bug Something isn't working label May 5, 2022
@oscb
Copy link
Contributor

oscb commented May 5, 2022

@BerniWittmann Thanks for the report. I'm trying to repro this issue right now. Is this happening on the simulators or on device for you?

@BerniWittmann
Copy link
Author

@oscb Thanks for the quick response time. I can see it happen from simulators as well as running on a device

@oscb
Copy link
Contributor

oscb commented May 6, 2022

@BerniWittmann I haven't got a clear repro yet, but I have a strong idea of what might be causing this. I'm going to aim to get a fix for this soon, if all looks good it should be out by tomorrow

oscb added a commit that referenced this issue May 10, 2022
- awaitable dispatches to store `set`
- adds `onContextLoaded` callback for plugins that require device context being loaded during configuration. (Requested in [#524](#524))
- upgraded sovran to v0.2.7 (Adds awaitable dispatch)
- fixes [#527](#527) where `Application Installed/Opened` events might had not contained up to date context data as the store set could not be awaited before firing the events.
@oscb oscb linked a pull request May 10, 2022 that will close this issue
@oscb
Copy link
Contributor

oscb commented May 10, 2022

The change in PR #532 should address this.

I wasn't able to repro but I believe this was caused by a concurrency issue as the store updates were not awaitable before, the change guarantees the Application Opened/Installed events are always triggered after the context is actually available in the store.

@oscb oscb closed this as completed in #532 May 10, 2022
oscb added a commit that referenced this issue May 10, 2022
- awaitable dispatches to store set
- adds onContextLoaded callback for plugins that require device context being loaded during configuration. (Requested in #524)
- upgraded sovran to v0.2.7 (Adds awaitable dispatch)
- fixes #527 where Application Installed/Opened events might had not contained up to date context data as the store set could not be awaited before firing the events.
- chore: reconfigure commitlint
- chore: upgrade husky to v8
@BerniWittmann
Copy link
Author

@oscb Thank you very much for the quick turnaround. Just gave it a quick test and it looks good 👍

@i8ramin
Copy link

i8ramin commented May 19, 2022

Does the latest published version on npm (2.2.0) include this change? https://www.npmjs.com/package/@segment/analytics-react-native

@i8ramin
Copy link

i8ramin commented May 19, 2022

Also, i don't even see v2.2.0 as a tag in the repo. latest tagged version seems to be v2.1.12

@oscb
Copy link
Contributor

oscb commented May 19, 2022

@i8ramin v2.2.0 contains this change.
GHA created an incorrect tag, but it shows up in the releases.

@i8ramin
Copy link

i8ramin commented May 23, 2022

I am still experiencing inconsistent behavior here. Sometimes the device context information is there, sometimes it is not. I am observing this behavior with latest version (2.2.0) -- where the context.device does not include actual device information. Sample output:

    "device": {
      "adTrackingEnabled": true,
      "advertisingId": "CF8EAEA5-0000-481D-0000-25140DB49B96",
      "trackingStatus": "authorized"
    },

This is how I am setting up the library + plugins

import { createClient } from '@segment/analytics-react-native'
import { FacebookAppEventsPlugin } from '@segment/analytics-react-native-plugin-facebook-app-events'
import { FirebasePlugin } from '@segment/analytics-react-native-plugin-firebase'
import { IdfaPlugin } from '@segment/analytics-react-native-plugin-idfa'

const segmentClient = createClient({
  writeKey: process.env.ANALYTICS_WRITE_KEY as string,
  trackAppLifecycleEvents: true,
  trackDeepLinks: true,
  collectDeviceId: true,
  debug: true,
})

segmentClient.add({ plugin: new IdfaPlugin() })
segmentClient.add({ plugin: new FacebookAppEventsPlugin() })
segmentClient.add({ plugin: new FirebasePlugin() })

export default segmentClient
analytics-react-native version: 2.2.0
Integrations versions (if used): idfa: 0.2.1
React Native version: 0.64.3
iOS or Android or both?: ios

jezallan pushed a commit to uswitch/analytics-react-native that referenced this issue Jun 29, 2022
## @uswitch/analytics-react-native-v1.0.0 (2022-06-29)

### ⚠ BREAKING CHANGES

* We've improved iOS support for non-Cocoapods users. You do not need to follow these steps if you are using Cocoapods.

### Migration instructions

- Remove `Analytics.framework` from your Xcode project
- Remove `Analytics.framework` from `Embedded Binaries`
- Follow [Current instructions](#current-instructions)

### Current instructions
* **client:** We've dropped the chained configuration for an object one instead. This will make Analytics blend even better with tools like Prettier.

Before:
```js
analytics
    .configure()
        .using(Mixpanel, GoogleAnalytics)
        .recordScreenViews()
        .trackAppLifecycleEvents()
        .trackAttributionData()
        .android()
            .flushInterval(60)
            .disableDevicedId()
        .ios()
            .trackAdvertising()
            .trackDeepLinks()
    .setup("writeKey")
    .then(() =>
        console.log('Analytics is ready')
    )
    .catch(err =>
        console.error('Something went wrong', err)
    )
```

Now:
```js
analytics
    .setup('writeKey', {
        using: [Mixpanel, GoogleAnalytics],
        recordScreenViews: true,
        trackAppLifecycleEvents: true,
        trackAttributionData: true,

        android: {
            flushInterval: 60,
            collectDeviceId: false
        },
        ios: {
            trackAdvertising: true,
            trackDeepLinks: true
        }
    })
    .then(() =>
        console.log('Analytics is ready')
    )
    .catch(err =>
        console.error('Something went wrong', err)
    )
```

### Features

* Add AdvertisingId Plugin ([segmentio#574](https://github.com/uswitch/analytics-react-native/issues/574)) ([9f47e67](9f47e67))
* add analytics 2.0 ([segmentio#360](https://github.com/uswitch/analytics-react-native/issues/360)) ([829fc80](829fc80))
* add anonymousId logic to reset ([segmentio#475](https://github.com/uswitch/analytics-react-native/issues/475)) ([23baab4](23baab4))
* add deeplink referral application data ([segmentio#454](https://github.com/uswitch/analytics-react-native/issues/454)) ([dbfc267](dbfc267))
* add reset to plugins ([segmentio#490](https://github.com/uswitch/analytics-react-native/issues/490)) ([686f73f](686f73f))
* added destination metadata and internal timeline processing for destinatio plugins ([segmentio#477](https://github.com/uswitch/analytics-react-native/issues/477)) ([8b1df55](8b1df55))
* **android:** allow opt-out for new lifecycle methods ([segmentio#256](https://github.com/uswitch/analytics-react-native/issues/256)) ([8dbadad](8dbadad))
* **android:** allow passing integration options ([segmentio#184](https://github.com/uswitch/analytics-react-native/issues/184)) ([6845c67](6845c67))
* **anonymousid:** add a method to retrieve the anonymousId ([988f382](988f382))
* **client:** use object-based configuration ([segmentio#7](https://github.com/uswitch/analytics-react-native/issues/7)) ([6a281f4](6a281f4))
* **core:** add middlewares ([9aeafa3](9aeafa3))
* **core:** add native configuration method ([19c4fae](19c4fae))
* **core:** export TypeScript public interfaces ([9978cd7](9978cd7))
* **core:** http proxying via setup configuration ([segmentio#202](https://github.com/uswitch/analytics-react-native/issues/202)) ([40a3f5a](40a3f5a))
* Create Client Proxy Option ([segmentio#570](https://github.com/uswitch/analytics-react-native/issues/570)) ([eaeb940](eaeb940))
* createClient "storePersistor" option ([segmentio#549](https://github.com/uswitch/analytics-react-native/issues/549)) ([4b70e99](4b70e99))
* **integrations:** allow setting integration options ([13b663e](13b663e))
* **ios:** make idfa for ios external to analytics ([segmentio#210](https://github.com/uswitch/analytics-react-native/issues/210)) ([35f96a0](35f96a0))
* **ios:** set trackAdvertising=true by default on ios ([segmentio#82](https://github.com/uswitch/analytics-react-native/issues/82)) ([09e997b](09e997b))
* new onContextLoad events and awaitable context updates ([segmentio#532](https://github.com/uswitch/analytics-react-native/issues/532)) ([4508ad4](4508ad4)), closes [segmentio#524](https://github.com/uswitch/analytics-react-native/issues/524) [segmentio#527](https://github.com/uswitch/analytics-react-native/issues/527)
* plugins can now disable integrations by marking them as false in the event.integrations ([segmentio#496](https://github.com/uswitch/analytics-react-native/issues/496)) ([65c2371](65c2371))
* replacing redux with sovran ([segmentio#422](https://github.com/uswitch/analytics-react-native/issues/422)) ([2d69cc1](2d69cc1))

### Bug Fixes

* add fix for deviceId on android builds ([segmentio#405](https://github.com/uswitch/analytics-react-native/issues/405)) ([92c1fc0](92c1fc0))
* add override fix to ios modules ([segmentio#404](https://github.com/uswitch/analytics-react-native/issues/404)) ([8e47eb6](8e47eb6))
* **android:** bump android dependency ([segmentio#214](https://github.com/uswitch/analytics-react-native/issues/214)) ([acd0f2f](acd0f2f))
* **android:** bump deps and fix config issues ([segmentio#298](https://github.com/uswitch/analytics-react-native/issues/298)) ([5a2ed9b](5a2ed9b))
* **android:** defaultKotlinVersion ([segmentio#159](https://github.com/uswitch/analytics-react-native/issues/159)) ([54e90a3](54e90a3))
* **android:** fix crash when promise resolves in debug mode ([segmentio#267](https://github.com/uswitch/analytics-react-native/issues/267)) ([a0e21d9](a0e21d9))
* **android:** fixed context not passing thru ([segmentio#147](https://github.com/uswitch/analytics-react-native/issues/147)) ([cb1b412](cb1b412))
* **android:** parse android specific options correctly ([segmentio#187](https://github.com/uswitch/analytics-react-native/issues/187)) ([49e4815](49e4815))
* **android:** pull android tool versions from root project ([segmentio#12](https://github.com/uswitch/analytics-react-native/issues/12)) ([3f1eb3c](3f1eb3c)), closes [/github.com/frostney/react-native-create-library/blob/master/templates/android.js#L28](https://github.com/uswitch//github.com/frostney/react-native-create-library/blob/master/templates/android.js/issues/L28)
* appsflyer attribution ([segmentio#547](https://github.com/uswitch/analytics-react-native/issues/547)) ([494df24](494df24))
* **bridge:** fix duplicated analytics client improving errors ([segmentio#162](https://github.com/uswitch/analytics-react-native/issues/162)) ([28a981d](28a981d))
* **bridge:** fix p(r)omise typo ([segmentio#168](https://github.com/uswitch/analytics-react-native/issues/168)) ([d9794db](d9794db))
* **bridge:** improve missing native module error ([segmentio#5](https://github.com/uswitch/analytics-react-native/issues/5)) ([0a03617](0a03617))
* change React dependency to React-Core ([segmentio#254](https://github.com/uswitch/analytics-react-native/issues/254)) ([c51e689](c51e689))
* **client:** copy package with version ([2c223dd](2c223dd))
* **config:** pass user-supplied context for analytics calls ([segmentio#188](https://github.com/uswitch/analytics-react-native/issues/188)) ([7429567](7429567))
* **context:** fix `context` `name` and `version` ([09f0b28](09f0b28))
* **core:** fix duplicate client error in dev mode ([segmentio#51](https://github.com/uswitch/analytics-react-native/issues/51)) ([cb66749](cb66749)), closes [segmentio#16](https://github.com/uswitch/analytics-react-native/issues/16) [segmentio#15](https://github.com/uswitch/analytics-react-native/issues/15)
* **core:** fix TypeScript typings ([fe7933c](fe7933c)), closes [segmentio#11](https://github.com/uswitch/analytics-react-native/issues/11)
* **core:** React-Native 0.59 Support ([segmentio#50](https://github.com/uswitch/analytics-react-native/issues/50)) ([a78c94e](a78c94e)), closes [segmentio#46](https://github.com/uswitch/analytics-react-native/issues/46) [segmentio#44](https://github.com/uswitch/analytics-react-native/issues/44)
* custom event integrations override support, refactor integration merge logic ([segmentio#379](https://github.com/uswitch/analytics-react-native/issues/379)) ([d0b8fbf](d0b8fbf))
* deepmerge device context on update ([segmentio#543](https://github.com/uswitch/analytics-react-native/issues/543)) ([5878043](5878043))
* don't call stringValue of strings ([segmentio#253](https://github.com/uswitch/analytics-react-native/issues/253)) ([226a9e4](226a9e4))
* fix bundle unbundled logic ([segmentio#521](https://github.com/uswitch/analytics-react-native/issues/521)) ([9e080b1](9e080b1))
* fixes missing context in first launch event after install ([segmentio#451](https://github.com/uswitch/analytics-react-native/issues/451)) ([efb2805](efb2805))
* fixing scheduling of flush intervals ([segmentio#457](https://github.com/uswitch/analytics-react-native/issues/457)) ([1b86cfc](1b86cfc))
* format integration settings correctly in the event integrations ([9e7d62d](9e7d62d))
* generating a UUID for anonymousID initial value, refactor userId replacement ([segmentio#440](https://github.com/uswitch/analytics-react-native/issues/440)) ([ef297ee](ef297ee))
* **ios:** bump ios dependency ([segmentio#217](https://github.com/uswitch/analytics-react-native/issues/217)) ([4848bbd](4848bbd))
* **ios:** fix `trackAppLifecycleEvents` ([50c4b09](50c4b09))
* **ios:** fixes for building for newer rn ([segmentio#206](https://github.com/uswitch/analytics-react-native/issues/206)) ([ecce14c](ecce14c))
* match identify and reset client methods arguments, add token to context ([segmentio#533](https://github.com/uswitch/analytics-react-native/issues/533)) ([f865d48](f865d48))
* merge context to preserve plugin injected properties ([segmentio#487](https://github.com/uswitch/analytics-react-native/issues/487)) ([9586a7a](9586a7a))
* **package:** missing repo info ([segmentio#268](https://github.com/uswitch/analytics-react-native/issues/268)) ([6a2a93b](6a2a93b))
* persist user traits across events ([segmentio#581](https://github.com/uswitch/analytics-react-native/issues/581)) ([d48ac83](d48ac83))
* prevent events mutating state on empty removes ([133b821](133b821))
* re-add logic for tracking lifecycle events ([segmentio#328](https://github.com/uswitch/analytics-react-native/issues/328)) ([92194f3](92194f3))
* refactor getDeviceID to use DRM, remove AndroidID ([segmentio#567](https://github.com/uswitch/analytics-react-native/issues/567)) ([f2616aa](f2616aa))
* refactoring redux event subscriptions and locking upload ([segmentio#376](https://github.com/uswitch/analytics-react-native/issues/376)) ([a302215](a302215))
* remove console.warning when sending events ([segmentio#413](https://github.com/uswitch/analytics-react-native/issues/413)) ([954ece1](954ece1))
* remove import cycle in DestinationMetadataEnrichment ([segmentio#505](https://github.com/uswitch/analytics-react-native/issues/505)) ([9d51d3f](9d51d3f))
* reset anonymousId for users who have persisted incorrect value ([segmentio#445](https://github.com/uswitch/analytics-react-native/issues/445)) ([37aeb81](37aeb81))
* setting minSDK to > 21 for Android and updating to sovran 0.2.2 ([segmentio#430](https://github.com/uswitch/analytics-react-native/issues/430)) ([4c6e977](4c6e977))
* upgrade sovran to v0.2.3, move RN to peerDeps ([segmentio#437](https://github.com/uswitch/analytics-react-native/issues/437)) ([b76739a](b76739a))

* Improve iOS support for users without Cocoapods  (segmentio#27) ([e90a58c](e90a58c)), closes [segmentio#27](https://github.com/uswitch/analytics-react-native/issues/27) [segmentio/analytics-ios#3](segmentio/analytics-ios#3)
jezallan pushed a commit to uswitch/analytics-react-native that referenced this issue Jun 29, 2022
## @uswitch/analytics-react-native-v1.0.0 (2022-06-29)

### ⚠ BREAKING CHANGES

* We've improved iOS support for non-Cocoapods users. You do not need to follow these steps if you are using Cocoapods.

### Migration instructions

- Remove `Analytics.framework` from your Xcode project
- Remove `Analytics.framework` from `Embedded Binaries`
- Follow [Current instructions](#current-instructions)

### Current instructions
* **client:** We've dropped the chained configuration for an object one instead. This will make Analytics blend even better with tools like Prettier.

Before:
```js
analytics
    .configure()
        .using(Mixpanel, GoogleAnalytics)
        .recordScreenViews()
        .trackAppLifecycleEvents()
        .trackAttributionData()
        .android()
            .flushInterval(60)
            .disableDevicedId()
        .ios()
            .trackAdvertising()
            .trackDeepLinks()
    .setup("writeKey")
    .then(() =>
        console.log('Analytics is ready')
    )
    .catch(err =>
        console.error('Something went wrong', err)
    )
```

Now:
```js
analytics
    .setup('writeKey', {
        using: [Mixpanel, GoogleAnalytics],
        recordScreenViews: true,
        trackAppLifecycleEvents: true,
        trackAttributionData: true,

        android: {
            flushInterval: 60,
            collectDeviceId: false
        },
        ios: {
            trackAdvertising: true,
            trackDeepLinks: true
        }
    })
    .then(() =>
        console.log('Analytics is ready')
    )
    .catch(err =>
        console.error('Something went wrong', err)
    )
```

### Features

* Add AdvertisingId Plugin ([segmentio#574](https://github.com/uswitch/analytics-react-native/issues/574)) ([9f47e67](9f47e67))
* add analytics 2.0 ([segmentio#360](https://github.com/uswitch/analytics-react-native/issues/360)) ([829fc80](829fc80))
* add anonymousId logic to reset ([segmentio#475](https://github.com/uswitch/analytics-react-native/issues/475)) ([23baab4](23baab4))
* add deeplink referral application data ([segmentio#454](https://github.com/uswitch/analytics-react-native/issues/454)) ([dbfc267](dbfc267))
* add reset to plugins ([segmentio#490](https://github.com/uswitch/analytics-react-native/issues/490)) ([686f73f](686f73f))
* added destination metadata and internal timeline processing for destinatio plugins ([segmentio#477](https://github.com/uswitch/analytics-react-native/issues/477)) ([8b1df55](8b1df55))
* **android:** allow opt-out for new lifecycle methods ([segmentio#256](https://github.com/uswitch/analytics-react-native/issues/256)) ([8dbadad](8dbadad))
* **android:** allow passing integration options ([segmentio#184](https://github.com/uswitch/analytics-react-native/issues/184)) ([6845c67](6845c67))
* **anonymousid:** add a method to retrieve the anonymousId ([988f382](988f382))
* **client:** use object-based configuration ([segmentio#7](https://github.com/uswitch/analytics-react-native/issues/7)) ([6a281f4](6a281f4))
* **core:** add middlewares ([9aeafa3](9aeafa3))
* **core:** add native configuration method ([19c4fae](19c4fae))
* **core:** export TypeScript public interfaces ([9978cd7](9978cd7))
* **core:** http proxying via setup configuration ([segmentio#202](https://github.com/uswitch/analytics-react-native/issues/202)) ([40a3f5a](40a3f5a))
* Create Client Proxy Option ([segmentio#570](https://github.com/uswitch/analytics-react-native/issues/570)) ([eaeb940](eaeb940))
* createClient "storePersistor" option ([segmentio#549](https://github.com/uswitch/analytics-react-native/issues/549)) ([4b70e99](4b70e99))
* **integrations:** allow setting integration options ([13b663e](13b663e))
* **ios:** make idfa for ios external to analytics ([segmentio#210](https://github.com/uswitch/analytics-react-native/issues/210)) ([35f96a0](35f96a0))
* **ios:** set trackAdvertising=true by default on ios ([segmentio#82](https://github.com/uswitch/analytics-react-native/issues/82)) ([09e997b](09e997b))
* new onContextLoad events and awaitable context updates ([segmentio#532](https://github.com/uswitch/analytics-react-native/issues/532)) ([4508ad4](4508ad4)), closes [segmentio#524](https://github.com/uswitch/analytics-react-native/issues/524) [segmentio#527](https://github.com/uswitch/analytics-react-native/issues/527)
* plugins can now disable integrations by marking them as false in the event.integrations ([segmentio#496](https://github.com/uswitch/analytics-react-native/issues/496)) ([65c2371](65c2371))
* replacing redux with sovran ([segmentio#422](https://github.com/uswitch/analytics-react-native/issues/422)) ([2d69cc1](2d69cc1))

### Bug Fixes

* add fix for deviceId on android builds ([segmentio#405](https://github.com/uswitch/analytics-react-native/issues/405)) ([92c1fc0](92c1fc0))
* add override fix to ios modules ([segmentio#404](https://github.com/uswitch/analytics-react-native/issues/404)) ([8e47eb6](8e47eb6))
* **android:** bump android dependency ([segmentio#214](https://github.com/uswitch/analytics-react-native/issues/214)) ([acd0f2f](acd0f2f))
* **android:** bump deps and fix config issues ([segmentio#298](https://github.com/uswitch/analytics-react-native/issues/298)) ([5a2ed9b](5a2ed9b))
* **android:** defaultKotlinVersion ([segmentio#159](https://github.com/uswitch/analytics-react-native/issues/159)) ([54e90a3](54e90a3))
* **android:** fix crash when promise resolves in debug mode ([segmentio#267](https://github.com/uswitch/analytics-react-native/issues/267)) ([a0e21d9](a0e21d9))
* **android:** fixed context not passing thru ([segmentio#147](https://github.com/uswitch/analytics-react-native/issues/147)) ([cb1b412](cb1b412))
* **android:** parse android specific options correctly ([segmentio#187](https://github.com/uswitch/analytics-react-native/issues/187)) ([49e4815](49e4815))
* **android:** pull android tool versions from root project ([segmentio#12](https://github.com/uswitch/analytics-react-native/issues/12)) ([3f1eb3c](3f1eb3c)), closes [/github.com/frostney/react-native-create-library/blob/master/templates/android.js#L28](https://github.com/uswitch//github.com/frostney/react-native-create-library/blob/master/templates/android.js/issues/L28)
* appsflyer attribution ([segmentio#547](https://github.com/uswitch/analytics-react-native/issues/547)) ([494df24](494df24))
* **bridge:** fix duplicated analytics client improving errors ([segmentio#162](https://github.com/uswitch/analytics-react-native/issues/162)) ([28a981d](28a981d))
* **bridge:** fix p(r)omise typo ([segmentio#168](https://github.com/uswitch/analytics-react-native/issues/168)) ([d9794db](d9794db))
* **bridge:** improve missing native module error ([segmentio#5](https://github.com/uswitch/analytics-react-native/issues/5)) ([0a03617](0a03617))
* change React dependency to React-Core ([segmentio#254](https://github.com/uswitch/analytics-react-native/issues/254)) ([c51e689](c51e689))
* **client:** copy package with version ([2c223dd](2c223dd))
* **config:** pass user-supplied context for analytics calls ([segmentio#188](https://github.com/uswitch/analytics-react-native/issues/188)) ([7429567](7429567))
* **context:** fix `context` `name` and `version` ([09f0b28](09f0b28))
* **core:** fix duplicate client error in dev mode ([segmentio#51](https://github.com/uswitch/analytics-react-native/issues/51)) ([cb66749](cb66749)), closes [segmentio#16](https://github.com/uswitch/analytics-react-native/issues/16) [segmentio#15](https://github.com/uswitch/analytics-react-native/issues/15)
* **core:** fix TypeScript typings ([fe7933c](fe7933c)), closes [segmentio#11](https://github.com/uswitch/analytics-react-native/issues/11)
* **core:** React-Native 0.59 Support ([segmentio#50](https://github.com/uswitch/analytics-react-native/issues/50)) ([a78c94e](a78c94e)), closes [segmentio#46](https://github.com/uswitch/analytics-react-native/issues/46) [segmentio#44](https://github.com/uswitch/analytics-react-native/issues/44)
* custom event integrations override support, refactor integration merge logic ([segmentio#379](https://github.com/uswitch/analytics-react-native/issues/379)) ([d0b8fbf](d0b8fbf))
* deepmerge device context on update ([segmentio#543](https://github.com/uswitch/analytics-react-native/issues/543)) ([5878043](5878043))
* don't call stringValue of strings ([segmentio#253](https://github.com/uswitch/analytics-react-native/issues/253)) ([226a9e4](226a9e4))
* fix bundle unbundled logic ([segmentio#521](https://github.com/uswitch/analytics-react-native/issues/521)) ([9e080b1](9e080b1))
* fixes missing context in first launch event after install ([segmentio#451](https://github.com/uswitch/analytics-react-native/issues/451)) ([efb2805](efb2805))
* fixing scheduling of flush intervals ([segmentio#457](https://github.com/uswitch/analytics-react-native/issues/457)) ([1b86cfc](1b86cfc))
* format integration settings correctly in the event integrations ([9e7d62d](9e7d62d))
* generating a UUID for anonymousID initial value, refactor userId replacement ([segmentio#440](https://github.com/uswitch/analytics-react-native/issues/440)) ([ef297ee](ef297ee))
* **ios:** bump ios dependency ([segmentio#217](https://github.com/uswitch/analytics-react-native/issues/217)) ([4848bbd](4848bbd))
* **ios:** fix `trackAppLifecycleEvents` ([50c4b09](50c4b09))
* **ios:** fixes for building for newer rn ([segmentio#206](https://github.com/uswitch/analytics-react-native/issues/206)) ([ecce14c](ecce14c))
* match identify and reset client methods arguments, add token to context ([segmentio#533](https://github.com/uswitch/analytics-react-native/issues/533)) ([f865d48](f865d48))
* merge context to preserve plugin injected properties ([segmentio#487](https://github.com/uswitch/analytics-react-native/issues/487)) ([9586a7a](9586a7a))
* **package:** missing repo info ([segmentio#268](https://github.com/uswitch/analytics-react-native/issues/268)) ([6a2a93b](6a2a93b))
* persist user traits across events ([segmentio#581](https://github.com/uswitch/analytics-react-native/issues/581)) ([d48ac83](d48ac83))
* prevent events mutating state on empty removes ([133b821](133b821))
* re-add logic for tracking lifecycle events ([segmentio#328](https://github.com/uswitch/analytics-react-native/issues/328)) ([92194f3](92194f3))
* refactor getDeviceID to use DRM, remove AndroidID ([segmentio#567](https://github.com/uswitch/analytics-react-native/issues/567)) ([f2616aa](f2616aa))
* refactoring redux event subscriptions and locking upload ([segmentio#376](https://github.com/uswitch/analytics-react-native/issues/376)) ([a302215](a302215))
* remove console.warning when sending events ([segmentio#413](https://github.com/uswitch/analytics-react-native/issues/413)) ([954ece1](954ece1))
* remove import cycle in DestinationMetadataEnrichment ([segmentio#505](https://github.com/uswitch/analytics-react-native/issues/505)) ([9d51d3f](9d51d3f))
* reset anonymousId for users who have persisted incorrect value ([segmentio#445](https://github.com/uswitch/analytics-react-native/issues/445)) ([37aeb81](37aeb81))
* setting minSDK to > 21 for Android and updating to sovran 0.2.2 ([segmentio#430](https://github.com/uswitch/analytics-react-native/issues/430)) ([4c6e977](4c6e977))
* upgrade sovran to v0.2.3, move RN to peerDeps ([segmentio#437](https://github.com/uswitch/analytics-react-native/issues/437)) ([b76739a](b76739a))

* Improve iOS support for users without Cocoapods  (segmentio#27) ([e90a58c](e90a58c)), closes [segmentio#27](https://github.com/uswitch/analytics-react-native/issues/27) [segmentio/analytics-ios#3](segmentio/analytics-ios#3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working 🚧 Work In Progress
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants