diff --git a/packages/perf/android/src/main/java/io/invertase/firebase/perf/UniversalFirebasePerfModule.java b/packages/perf/android/src/main/java/io/invertase/firebase/perf/UniversalFirebasePerfModule.java index e66f446ad8..5333b73cdf 100644 --- a/packages/perf/android/src/main/java/io/invertase/firebase/perf/UniversalFirebasePerfModule.java +++ b/packages/perf/android/src/main/java/io/invertase/firebase/perf/UniversalFirebasePerfModule.java @@ -83,6 +83,10 @@ Task stopTrace(int id, Bundle metrics, Bundle attributes) { return Tasks.call( () -> { Trace trace = traces.get(id); + // Traces can be cleared during module teardown before JS stops them. + if (trace == null) { + return null; + } Set metricKeys = metrics.keySet(); Set attributeKeys = attributes.keySet(); @@ -119,6 +123,10 @@ Task stopScreenTrace(int id) { return Tasks.call( () -> { ScreenTrace trace = screenTraces.get(id); + // Screen traces can be cleared during module teardown before JS stops them. + if (trace == null) { + return null; + } trace.sendScreenTrace(); screenTraces.remove(id); @@ -140,6 +148,10 @@ Task stopHttpMetric(int id, Bundle httpMetricConfig, Bundle attributes) { return Tasks.call( () -> { HttpMetric httpMetric = httpMetrics.get(id); + // HTTP metrics can be cleared during module teardown before JS stops them. + if (httpMetric == null) { + return null; + } if (httpMetricConfig.containsKey("httpResponseCode")) { httpMetric.setHttpResponseCode((int) httpMetricConfig.getDouble("httpResponseCode"));