diff --git a/development/plot-benchmarks/src/lib/App.svelte b/development/plot-benchmarks/src/lib/App.svelte
index f1ace88..ca22bb0 100644
--- a/development/plot-benchmarks/src/lib/App.svelte
+++ b/development/plot-benchmarks/src/lib/App.svelte
@@ -15,7 +15,7 @@
     })
   );
 
-  function onFilesChanged(event) {
+  function onFilesChanged(event: CustomEvent) {
     const detail: FileMetadata[] = event.detail;
     if (detail) {
       const enabled = detail.filter((metadata) => metadata.enabled === true);
diff --git a/development/plot-benchmarks/src/lib/Chart.svelte b/development/plot-benchmarks/src/lib/Chart.svelte
index 175da99..edf6584 100644
--- a/development/plot-benchmarks/src/lib/Chart.svelte
+++ b/development/plot-benchmarks/src/lib/Chart.svelte
@@ -34,13 +34,13 @@
     const onUpdate = (chart: Chart) => {
       $chart = chart;
       // Bad typings.
-      const legend = chart.options.plugins.legend as any;
+      const legend = chart.options.plugins?.legend as any;
       $items = legend.labels.generateLabels(chart);
     };
     const plugins = {
       tooltip: {
         callbacks: {
-          label: (context: TooltipItem<typeof chartType>): string | null => {
+          label: (context: TooltipItem<typeof chartType>): string | void | string[] => {
             // TODO: Configure Tooltips
             // https://www.chartjs.org/docs/latest/configuration/tooltip.html
             const label = context.dataset.label;
@@ -51,7 +51,7 @@
               return `${label}: ${fx} F(${frequency})`;
             } else {
               // Fallback to default behavior
-              return undefined;
+              return;
             }
           },
         },
@@ -131,7 +131,7 @@
   {/if}
 </article>
 
-{#if $items}
+{#if $chart && $items}
   <Legend chart={$chart} items={$items} />
 {/if}
 
diff --git a/development/plot-benchmarks/src/lib/Legend.svelte b/development/plot-benchmarks/src/lib/Legend.svelte
index ef239f5..2795fb2 100644
--- a/development/plot-benchmarks/src/lib/Legend.svelte
+++ b/development/plot-benchmarks/src/lib/Legend.svelte
@@ -5,12 +5,14 @@
 
   const handlerFactory = (item: LegendItem) => {
     return (event: Event) => {
-      // https://www.chartjs.org/docs/latest/samples/legend/html.html
-      chart.setDatasetVisibility(
-        item.datasetIndex,
-        !chart.isDatasetVisible(item.datasetIndex)
-      );
-      chart.update();
+      if (item.datasetIndex !== undefined) {
+        // https://www.chartjs.org/docs/latest/samples/legend/html.html
+        chart.setDatasetVisibility(
+          item.datasetIndex,
+          !chart.isDatasetVisible(item.datasetIndex)
+        );
+        chart.update();
+      }
     };
   };
 </script>
diff --git a/development/plot-benchmarks/src/main.ts b/development/plot-benchmarks/src/main.ts
index a3355b1..93a3c3f 100644
--- a/development/plot-benchmarks/src/main.ts
+++ b/development/plot-benchmarks/src/main.ts
@@ -2,7 +2,7 @@
 import App from './lib/App.svelte';
 
 const app = new App({
-  target: document.getElementById('app'),
+  target: document.getElementById('app')!!,
 });
 
 export default app;
diff --git a/development/plot-benchmarks/src/transforms/standard-mappers.ts b/development/plot-benchmarks/src/transforms/standard-mappers.ts
index df74b8f9..970e20b 100644
--- a/development/plot-benchmarks/src/transforms/standard-mappers.ts
+++ b/development/plot-benchmarks/src/transforms/standard-mappers.ts
@@ -232,5 +232,8 @@
 }
 
 export function isSampled(label: string | null | undefined): boolean {
-  return label && label.indexOf(SAMPLED_SUFFIX) >= 0;
+  if (label) {
+    return label.indexOf(SAMPLED_SUFFIX) >= 0;
+  }
+  return false;
 }
diff --git a/development/plot-benchmarks/src/wrappers/benchmarks.ts b/development/plot-benchmarks/src/wrappers/benchmarks.ts
index 9bbc015..225859fb 100644
--- a/development/plot-benchmarks/src/wrappers/benchmarks.ts
+++ b/development/plot-benchmarks/src/wrappers/benchmarks.ts
@@ -13,11 +13,11 @@
   }
 
   metric(label: string): Standard | undefined {
-    return this.benchmark?.metrics[label];
+    return this.benchmark?.metrics?.[label];
   }
 
   sampled(label: string): Sampled | undefined {
-    return this.benchmark?.sampledMetrics[label];
+    return this.benchmark?.sampledMetrics?.[label];
   }
 
   metricLabels(): string[] {
@@ -39,7 +39,7 @@
     return this.benchmark.name;
   }
 
-  private static labels(collection: MetricsCollection | null): string[] {
+  private static labels(collection: MetricsCollection | undefined): string[] {
     const labels: string[] = [];
     if (collection) {
       for (const key in collection) {
diff --git a/development/plot-benchmarks/src/wrappers/session.ts b/development/plot-benchmarks/src/wrappers/session.ts
index 80209dd..2a37139 100644
--- a/development/plot-benchmarks/src/wrappers/session.ts
+++ b/development/plot-benchmarks/src/wrappers/session.ts
@@ -17,10 +17,10 @@
  */
 export class Session {
   // className -> BenchmarkWrapper[]
-  public classGroups: Record<string, IndexedWrapper[]>;
+  public classGroups: Record<string, IndexedWrapper[]> = {};
   // BenchmarkWrapper[]
-  public benchmarks: IndexedWrapper[];
-  public fileNames: Set<string>;
+  public benchmarks: IndexedWrapper[] = [];
+  public fileNames: Set<string> = new Set();
 
   constructor(public files: FileMetadata[]) {
     this.initialize();
