diff --git a/app/components/QueryRecorder.tsx b/app/components/QueryRecorder.tsx
index 4b21aad916a989e76800be4dcf6bdc6a5eceb4e3..dcd30ecf762c3c4e5150cded5323955e8278b399 100644
--- a/app/components/QueryRecorder.tsx
+++ b/app/components/QueryRecorder.tsx
@@ -138,15 +138,7 @@ export default function QueryRecorder() {
       );
       const t1 = performance.now();
       setRecordingTime(t1 - t0);
-      if (result.error === 'cancelled') {
-        updateContext(
-          result,
-          t1 - t0,
-          recordingLabel,
-          recordingColor,
-          'Query was cancelled'
-        );
-      } else if (result?.error) {
+      if (result?.error) {
         let error;
         if (result.error?.info) {
           const errorcode = JSON.stringify(
@@ -160,6 +152,8 @@ export default function QueryRecorder() {
             2
           );
           error = `Errorcode: ${errorcode}\n${errormsg}`;
+        } else if (result.error === 'cancelled') {
+          error = 'Query was cancelled';
         } else {
           error = String(result.error);
         }
diff --git a/app/package.json b/app/package.json
index 1241e56ab6d00bdc5cd12cab7348fa55d2833ae2..e5abeef9c5f0262bb9b92dcd07ef46e74369ce60 100644
--- a/app/package.json
+++ b/app/package.json
@@ -1,7 +1,7 @@
 {
   "name": "mysql-query-profiler",
   "productName": "MySQL Query Profiler",
-  "version": "0.3.0",
+  "version": "0.3.1",
   "description": "A profiler for MySQL queries using Electron and React",
   "main": "./main.prod.js",
   "author": {
diff --git a/app/types/Recording.ts b/app/types/Recording.ts
index 7e9aed6268bd87345fd161235d8d9494d7e60bb7..890aa775846904ef63efebfaf758663321231539 100644
--- a/app/types/Recording.ts
+++ b/app/types/Recording.ts
@@ -12,7 +12,7 @@ export interface Recording {
   optimizerTrace?: ResultValue[][];
   queryOutput?: QueryOutput;
   explainAnalyze: boolean;
-  explainAnalyzeTree: ExplainAnalyzeNode;
+  explainAnalyzeTree?: ExplainAnalyzeNode;
   error?: string;
   label: string; // On both in order to avoid having to create an 'activeRecordingListItem'
   uuid: string;
diff --git a/backend/recorder/SqlManager.ts b/backend/recorder/SqlManager.ts
index b3d37d1a560fc38754f75ac93976000a3abacfd6..1a54aaeaabe8cc08f9af34d76f891cb42a4e2618 100644
--- a/backend/recorder/SqlManager.ts
+++ b/backend/recorder/SqlManager.ts
@@ -108,16 +108,13 @@ export default class SqlManager {
     if (result?.error) {
       stateCallback?.call(undefined, 'Error detected, aborting monitoring');
       await this.reset();
-      stateCallback?.call(undefined, 'Getting optimizer trace');
-      const optimizerTrace = await this.runner.getOptimizerTrace();
       stateCallback?.call(undefined, '');
       return {
         result,
-        optimizerTrace: DataProcessor.processOptimizerTrace(
-          optimizerTrace.results
-        ),
         error: result.error,
-        explainAnalyze: DataProcessor.processExplainAnalyze(result.results),
+        explainAnalyze: result.results
+          ? DataProcessor.processExplainAnalyze(result.results)
+          : undefined,
       };
     }
     stateCallback?.call(undefined, 'Getting optimizer trace');