Skip to content

Instantly share code, notes, and snippets.

@Salakar
Last active January 30, 2024 21:23
Show Gist options
  • Save Salakar/f4f8ec1ba44c3fa4776a56f264b33a56 to your computer and use it in GitHub Desktop.
Save Salakar/f4f8ec1ba44c3fa4776a56f264b33a56 to your computer and use it in GitHub Desktop.
Add Firebase Performance Monitoring HTTP Metrics to all Axios requests (RNFB v5). This is taken from a guide on the new React Native Firebase website (not yet ready for public use).
import axios from 'axios';
import firebase from 'react-native-firebase';
axios.interceptors.request.use(async function (config) {
const httpMetric = firebase.perf().newHttpMetric(config.url, config.method);
config.metadata = { httpMetric };
// add any extra metric attributes if needed
// await httpMetric.putAttribute('userId', '12345678');
await httpMetric.start();
return config;
});
axios.interceptors.response.use(async function (response) {
const { httpMetric } = response.config.metadata;
// add any extra metric attributes if needed
// await httpMetric.putAttribute('userId', '12345678');
await httpMetric.setHttpResponseCode(response.status);
await httpMetric.setResponseContentType(response.headers['content-type']);
await httpMetric.stop();
return response;
}, async function (error) {
const { httpMetric } = error.config.metadata;
// add any extra metric attributes if needed
// await httpMetric.putAttribute('userId', '12345678');
await httpMetric.setHttpResponseCode(error.response.status);
await httpMetric.setResponseContentType(error.response.headers['content-type']);
await httpMetric.stop();
return Promise.reject(error);
});
@ys-sherzad
Copy link

@SabarishChungath @matteodanelli
Any luck? can't seem to have each of the API calls logged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment