How to reduce time taken by mixpanel

92 Views Asked by At

I have integrated mixpanel in my react native application using analyticsServices but after using mixpanel some of the events where i integrated mixpanel are taking more time. For eg. login was taking maximum 3 seconds before now its taking 4 seconds. I made the mixpanel events async but still the issue persist. How to reduce this time.

import { Mixpanel } from 'mixpanel-react-native';

const trackAutomaticEvents = true;
const mixpanel = new Mixpanel("924d6af1d1e872f4e5ba7670df3a48f0", trackAutomaticEvents);
mixpanel.init();

const trackEventAsync = (eventName: string, eventProperties: { [key: string]: any }) => {
  return new Promise<void>((resolve, reject) => {
    try {
      const startTime = performance.now(); // Record start time
      mixpanel.track(eventName, eventProperties);
      const endTime = performance.now(); // Record end time
      const timeTaken = endTime - startTime;
      console.log(`Event '${eventName}' tracked in ${timeTaken} milliseconds`);
      resolve();
    } catch (error) {
      reject(error);
    }
  });
};

const AnalyticsService = {
  identifyUser: (userId: string) => {
    mixpanel.identify(userId);
  },

  trackAppOpen: async (properties?: { [key: string]: any }) => {
    const defaultProperties = {
      // Add default properties here if needed
    };

    try {
      await trackEventAsync('App Open', { ...defaultProperties, ...properties });
    } catch (error) {
      console.error('Error tracking App Open event:', error);
    }
  },

  trackLoginAttempt: async (username: string, properties?: { [key: string]: any }) => {
    const eventProperties = {
      username,
      ...properties,
    };

    try {
      await trackEventAsync('Login Attempt', eventProperties);
    } catch (error) {
      console.error('Error tracking Login Attempt event:', error);
    }
  },

  trackLoginSuccess: async (username: string, properties?: { [key: string]: any }) => {
    const eventProperties = {
      username,
      ...properties,
    };

    try {
      await trackEventAsync('Login Success', eventProperties);
    } catch (error) {
      console.error('Error tracking Login Success event:', error);
    }
  },

  trackLoginFailure: async (username: string, properties?: { [key: string]: any }) => {
    const eventProperties = {
      username,
      ...properties,
    };

    try {
      await trackEventAsync('Login Failure', eventProperties);
    } catch (error) {
      console.error('Error tracking Login Failure event:', error);
    }
  },

  trackTimetableCreatedSuccess: async (properties?: { [key: string]: any }) => {
    const defaultProperties = {
      // Add default properties here if needed
    };

    try {
      await trackEventAsync('Event Created - Success', { ...defaultProperties, ...properties });
    } catch (error) {
      console.error('Error tracking Event Created - Success event:', error);
    }
  },

  trackTimetableCreationFailed: async (properties?: { [key: string]: any }) => {
    const defaultProperties = {
      // Add default properties here if needed
    };

    try {
      await trackEventAsync('Event Created - Failure', { ...defaultProperties, ...properties });
    } catch (error) {
      console.error('Error tracking Event Created - Failure event:', error);
    }
  },
  
};

export default AnalyticsService;

when i'm using login event to track the login, it is taking more time how to reduce it.

I tried using async-await to reduce time of the main events but it is not working. I am expecting the tracking of events in mixpanel does not take much time.

0

There are 0 best solutions below