diff --git a/components/frontend/package.json b/components/frontend/package.json
index f85c3347c1..443ca27b36 100644
--- a/components/frontend/package.json
+++ b/components/frontend/package.json
@@ -38,7 +38,7 @@
         "resetMocks": false,
         "coveragePathIgnorePatterns": [
             "<rootDir>/node_modules/",
-            "<rootDir>/src/index.js"
+            "<rootDir>/src/index.jsx"
         ]
     },
     "browserslist": [
diff --git a/components/frontend/src/App.js b/components/frontend/src/App.jsx
similarity index 100%
rename from components/frontend/src/App.js
rename to components/frontend/src/App.jsx
diff --git a/components/frontend/src/App.test.js b/components/frontend/src/App.test.jsx
similarity index 100%
rename from components/frontend/src/App.test.js
rename to components/frontend/src/App.test.jsx
diff --git a/components/frontend/src/AppUI.js b/components/frontend/src/AppUI.jsx
similarity index 100%
rename from components/frontend/src/AppUI.js
rename to components/frontend/src/AppUI.jsx
diff --git a/components/frontend/src/AppUI.test.js b/components/frontend/src/AppUI.test.jsx
similarity index 100%
rename from components/frontend/src/AppUI.test.js
rename to components/frontend/src/AppUI.test.jsx
diff --git a/components/frontend/src/PageContent.js b/components/frontend/src/PageContent.jsx
similarity index 100%
rename from components/frontend/src/PageContent.js
rename to components/frontend/src/PageContent.jsx
diff --git a/components/frontend/src/PageContent.test.js b/components/frontend/src/PageContent.test.jsx
similarity index 100%
rename from components/frontend/src/PageContent.test.js
rename to components/frontend/src/PageContent.test.jsx
diff --git a/components/frontend/src/api/metric.js b/components/frontend/src/api/metric.js
index 3b4aa363f7..692d28cf5d 100644
--- a/components/frontend/src/api/metric.js
+++ b/components/frontend/src/api/metric.js
@@ -1,4 +1,3 @@
-import { showMessage } from "../widgets/toast"
 import { fetch_server_api } from "./fetch_server_api"
 
 export function add_metric(subject_uuid, metricType, reload) {
@@ -27,14 +26,14 @@ export function set_metric_debt(metric_uuid, value, reload) {
     return fetch_server_api("post", `metric/${metric_uuid}/debt`, { accept_debt: value }).then(reload)
 }
 
-export function add_metric_issue(metric_uuid, reload) {
+export function add_metric_issue(metric_uuid, reload, showMessage) {
     const payload = { metric_url: `${window.location}#${metric_uuid}` }
     return fetch_server_api("post", `metric/${metric_uuid}/issue/new`, payload)
         .then((json) => {
             if (json.ok) {
                 window.open(json.issue_url)
             } else {
-                showMessage("error", "Could not create issue", json.error)
+                showMessage(json.error)
             }
             return null
         })
diff --git a/components/frontend/src/changelog/ChangeLog.js b/components/frontend/src/changelog/ChangeLog.jsx
similarity index 100%
rename from components/frontend/src/changelog/ChangeLog.js
rename to components/frontend/src/changelog/ChangeLog.jsx
diff --git a/components/frontend/src/changelog/ChangeLog.test.js b/components/frontend/src/changelog/ChangeLog.test.jsx
similarity index 99%
rename from components/frontend/src/changelog/ChangeLog.test.js
rename to components/frontend/src/changelog/ChangeLog.test.jsx
index e198e1f90d..063fb14a2f 100644
--- a/components/frontend/src/changelog/ChangeLog.test.js
+++ b/components/frontend/src/changelog/ChangeLog.test.jsx
@@ -6,7 +6,7 @@ import * as toast from "../widgets/toast"
 import { ChangeLog } from "./ChangeLog"
 
 jest.mock("../api/changelog.js")
-jest.mock("../widgets/toast.js")
+jest.mock("../widgets/toast.jsx")
 
 beforeEach(() => {
     jest.resetAllMocks()
diff --git a/components/frontend/src/context/Permissions.js b/components/frontend/src/context/Permissions.jsx
similarity index 100%
rename from components/frontend/src/context/Permissions.js
rename to components/frontend/src/context/Permissions.jsx
diff --git a/components/frontend/src/context/Permissions.test.js b/components/frontend/src/context/Permissions.test.jsx
similarity index 100%
rename from components/frontend/src/context/Permissions.test.js
rename to components/frontend/src/context/Permissions.test.jsx
diff --git a/components/frontend/src/dashboard/CardDashboard.js b/components/frontend/src/dashboard/CardDashboard.jsx
similarity index 100%
rename from components/frontend/src/dashboard/CardDashboard.js
rename to components/frontend/src/dashboard/CardDashboard.jsx
diff --git a/components/frontend/src/dashboard/CardDashboard.test.js b/components/frontend/src/dashboard/CardDashboard.test.jsx
similarity index 100%
rename from components/frontend/src/dashboard/CardDashboard.test.js
rename to components/frontend/src/dashboard/CardDashboard.test.jsx
diff --git a/components/frontend/src/dashboard/DashboardCard.js b/components/frontend/src/dashboard/DashboardCard.jsx
similarity index 100%
rename from components/frontend/src/dashboard/DashboardCard.js
rename to components/frontend/src/dashboard/DashboardCard.jsx
diff --git a/components/frontend/src/dashboard/FilterCardWithTable.js b/components/frontend/src/dashboard/FilterCardWithTable.jsx
similarity index 100%
rename from components/frontend/src/dashboard/FilterCardWithTable.js
rename to components/frontend/src/dashboard/FilterCardWithTable.jsx
diff --git a/components/frontend/src/dashboard/IssuesCard.js b/components/frontend/src/dashboard/IssuesCard.jsx
similarity index 100%
rename from components/frontend/src/dashboard/IssuesCard.js
rename to components/frontend/src/dashboard/IssuesCard.jsx
diff --git a/components/frontend/src/dashboard/IssuesCard.test.js b/components/frontend/src/dashboard/IssuesCard.test.jsx
similarity index 100%
rename from components/frontend/src/dashboard/IssuesCard.test.js
rename to components/frontend/src/dashboard/IssuesCard.test.jsx
diff --git a/components/frontend/src/dashboard/LegendCard.js b/components/frontend/src/dashboard/LegendCard.jsx
similarity index 100%
rename from components/frontend/src/dashboard/LegendCard.js
rename to components/frontend/src/dashboard/LegendCard.jsx
diff --git a/components/frontend/src/dashboard/MetricSummaryCard.js b/components/frontend/src/dashboard/MetricSummaryCard.jsx
similarity index 100%
rename from components/frontend/src/dashboard/MetricSummaryCard.js
rename to components/frontend/src/dashboard/MetricSummaryCard.jsx
diff --git a/components/frontend/src/dashboard/MetricsRequiringActionCard.js b/components/frontend/src/dashboard/MetricsRequiringActionCard.jsx
similarity index 100%
rename from components/frontend/src/dashboard/MetricsRequiringActionCard.js
rename to components/frontend/src/dashboard/MetricsRequiringActionCard.jsx
diff --git a/components/frontend/src/dashboard/MetricsRequiringActionCard.test.js b/components/frontend/src/dashboard/MetricsRequiringActionCard.test.jsx
similarity index 100%
rename from components/frontend/src/dashboard/MetricsRequiringActionCard.test.js
rename to components/frontend/src/dashboard/MetricsRequiringActionCard.test.jsx
diff --git a/components/frontend/src/dashboard/MockAnimations.js b/components/frontend/src/dashboard/MockAnimations.jsx
similarity index 100%
rename from components/frontend/src/dashboard/MockAnimations.js
rename to components/frontend/src/dashboard/MockAnimations.jsx
diff --git a/components/frontend/src/dashboard/PageHeader.js b/components/frontend/src/dashboard/PageHeader.jsx
similarity index 100%
rename from components/frontend/src/dashboard/PageHeader.js
rename to components/frontend/src/dashboard/PageHeader.jsx
diff --git a/components/frontend/src/dashboard/PageHeader.test.js b/components/frontend/src/dashboard/PageHeader.test.jsx
similarity index 100%
rename from components/frontend/src/dashboard/PageHeader.test.js
rename to components/frontend/src/dashboard/PageHeader.test.jsx
diff --git a/components/frontend/src/dashboard/StatusBarChart.js b/components/frontend/src/dashboard/StatusBarChart.jsx
similarity index 94%
rename from components/frontend/src/dashboard/StatusBarChart.js
rename to components/frontend/src/dashboard/StatusBarChart.jsx
index 99c265c1ed..a7b7d47158 100644
--- a/components/frontend/src/dashboard/StatusBarChart.js
+++ b/components/frontend/src/dashboard/StatusBarChart.jsx
@@ -1,7 +1,7 @@
 import { arrayOf, number, object } from "prop-types"
 import { VictoryBar, VictoryStack } from "victory"
 
-import { STATUS_COLORS, STATUS_NAME, STATUSES } from "../metric/status"
+import { STATUS_COLORS, STATUS_SHORT_NAME, STATUSES } from "../metric/status"
 import { labelPropType, stringsPropType } from "../sharedPropTypes"
 import { pluralize, sum } from "../utils"
 
@@ -28,7 +28,7 @@ export function StatusBarChart({ animate, colors, events, height, label, maxY, s
             data.push({
                 x: date,
                 y: y,
-                label: [dateString, STATUS_NAME[status], nrMetricsLabel(y)],
+                label: [dateString, STATUS_SHORT_NAME[status], nrMetricsLabel(y)],
             })
         })
         return (
@@ -37,7 +37,6 @@ export function StatusBarChart({ animate, colors, events, height, label, maxY, s
                 barRatio={barRatio}
                 key={status}
                 style={style}
-                labels={() => null}
                 labelComponent={tooltip}
                 data={data}
                 animate={animate}
diff --git a/components/frontend/src/dashboard/StatusBarChart.test.js b/components/frontend/src/dashboard/StatusBarChart.test.jsx
similarity index 100%
rename from components/frontend/src/dashboard/StatusBarChart.test.js
rename to components/frontend/src/dashboard/StatusBarChart.test.jsx
diff --git a/components/frontend/src/dashboard/StatusPieChart.js b/components/frontend/src/dashboard/StatusPieChart.jsx
similarity index 90%
rename from components/frontend/src/dashboard/StatusPieChart.js
rename to components/frontend/src/dashboard/StatusPieChart.jsx
index f75545f6b3..02082deb5b 100644
--- a/components/frontend/src/dashboard/StatusPieChart.js
+++ b/components/frontend/src/dashboard/StatusPieChart.jsx
@@ -1,7 +1,7 @@
 import { arrayOf, element, number, object } from "prop-types"
 import { VictoryPie } from "victory"
 
-import { STATUS_COLORS, STATUS_NAME, STATUSES } from "../metric/status"
+import { STATUS_COLORS, STATUS_SHORT_NAME, STATUSES } from "../metric/status"
 import { labelPropType, stringsPropType } from "../sharedPropTypes"
 import { pluralize, sum } from "../utils"
 
@@ -21,7 +21,7 @@ export function StatusPieChart({ animate, colors, events, height, label, maxY, s
     const data = STATUSES.map((status) => {
         const y = summary[STATUS_COLORS[status]]
         const yPercentage = Math.round((y / nrMetrics) * 100)
-        return { y: y, label: `${STATUS_NAME[status]}\n${nrMetricsLabel(y)} (${yPercentage}%)` }
+        return { y: y, label: `${STATUS_SHORT_NAME[status]}\n${nrMetricsLabel(y)} (${yPercentage}%)` }
     })
     return (
         <>
@@ -35,7 +35,6 @@ export function StatusPieChart({ animate, colors, events, height, label, maxY, s
                     innerRadius={innerRadius}
                     standalone={false}
                     style={style}
-                    labels={() => null}
                     labelComponent={tooltip}
                     data={data}
                     width={width}
diff --git a/components/frontend/src/dashboard/StatusPieChart.test.js b/components/frontend/src/dashboard/StatusPieChart.test.jsx
similarity index 100%
rename from components/frontend/src/dashboard/StatusPieChart.test.js
rename to components/frontend/src/dashboard/StatusPieChart.test.jsx
diff --git a/components/frontend/src/fields/CommentField.js b/components/frontend/src/fields/CommentField.jsx
similarity index 100%
rename from components/frontend/src/fields/CommentField.js
rename to components/frontend/src/fields/CommentField.jsx
diff --git a/components/frontend/src/fields/MultipleChoiceField.js b/components/frontend/src/fields/MultipleChoiceField.jsx
similarity index 100%
rename from components/frontend/src/fields/MultipleChoiceField.js
rename to components/frontend/src/fields/MultipleChoiceField.jsx
diff --git a/components/frontend/src/fields/TextField.js b/components/frontend/src/fields/TextField.jsx
similarity index 100%
rename from components/frontend/src/fields/TextField.js
rename to components/frontend/src/fields/TextField.jsx
diff --git a/components/frontend/src/header_footer/Footer.js b/components/frontend/src/header_footer/Footer.jsx
similarity index 100%
rename from components/frontend/src/header_footer/Footer.js
rename to components/frontend/src/header_footer/Footer.jsx
diff --git a/components/frontend/src/header_footer/Footer.test.js b/components/frontend/src/header_footer/Footer.test.jsx
similarity index 100%
rename from components/frontend/src/header_footer/Footer.test.js
rename to components/frontend/src/header_footer/Footer.test.jsx
diff --git a/components/frontend/src/header_footer/Menubar.js b/components/frontend/src/header_footer/Menubar.jsx
similarity index 100%
rename from components/frontend/src/header_footer/Menubar.js
rename to components/frontend/src/header_footer/Menubar.jsx
diff --git a/components/frontend/src/header_footer/Menubar.test.js b/components/frontend/src/header_footer/Menubar.test.jsx
similarity index 100%
rename from components/frontend/src/header_footer/Menubar.test.js
rename to components/frontend/src/header_footer/Menubar.test.jsx
diff --git a/components/frontend/src/header_footer/SettingsPanel.js b/components/frontend/src/header_footer/SettingsPanel.jsx
similarity index 100%
rename from components/frontend/src/header_footer/SettingsPanel.js
rename to components/frontend/src/header_footer/SettingsPanel.jsx
diff --git a/components/frontend/src/header_footer/SettingsPanel.test.js b/components/frontend/src/header_footer/SettingsPanel.test.jsx
similarity index 100%
rename from components/frontend/src/header_footer/SettingsPanel.test.js
rename to components/frontend/src/header_footer/SettingsPanel.test.jsx
diff --git a/components/frontend/src/header_footer/UIModeMenu.js b/components/frontend/src/header_footer/UIModeMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/UIModeMenu.js
rename to components/frontend/src/header_footer/UIModeMenu.jsx
diff --git a/components/frontend/src/header_footer/UIModeMenu.test.js b/components/frontend/src/header_footer/UIModeMenu.test.jsx
similarity index 100%
rename from components/frontend/src/header_footer/UIModeMenu.test.js
rename to components/frontend/src/header_footer/UIModeMenu.test.jsx
diff --git a/components/frontend/src/header_footer/buttons/CollapseButton.js b/components/frontend/src/header_footer/buttons/CollapseButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/CollapseButton.js
rename to components/frontend/src/header_footer/buttons/CollapseButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/CollapseButton.test.js b/components/frontend/src/header_footer/buttons/CollapseButton.test.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/CollapseButton.test.js
rename to components/frontend/src/header_footer/buttons/CollapseButton.test.jsx
diff --git a/components/frontend/src/header_footer/buttons/DatePickerButton.js b/components/frontend/src/header_footer/buttons/DatePickerButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/DatePickerButton.js
rename to components/frontend/src/header_footer/buttons/DatePickerButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/DownloadAsPDFButton.js b/components/frontend/src/header_footer/buttons/DownloadAsPDFButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/DownloadAsPDFButton.js
rename to components/frontend/src/header_footer/buttons/DownloadAsPDFButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/DownloadAsPDFButton.test.js b/components/frontend/src/header_footer/buttons/DownloadAsPDFButton.test.jsx
similarity index 99%
rename from components/frontend/src/header_footer/buttons/DownloadAsPDFButton.test.js
rename to components/frontend/src/header_footer/buttons/DownloadAsPDFButton.test.jsx
index 65773a7f01..0f782ec5ed 100644
--- a/components/frontend/src/header_footer/buttons/DownloadAsPDFButton.test.js
+++ b/components/frontend/src/header_footer/buttons/DownloadAsPDFButton.test.jsx
@@ -6,7 +6,7 @@ import * as toast from "../../widgets/toast"
 import { DownloadAsPDFButton } from "./DownloadAsPDFButton"
 
 jest.mock("../../api/report")
-jest.mock("../../widgets/toast.js")
+jest.mock("../../widgets/toast.jsx")
 
 beforeEach(() => {
     jest.resetAllMocks()
diff --git a/components/frontend/src/header_footer/buttons/HomeButton.js b/components/frontend/src/header_footer/buttons/HomeButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/HomeButton.js
rename to components/frontend/src/header_footer/buttons/HomeButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/LoginButton.js b/components/frontend/src/header_footer/buttons/LoginButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/LoginButton.js
rename to components/frontend/src/header_footer/buttons/LoginButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/ResetSettingsButton.js b/components/frontend/src/header_footer/buttons/ResetSettingsButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/ResetSettingsButton.js
rename to components/frontend/src/header_footer/buttons/ResetSettingsButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/ResetSettingsButton.test.js b/components/frontend/src/header_footer/buttons/ResetSettingsButton.test.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/ResetSettingsButton.test.js
rename to components/frontend/src/header_footer/buttons/ResetSettingsButton.test.jsx
diff --git a/components/frontend/src/header_footer/buttons/SettingsButton.js b/components/frontend/src/header_footer/buttons/SettingsButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/SettingsButton.js
rename to components/frontend/src/header_footer/buttons/SettingsButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/UserButton.js b/components/frontend/src/header_footer/buttons/UserButton.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/UserButton.js
rename to components/frontend/src/header_footer/buttons/UserButton.jsx
diff --git a/components/frontend/src/header_footer/buttons/UserButton.test.js b/components/frontend/src/header_footer/buttons/UserButton.test.jsx
similarity index 100%
rename from components/frontend/src/header_footer/buttons/UserButton.test.js
rename to components/frontend/src/header_footer/buttons/UserButton.test.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/DateOrderMenu.js b/components/frontend/src/header_footer/settings_menu/DateOrderMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/DateOrderMenu.js
rename to components/frontend/src/header_footer/settings_menu/DateOrderMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/NumberOfDatesMenu.js b/components/frontend/src/header_footer/settings_menu/NumberOfDatesMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/NumberOfDatesMenu.js
rename to components/frontend/src/header_footer/settings_menu/NumberOfDatesMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/SettingsMenu.js b/components/frontend/src/header_footer/settings_menu/SettingsMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/SettingsMenu.js
rename to components/frontend/src/header_footer/settings_menu/SettingsMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/SortColumnMenu.js b/components/frontend/src/header_footer/settings_menu/SortColumnMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/SortColumnMenu.js
rename to components/frontend/src/header_footer/settings_menu/SortColumnMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/TimeBetweenDatesMenu.js b/components/frontend/src/header_footer/settings_menu/TimeBetweenDatesMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/TimeBetweenDatesMenu.js
rename to components/frontend/src/header_footer/settings_menu/TimeBetweenDatesMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/VisibleCardMenu.js b/components/frontend/src/header_footer/settings_menu/VisibleCardMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/VisibleCardMenu.js
rename to components/frontend/src/header_footer/settings_menu/VisibleCardMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/VisibleColumnsMenu.js b/components/frontend/src/header_footer/settings_menu/VisibleColumnsMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/VisibleColumnsMenu.js
rename to components/frontend/src/header_footer/settings_menu/VisibleColumnsMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/VisibleIssueDetailsMenu.js b/components/frontend/src/header_footer/settings_menu/VisibleIssueDetailsMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/VisibleIssueDetailsMenu.js
rename to components/frontend/src/header_footer/settings_menu/VisibleIssueDetailsMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/VisibleMetricMenu.js b/components/frontend/src/header_footer/settings_menu/VisibleMetricMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/VisibleMetricMenu.js
rename to components/frontend/src/header_footer/settings_menu/VisibleMetricMenu.jsx
diff --git a/components/frontend/src/header_footer/settings_menu/VisibleTagMenu.js b/components/frontend/src/header_footer/settings_menu/VisibleTagMenu.jsx
similarity index 100%
rename from components/frontend/src/header_footer/settings_menu/VisibleTagMenu.js
rename to components/frontend/src/header_footer/settings_menu/VisibleTagMenu.jsx
diff --git a/components/frontend/src/index.js b/components/frontend/src/index.jsx
similarity index 100%
rename from components/frontend/src/index.js
rename to components/frontend/src/index.jsx
diff --git a/components/frontend/src/issue/IssueStatus.js b/components/frontend/src/issue/IssueStatus.jsx
similarity index 100%
rename from components/frontend/src/issue/IssueStatus.js
rename to components/frontend/src/issue/IssueStatus.jsx
diff --git a/components/frontend/src/issue/IssueStatus.test.js b/components/frontend/src/issue/IssueStatus.test.jsx
similarity index 100%
rename from components/frontend/src/issue/IssueStatus.test.js
rename to components/frontend/src/issue/IssueStatus.test.jsx
diff --git a/components/frontend/src/issue/IssuesRows.js b/components/frontend/src/issue/IssuesRows.jsx
similarity index 97%
rename from components/frontend/src/issue/IssuesRows.js
rename to components/frontend/src/issue/IssuesRows.jsx
index cf787a2414..0186fb5049 100644
--- a/components/frontend/src/issue/IssuesRows.js
+++ b/components/frontend/src/issue/IssuesRows.jsx
@@ -22,7 +22,9 @@ function CreateIssueButton({ issueTrackerConfigured, issueTrackerInstruction, me
             disabled={disabled || !issueTrackerConfigured}
             icon={<AddItemIcon />}
             itemType="issue"
-            onClick={() => add_metric_issue(metric_uuid, reload)}
+            onClick={() =>
+                add_metric_issue(metric_uuid, reload, (error) => showMessage("error", "Could not create issue", error))
+            }
             popup={
                 <>
                     Create a new issue for this {target} in the configured issue tracker and add its identifier to the
diff --git a/components/frontend/src/issue/IssuesRows.test.js b/components/frontend/src/issue/IssuesRows.test.jsx
similarity index 89%
rename from components/frontend/src/issue/IssuesRows.test.js
rename to components/frontend/src/issue/IssuesRows.test.jsx
index 0bd54c295e..9e9135baa3 100644
--- a/components/frontend/src/issue/IssuesRows.test.js
+++ b/components/frontend/src/issue/IssuesRows.test.jsx
@@ -5,8 +5,14 @@ import * as fetch_server_api from "../api/fetch_server_api"
 import { EDIT_REPORT_PERMISSION, Permissions } from "../context/Permissions"
 import { expectNoAccessibilityViolations } from "../testUtils"
 import { IssuesRows } from "./IssuesRows"
+import * as toast from "../widgets/toast"
 
 jest.mock("../api/fetch_server_api.js")
+jest.mock("../widgets/toast.jsx")
+
+beforeEach(() => {
+    jest.resetAllMocks()
+})
 
 const reportWithIssueTracker = {
     issue_tracker: {
@@ -138,6 +144,21 @@ it("shows issue id suggestions", async () => {
     await expectNoAccessibilityViolations(container)
 })
 
+it("shows an error message if fetching suggestions fails", async () => {
+    fetch_server_api.fetch_server_api = jest.fn().mockRejectedValue(new Error("fetching suggestions failed"))
+    const { container } = renderIssuesRow({
+        report: { issue_tracker: { type: "Jira", parameters: { url: "https://jira" } } },
+    })
+    await userEvent.type(screen.getByLabelText(/Issue identifiers/), "u")
+    expect(toast.showMessage).toHaveBeenCalledTimes(1)
+    expect(toast.showMessage).toHaveBeenCalledWith(
+        "error",
+        "Could not fetch issue identifiers",
+        "Error: fetching suggestions failed",
+    )
+    await expectNoAccessibilityViolations(container)
+})
+
 it("shows no issue id suggestions without a query", async () => {
     fetch_server_api.fetch_server_api = jest
         .fn()
diff --git a/components/frontend/src/measurement/MeasurementSources.js b/components/frontend/src/measurement/MeasurementSources.jsx
similarity index 100%
rename from components/frontend/src/measurement/MeasurementSources.js
rename to components/frontend/src/measurement/MeasurementSources.jsx
diff --git a/components/frontend/src/measurement/MeasurementSources.test.js b/components/frontend/src/measurement/MeasurementSources.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/MeasurementSources.test.js
rename to components/frontend/src/measurement/MeasurementSources.test.jsx
diff --git a/components/frontend/src/measurement/MeasurementTarget.js b/components/frontend/src/measurement/MeasurementTarget.jsx
similarity index 100%
rename from components/frontend/src/measurement/MeasurementTarget.js
rename to components/frontend/src/measurement/MeasurementTarget.jsx
diff --git a/components/frontend/src/measurement/MeasurementTarget.test.js b/components/frontend/src/measurement/MeasurementTarget.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/MeasurementTarget.test.js
rename to components/frontend/src/measurement/MeasurementTarget.test.jsx
diff --git a/components/frontend/src/measurement/MeasurementValue.js b/components/frontend/src/measurement/MeasurementValue.jsx
similarity index 100%
rename from components/frontend/src/measurement/MeasurementValue.js
rename to components/frontend/src/measurement/MeasurementValue.jsx
diff --git a/components/frontend/src/measurement/MeasurementValue.test.js b/components/frontend/src/measurement/MeasurementValue.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/MeasurementValue.test.js
rename to components/frontend/src/measurement/MeasurementValue.test.jsx
diff --git a/components/frontend/src/measurement/Overrun.js b/components/frontend/src/measurement/Overrun.jsx
similarity index 100%
rename from components/frontend/src/measurement/Overrun.js
rename to components/frontend/src/measurement/Overrun.jsx
diff --git a/components/frontend/src/measurement/Overrun.test.js b/components/frontend/src/measurement/Overrun.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/Overrun.test.js
rename to components/frontend/src/measurement/Overrun.test.jsx
diff --git a/components/frontend/src/measurement/SourceStatus.js b/components/frontend/src/measurement/SourceStatus.jsx
similarity index 100%
rename from components/frontend/src/measurement/SourceStatus.js
rename to components/frontend/src/measurement/SourceStatus.jsx
diff --git a/components/frontend/src/measurement/SourceStatus.test.js b/components/frontend/src/measurement/SourceStatus.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/SourceStatus.test.js
rename to components/frontend/src/measurement/SourceStatus.test.jsx
diff --git a/components/frontend/src/measurement/StatusIcon.js b/components/frontend/src/measurement/StatusIcon.jsx
similarity index 100%
rename from components/frontend/src/measurement/StatusIcon.js
rename to components/frontend/src/measurement/StatusIcon.jsx
diff --git a/components/frontend/src/measurement/StatusIcon.test.js b/components/frontend/src/measurement/StatusIcon.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/StatusIcon.test.js
rename to components/frontend/src/measurement/StatusIcon.test.jsx
diff --git a/components/frontend/src/measurement/TimeLeft.js b/components/frontend/src/measurement/TimeLeft.jsx
similarity index 100%
rename from components/frontend/src/measurement/TimeLeft.js
rename to components/frontend/src/measurement/TimeLeft.jsx
diff --git a/components/frontend/src/measurement/TimeLeft.test.js b/components/frontend/src/measurement/TimeLeft.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/TimeLeft.test.js
rename to components/frontend/src/measurement/TimeLeft.test.jsx
diff --git a/components/frontend/src/measurement/TrendSparkline.js b/components/frontend/src/measurement/TrendSparkline.jsx
similarity index 100%
rename from components/frontend/src/measurement/TrendSparkline.js
rename to components/frontend/src/measurement/TrendSparkline.jsx
diff --git a/components/frontend/src/measurement/TrendSparkline.test.js b/components/frontend/src/measurement/TrendSparkline.test.jsx
similarity index 100%
rename from components/frontend/src/measurement/TrendSparkline.test.js
rename to components/frontend/src/measurement/TrendSparkline.test.jsx
diff --git a/components/frontend/src/metric/MetricConfigurationParameters.js b/components/frontend/src/metric/MetricConfigurationParameters.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricConfigurationParameters.js
rename to components/frontend/src/metric/MetricConfigurationParameters.jsx
diff --git a/components/frontend/src/metric/MetricConfigurationParameters.test.js b/components/frontend/src/metric/MetricConfigurationParameters.test.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricConfigurationParameters.test.js
rename to components/frontend/src/metric/MetricConfigurationParameters.test.jsx
diff --git a/components/frontend/src/metric/MetricDebtParameters.js b/components/frontend/src/metric/MetricDebtParameters.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricDebtParameters.js
rename to components/frontend/src/metric/MetricDebtParameters.jsx
diff --git a/components/frontend/src/metric/MetricDebtParameters.test.js b/components/frontend/src/metric/MetricDebtParameters.test.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricDebtParameters.test.js
rename to components/frontend/src/metric/MetricDebtParameters.test.jsx
diff --git a/components/frontend/src/metric/MetricDetails.js b/components/frontend/src/metric/MetricDetails.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricDetails.js
rename to components/frontend/src/metric/MetricDetails.jsx
diff --git a/components/frontend/src/metric/MetricDetails.test.js b/components/frontend/src/metric/MetricDetails.test.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricDetails.test.js
rename to components/frontend/src/metric/MetricDetails.test.jsx
diff --git a/components/frontend/src/metric/MetricType.js b/components/frontend/src/metric/MetricType.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricType.js
rename to components/frontend/src/metric/MetricType.jsx
diff --git a/components/frontend/src/metric/MetricType.test.js b/components/frontend/src/metric/MetricType.test.jsx
similarity index 100%
rename from components/frontend/src/metric/MetricType.test.js
rename to components/frontend/src/metric/MetricType.test.jsx
diff --git a/components/frontend/src/metric/Target.js b/components/frontend/src/metric/Target.jsx
similarity index 100%
rename from components/frontend/src/metric/Target.js
rename to components/frontend/src/metric/Target.jsx
diff --git a/components/frontend/src/metric/Target.test.js b/components/frontend/src/metric/Target.test.jsx
similarity index 100%
rename from components/frontend/src/metric/Target.test.js
rename to components/frontend/src/metric/Target.test.jsx
diff --git a/components/frontend/src/metric/TargetVisualiser.js b/components/frontend/src/metric/TargetVisualiser.jsx
similarity index 100%
rename from components/frontend/src/metric/TargetVisualiser.js
rename to components/frontend/src/metric/TargetVisualiser.jsx
diff --git a/components/frontend/src/metric/TargetVisualiser.test.js b/components/frontend/src/metric/TargetVisualiser.test.jsx
similarity index 100%
rename from components/frontend/src/metric/TargetVisualiser.test.js
rename to components/frontend/src/metric/TargetVisualiser.test.jsx
diff --git a/components/frontend/src/metric/TrendGraph.js b/components/frontend/src/metric/TrendGraph.jsx
similarity index 85%
rename from components/frontend/src/metric/TrendGraph.js
rename to components/frontend/src/metric/TrendGraph.jsx
index b5076287d9..532124746f 100644
--- a/components/frontend/src/metric/TrendGraph.js
+++ b/components/frontend/src/metric/TrendGraph.jsx
@@ -48,19 +48,11 @@ export function TrendGraph({ metric, measurements, loading }) {
     )
     let max_y = niceNumber(Math.max(...measurementValues))
     let measurementPoints = [] // The measurement values as (x, y) coordinates
-    let previousX2 = new Date("2000-01-01")
     measurements.forEach((measurement, index) => {
-        const x1 = new Date(measurement.start)
-        const x2 = new Date(measurement.end)
-        // Make sure each measurement has a positive width, or VictoryChart won't draw the area
-        if (x1.getTime() <= previousX2.getTime()) {
-            x1.setSeconds(x1.getSeconds() + (previousX2.getSeconds() - x1.getSeconds()) + 1)
-        }
-        if (x2.getTime() <= x1.getTime()) {
-            x2.setSeconds(x2.getSeconds() + (x1.getSeconds() - x2.getSeconds()) + 1)
-        }
-        previousX2 = x2
-        measurementPoints.push({ y: measurementValues[index], x: x1 }, { y: measurementValues[index], x: x2 })
+        measurementPoints.push(
+            { y: measurementValues[index], x: new Date(measurement.start) },
+            { y: measurementValues[index], x: new Date(measurement.end) },
+        )
     })
     const axisStyle = {
         axisLabel: { padding: 30, fontSize: 11, fill: color, fontFamily: fontFamily },
diff --git a/components/frontend/src/metric/TrendGraph.test.js b/components/frontend/src/metric/TrendGraph.test.jsx
similarity index 100%
rename from components/frontend/src/metric/TrendGraph.test.js
rename to components/frontend/src/metric/TrendGraph.test.jsx
diff --git a/components/frontend/src/metric/status.js b/components/frontend/src/metric/status.jsx
similarity index 100%
rename from components/frontend/src/metric/status.js
rename to components/frontend/src/metric/status.jsx
diff --git a/components/frontend/src/notification/NotificationDestinations.js b/components/frontend/src/notification/NotificationDestinations.jsx
similarity index 100%
rename from components/frontend/src/notification/NotificationDestinations.js
rename to components/frontend/src/notification/NotificationDestinations.jsx
diff --git a/components/frontend/src/notification/NotificationDestinations.test.js b/components/frontend/src/notification/NotificationDestinations.test.jsx
similarity index 100%
rename from components/frontend/src/notification/NotificationDestinations.test.js
rename to components/frontend/src/notification/NotificationDestinations.test.jsx
diff --git a/components/frontend/src/report/IssueTracker.js b/components/frontend/src/report/IssueTracker.jsx
similarity index 100%
rename from components/frontend/src/report/IssueTracker.js
rename to components/frontend/src/report/IssueTracker.jsx
diff --git a/components/frontend/src/report/IssueTracker.test.js b/components/frontend/src/report/IssueTracker.test.jsx
similarity index 100%
rename from components/frontend/src/report/IssueTracker.test.js
rename to components/frontend/src/report/IssueTracker.test.jsx
diff --git a/components/frontend/src/report/Report.js b/components/frontend/src/report/Report.jsx
similarity index 100%
rename from components/frontend/src/report/Report.js
rename to components/frontend/src/report/Report.jsx
diff --git a/components/frontend/src/report/Report.test.js b/components/frontend/src/report/Report.test.jsx
similarity index 100%
rename from components/frontend/src/report/Report.test.js
rename to components/frontend/src/report/Report.test.jsx
diff --git a/components/frontend/src/report/ReportDashboard.js b/components/frontend/src/report/ReportDashboard.jsx
similarity index 100%
rename from components/frontend/src/report/ReportDashboard.js
rename to components/frontend/src/report/ReportDashboard.jsx
diff --git a/components/frontend/src/report/ReportDashboard.test.js b/components/frontend/src/report/ReportDashboard.test.jsx
similarity index 100%
rename from components/frontend/src/report/ReportDashboard.test.js
rename to components/frontend/src/report/ReportDashboard.test.jsx
diff --git a/components/frontend/src/report/ReportTitle.js b/components/frontend/src/report/ReportTitle.jsx
similarity index 100%
rename from components/frontend/src/report/ReportTitle.js
rename to components/frontend/src/report/ReportTitle.jsx
diff --git a/components/frontend/src/report/ReportTitle.test.js b/components/frontend/src/report/ReportTitle.test.jsx
similarity index 100%
rename from components/frontend/src/report/ReportTitle.test.js
rename to components/frontend/src/report/ReportTitle.test.jsx
diff --git a/components/frontend/src/report/ReportsOverview.js b/components/frontend/src/report/ReportsOverview.jsx
similarity index 100%
rename from components/frontend/src/report/ReportsOverview.js
rename to components/frontend/src/report/ReportsOverview.jsx
diff --git a/components/frontend/src/report/ReportsOverview.test.js b/components/frontend/src/report/ReportsOverview.test.jsx
similarity index 100%
rename from components/frontend/src/report/ReportsOverview.test.js
rename to components/frontend/src/report/ReportsOverview.test.jsx
diff --git a/components/frontend/src/report/ReportsOverviewDashboard.js b/components/frontend/src/report/ReportsOverviewDashboard.jsx
similarity index 100%
rename from components/frontend/src/report/ReportsOverviewDashboard.js
rename to components/frontend/src/report/ReportsOverviewDashboard.jsx
diff --git a/components/frontend/src/report/ReportsOverviewDashboard.test.js b/components/frontend/src/report/ReportsOverviewDashboard.test.jsx
similarity index 100%
rename from components/frontend/src/report/ReportsOverviewDashboard.test.js
rename to components/frontend/src/report/ReportsOverviewDashboard.test.jsx
diff --git a/components/frontend/src/report/ReportsOverviewTitle.js b/components/frontend/src/report/ReportsOverviewTitle.jsx
similarity index 100%
rename from components/frontend/src/report/ReportsOverviewTitle.js
rename to components/frontend/src/report/ReportsOverviewTitle.jsx
diff --git a/components/frontend/src/report/ReportsOverviewTitle.test.js b/components/frontend/src/report/ReportsOverviewTitle.test.jsx
similarity index 100%
rename from components/frontend/src/report/ReportsOverviewTitle.test.js
rename to components/frontend/src/report/ReportsOverviewTitle.test.jsx
diff --git a/components/frontend/src/report/report_utils.js b/components/frontend/src/report/report_utils.jsx
similarity index 100%
rename from components/frontend/src/report/report_utils.js
rename to components/frontend/src/report/report_utils.jsx
diff --git a/components/frontend/src/source/Logo.js b/components/frontend/src/source/Logo.jsx
similarity index 100%
rename from components/frontend/src/source/Logo.js
rename to components/frontend/src/source/Logo.jsx
diff --git a/components/frontend/src/source/Source.js b/components/frontend/src/source/Source.jsx
similarity index 100%
rename from components/frontend/src/source/Source.js
rename to components/frontend/src/source/Source.jsx
diff --git a/components/frontend/src/source/Source.test.js b/components/frontend/src/source/Source.test.jsx
similarity index 100%
rename from components/frontend/src/source/Source.test.js
rename to components/frontend/src/source/Source.test.jsx
diff --git a/components/frontend/src/source/SourceEntities.js b/components/frontend/src/source/SourceEntities.jsx
similarity index 98%
rename from components/frontend/src/source/SourceEntities.js
rename to components/frontend/src/source/SourceEntities.jsx
index 109845ef5b..8b09037425 100644
--- a/components/frontend/src/source/SourceEntities.js
+++ b/components/frontend/src/source/SourceEntities.jsx
@@ -80,15 +80,6 @@ alignment.propTypes = {
     attributeAlignment: alignmentPropType,
 }
 
-function sorted(column, sortColumn, sortDirection) {
-    return column === sortColumn ? sortDirection : null
-}
-sorted.propTypes = {
-    column: string,
-    sortColumn: string,
-    sortDirection: sortDirectionPropType,
-}
-
 function EntityAttributeHeaderCell({ entityAttribute, ...sortProps }) {
     function handleSort(column) {
         sortProps.setColumnType(entityAttribute.type || "text")
diff --git a/components/frontend/src/source/SourceEntities.test.js b/components/frontend/src/source/SourceEntities.test.jsx
similarity index 100%
rename from components/frontend/src/source/SourceEntities.test.js
rename to components/frontend/src/source/SourceEntities.test.jsx
diff --git a/components/frontend/src/source/SourceEntity.js b/components/frontend/src/source/SourceEntity.jsx
similarity index 100%
rename from components/frontend/src/source/SourceEntity.js
rename to components/frontend/src/source/SourceEntity.jsx
diff --git a/components/frontend/src/source/SourceEntity.test.js b/components/frontend/src/source/SourceEntity.test.jsx
similarity index 100%
rename from components/frontend/src/source/SourceEntity.test.js
rename to components/frontend/src/source/SourceEntity.test.jsx
diff --git a/components/frontend/src/source/SourceEntityAttribute.js b/components/frontend/src/source/SourceEntityAttribute.jsx
similarity index 100%
rename from components/frontend/src/source/SourceEntityAttribute.js
rename to components/frontend/src/source/SourceEntityAttribute.jsx
diff --git a/components/frontend/src/source/SourceEntityAttribute.test.js b/components/frontend/src/source/SourceEntityAttribute.test.jsx
similarity index 100%
rename from components/frontend/src/source/SourceEntityAttribute.test.js
rename to components/frontend/src/source/SourceEntityAttribute.test.jsx
diff --git a/components/frontend/src/source/SourceEntityDetails.js b/components/frontend/src/source/SourceEntityDetails.jsx
similarity index 100%
rename from components/frontend/src/source/SourceEntityDetails.js
rename to components/frontend/src/source/SourceEntityDetails.jsx
diff --git a/components/frontend/src/source/SourceEntityDetails.test.js b/components/frontend/src/source/SourceEntityDetails.test.jsx
similarity index 100%
rename from components/frontend/src/source/SourceEntityDetails.test.js
rename to components/frontend/src/source/SourceEntityDetails.test.jsx
diff --git a/components/frontend/src/source/SourceParameter.js b/components/frontend/src/source/SourceParameter.jsx
similarity index 100%
rename from components/frontend/src/source/SourceParameter.js
rename to components/frontend/src/source/SourceParameter.jsx
diff --git a/components/frontend/src/source/SourceParameter.test.js b/components/frontend/src/source/SourceParameter.test.jsx
similarity index 100%
rename from components/frontend/src/source/SourceParameter.test.js
rename to components/frontend/src/source/SourceParameter.test.jsx
diff --git a/components/frontend/src/source/SourceParameters.js b/components/frontend/src/source/SourceParameters.jsx
similarity index 100%
rename from components/frontend/src/source/SourceParameters.js
rename to components/frontend/src/source/SourceParameters.jsx
diff --git a/components/frontend/src/source/SourceParameters.test.js b/components/frontend/src/source/SourceParameters.test.jsx
similarity index 100%
rename from components/frontend/src/source/SourceParameters.test.js
rename to components/frontend/src/source/SourceParameters.test.jsx
diff --git a/components/frontend/src/source/SourceType.js b/components/frontend/src/source/SourceType.jsx
similarity index 100%
rename from components/frontend/src/source/SourceType.js
rename to components/frontend/src/source/SourceType.jsx
diff --git a/components/frontend/src/source/SourceType.test.js b/components/frontend/src/source/SourceType.test.jsx
similarity index 100%
rename from components/frontend/src/source/SourceType.test.js
rename to components/frontend/src/source/SourceType.test.jsx
diff --git a/components/frontend/src/source/Sources.js b/components/frontend/src/source/Sources.jsx
similarity index 100%
rename from components/frontend/src/source/Sources.js
rename to components/frontend/src/source/Sources.jsx
diff --git a/components/frontend/src/source/Sources.test.js b/components/frontend/src/source/Sources.test.jsx
similarity index 99%
rename from components/frontend/src/source/Sources.test.js
rename to components/frontend/src/source/Sources.test.jsx
index 1307e96a9b..56c6fa5817 100644
--- a/components/frontend/src/source/Sources.test.js
+++ b/components/frontend/src/source/Sources.test.jsx
@@ -9,7 +9,7 @@ import * as toast from "../widgets/toast"
 import { Sources } from "./Sources"
 
 jest.mock("../api/fetch_server_api.js")
-jest.mock("../widgets/toast.js")
+jest.mock("../widgets/toast.jsx")
 
 const dataModel = {
     metrics: { metric_type: { sources: ["source_type1", "source_type2"] } },
diff --git a/components/frontend/src/subject/Subject.js b/components/frontend/src/subject/Subject.jsx
similarity index 100%
rename from components/frontend/src/subject/Subject.js
rename to components/frontend/src/subject/Subject.jsx
diff --git a/components/frontend/src/subject/Subject.test.js b/components/frontend/src/subject/Subject.test.jsx
similarity index 100%
rename from components/frontend/src/subject/Subject.test.js
rename to components/frontend/src/subject/Subject.test.jsx
diff --git a/components/frontend/src/subject/SubjectParameters.js b/components/frontend/src/subject/SubjectParameters.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectParameters.js
rename to components/frontend/src/subject/SubjectParameters.jsx
diff --git a/components/frontend/src/subject/SubjectTable.js b/components/frontend/src/subject/SubjectTable.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTable.js
rename to components/frontend/src/subject/SubjectTable.jsx
diff --git a/components/frontend/src/subject/SubjectTable.test.js b/components/frontend/src/subject/SubjectTable.test.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTable.test.js
rename to components/frontend/src/subject/SubjectTable.test.jsx
diff --git a/components/frontend/src/subject/SubjectTableBody.js b/components/frontend/src/subject/SubjectTableBody.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTableBody.js
rename to components/frontend/src/subject/SubjectTableBody.jsx
diff --git a/components/frontend/src/subject/SubjectTableFooter.js b/components/frontend/src/subject/SubjectTableFooter.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTableFooter.js
rename to components/frontend/src/subject/SubjectTableFooter.jsx
diff --git a/components/frontend/src/subject/SubjectTableFooter.test.js b/components/frontend/src/subject/SubjectTableFooter.test.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTableFooter.test.js
rename to components/frontend/src/subject/SubjectTableFooter.test.jsx
diff --git a/components/frontend/src/subject/SubjectTableHeader.js b/components/frontend/src/subject/SubjectTableHeader.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTableHeader.js
rename to components/frontend/src/subject/SubjectTableHeader.jsx
diff --git a/components/frontend/src/subject/SubjectTableHeader.test.js b/components/frontend/src/subject/SubjectTableHeader.test.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTableHeader.test.js
rename to components/frontend/src/subject/SubjectTableHeader.test.jsx
diff --git a/components/frontend/src/subject/SubjectTableRow.js b/components/frontend/src/subject/SubjectTableRow.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTableRow.js
rename to components/frontend/src/subject/SubjectTableRow.jsx
diff --git a/components/frontend/src/subject/SubjectTableRow.test.js b/components/frontend/src/subject/SubjectTableRow.test.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTableRow.test.js
rename to components/frontend/src/subject/SubjectTableRow.test.jsx
diff --git a/components/frontend/src/subject/SubjectTitle.js b/components/frontend/src/subject/SubjectTitle.jsx
similarity index 98%
rename from components/frontend/src/subject/SubjectTitle.js
rename to components/frontend/src/subject/SubjectTitle.jsx
index 11682dffc6..ac4a6d4732 100644
--- a/components/frontend/src/subject/SubjectTitle.js
+++ b/components/frontend/src/subject/SubjectTitle.jsx
@@ -57,7 +57,7 @@ export function SubjectTitle({
     settings,
 }) {
     const dataModel = useContext(DataModel)
-    const subjectType = getSubjectType(subject.type, dataModel.subjects) || { name: "Unknown subject type" }
+    const subjectType = getSubjectType(subject.type, dataModel.subjects)
     const subjectName = subject.name || subjectType.name
     const subjectTitle = (atReportsOverview ? report.title + " ❯ " : "") + subjectName
     const subjectUrl = `${window.location}#${subject_uuid}`
diff --git a/components/frontend/src/subject/SubjectTitle.test.js b/components/frontend/src/subject/SubjectTitle.test.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectTitle.test.js
rename to components/frontend/src/subject/SubjectTitle.test.jsx
diff --git a/components/frontend/src/subject/SubjectType.js b/components/frontend/src/subject/SubjectType.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectType.js
rename to components/frontend/src/subject/SubjectType.jsx
diff --git a/components/frontend/src/subject/Subjects.js b/components/frontend/src/subject/Subjects.jsx
similarity index 100%
rename from components/frontend/src/subject/Subjects.js
rename to components/frontend/src/subject/Subjects.jsx
diff --git a/components/frontend/src/subject/Subjects.test.js b/components/frontend/src/subject/Subjects.test.jsx
similarity index 100%
rename from components/frontend/src/subject/Subjects.test.js
rename to components/frontend/src/subject/Subjects.test.jsx
diff --git a/components/frontend/src/subject/SubjectsButtonRow.js b/components/frontend/src/subject/SubjectsButtonRow.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectsButtonRow.js
rename to components/frontend/src/subject/SubjectsButtonRow.jsx
diff --git a/components/frontend/src/subject/SubjectsButtonRow.test.js b/components/frontend/src/subject/SubjectsButtonRow.test.jsx
similarity index 100%
rename from components/frontend/src/subject/SubjectsButtonRow.test.js
rename to components/frontend/src/subject/SubjectsButtonRow.test.jsx
diff --git a/components/frontend/src/utils.js b/components/frontend/src/utils.jsx
similarity index 99%
rename from components/frontend/src/utils.js
rename to components/frontend/src/utils.jsx
index 2b8ea6ab87..e9921a88fb 100644
--- a/components/frontend/src/utils.js
+++ b/components/frontend/src/utils.jsx
@@ -77,10 +77,11 @@ export function getSubjectType(subjectTypeKey, subjects) {
     }
     for (const childSubject of childSubjects(subjects)) {
         const result = getSubjectType(subjectTypeKey, childSubject.subjects)
-        if (result) {
+        if (result.name !== "Unknown subject type") {
             return result
         }
     }
+    return { name: "Unknown subject type" }
 }
 getSubjectType.propTypes = {
     subjectTypeKey: string,
diff --git a/components/frontend/src/utils.test.js b/components/frontend/src/utils.test.jsx
similarity index 99%
rename from components/frontend/src/utils.test.js
rename to components/frontend/src/utils.test.jsx
index 6754964ff7..98ff1e62a0 100644
--- a/components/frontend/src/utils.test.js
+++ b/components/frontend/src/utils.test.jsx
@@ -158,6 +158,12 @@ it("gets the subject type recursively from the second subject type", () => {
     ).toStrictEqual(subject)
 })
 
+it("gets an unknown subject type", () => {
+    expect(getSubjectType("other subject", { subject: { name: "Subject" } })).toStrictEqual({
+        name: "Unknown subject type",
+    })
+})
+
 it("gets the subject type metrics", () => {
     expect(getSubjectTypeMetrics("subject", { subject: { metrics: ["metric"] } })).toStrictEqual(["metric"])
 })
diff --git a/components/frontend/src/widgets/Avatar.js b/components/frontend/src/widgets/Avatar.jsx
similarity index 100%
rename from components/frontend/src/widgets/Avatar.js
rename to components/frontend/src/widgets/Avatar.jsx
diff --git a/components/frontend/src/widgets/Avatar.test.js b/components/frontend/src/widgets/Avatar.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/Avatar.test.js
rename to components/frontend/src/widgets/Avatar.test.jsx
diff --git a/components/frontend/src/widgets/ButtonRow.js b/components/frontend/src/widgets/ButtonRow.jsx
similarity index 100%
rename from components/frontend/src/widgets/ButtonRow.js
rename to components/frontend/src/widgets/ButtonRow.jsx
diff --git a/components/frontend/src/widgets/CommentSegment.js b/components/frontend/src/widgets/CommentSegment.jsx
similarity index 100%
rename from components/frontend/src/widgets/CommentSegment.js
rename to components/frontend/src/widgets/CommentSegment.jsx
diff --git a/components/frontend/src/widgets/CommentSegment.test.js b/components/frontend/src/widgets/CommentSegment.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/CommentSegment.test.js
rename to components/frontend/src/widgets/CommentSegment.test.jsx
diff --git a/components/frontend/src/widgets/DivWithHTML.js b/components/frontend/src/widgets/DivWithHTML.jsx
similarity index 100%
rename from components/frontend/src/widgets/DivWithHTML.js
rename to components/frontend/src/widgets/DivWithHTML.jsx
diff --git a/components/frontend/src/widgets/DivWithHTML.test.js b/components/frontend/src/widgets/DivWithHTML.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/DivWithHTML.test.js
rename to components/frontend/src/widgets/DivWithHTML.test.jsx
diff --git a/components/frontend/src/widgets/Header.js b/components/frontend/src/widgets/Header.jsx
similarity index 100%
rename from components/frontend/src/widgets/Header.js
rename to components/frontend/src/widgets/Header.jsx
diff --git a/components/frontend/src/widgets/HeaderWithDetails.js b/components/frontend/src/widgets/HeaderWithDetails.jsx
similarity index 100%
rename from components/frontend/src/widgets/HeaderWithDetails.js
rename to components/frontend/src/widgets/HeaderWithDetails.jsx
diff --git a/components/frontend/src/widgets/HeaderWithDetails.test.js b/components/frontend/src/widgets/HeaderWithDetails.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/HeaderWithDetails.test.js
rename to components/frontend/src/widgets/HeaderWithDetails.test.jsx
diff --git a/components/frontend/src/widgets/HyperLink.js b/components/frontend/src/widgets/HyperLink.jsx
similarity index 100%
rename from components/frontend/src/widgets/HyperLink.js
rename to components/frontend/src/widgets/HyperLink.jsx
diff --git a/components/frontend/src/widgets/Hyperlink.test.js b/components/frontend/src/widgets/Hyperlink.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/Hyperlink.test.js
rename to components/frontend/src/widgets/Hyperlink.test.jsx
diff --git a/components/frontend/src/widgets/ItemBreadcrumb.js b/components/frontend/src/widgets/ItemBreadcrumb.jsx
similarity index 100%
rename from components/frontend/src/widgets/ItemBreadcrumb.js
rename to components/frontend/src/widgets/ItemBreadcrumb.jsx
diff --git a/components/frontend/src/widgets/Label.js b/components/frontend/src/widgets/Label.jsx
similarity index 100%
rename from components/frontend/src/widgets/Label.js
rename to components/frontend/src/widgets/Label.jsx
diff --git a/components/frontend/src/widgets/Placeholder.js b/components/frontend/src/widgets/Placeholder.jsx
similarity index 100%
rename from components/frontend/src/widgets/Placeholder.js
rename to components/frontend/src/widgets/Placeholder.jsx
diff --git a/components/frontend/src/widgets/ReadTheDocsLink.js b/components/frontend/src/widgets/ReadTheDocsLink.jsx
similarity index 100%
rename from components/frontend/src/widgets/ReadTheDocsLink.js
rename to components/frontend/src/widgets/ReadTheDocsLink.jsx
diff --git a/components/frontend/src/widgets/TableHeaderCell.js b/components/frontend/src/widgets/TableHeaderCell.jsx
similarity index 100%
rename from components/frontend/src/widgets/TableHeaderCell.js
rename to components/frontend/src/widgets/TableHeaderCell.jsx
diff --git a/components/frontend/src/widgets/TableHeaderCell.test.js b/components/frontend/src/widgets/TableHeaderCell.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/TableHeaderCell.test.js
rename to components/frontend/src/widgets/TableHeaderCell.test.jsx
diff --git a/components/frontend/src/widgets/TableRowWithDetails.js b/components/frontend/src/widgets/TableRowWithDetails.jsx
similarity index 100%
rename from components/frontend/src/widgets/TableRowWithDetails.js
rename to components/frontend/src/widgets/TableRowWithDetails.jsx
diff --git a/components/frontend/src/widgets/TableRowWithDetails.test.js b/components/frontend/src/widgets/TableRowWithDetails.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/TableRowWithDetails.test.js
rename to components/frontend/src/widgets/TableRowWithDetails.test.jsx
diff --git a/components/frontend/src/widgets/Tabs.js b/components/frontend/src/widgets/Tabs.jsx
similarity index 100%
rename from components/frontend/src/widgets/Tabs.js
rename to components/frontend/src/widgets/Tabs.jsx
diff --git a/components/frontend/src/widgets/Tag.js b/components/frontend/src/widgets/Tag.jsx
similarity index 100%
rename from components/frontend/src/widgets/Tag.js
rename to components/frontend/src/widgets/Tag.jsx
diff --git a/components/frontend/src/widgets/Tag.test.js b/components/frontend/src/widgets/Tag.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/Tag.test.js
rename to components/frontend/src/widgets/Tag.test.jsx
diff --git a/components/frontend/src/widgets/TimeAgoWithDate.js b/components/frontend/src/widgets/TimeAgoWithDate.jsx
similarity index 100%
rename from components/frontend/src/widgets/TimeAgoWithDate.js
rename to components/frontend/src/widgets/TimeAgoWithDate.jsx
diff --git a/components/frontend/src/widgets/WarningMessage.js b/components/frontend/src/widgets/WarningMessage.jsx
similarity index 100%
rename from components/frontend/src/widgets/WarningMessage.js
rename to components/frontend/src/widgets/WarningMessage.jsx
diff --git a/components/frontend/src/widgets/WarningMessage.test.js b/components/frontend/src/widgets/WarningMessage.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/WarningMessage.test.js
rename to components/frontend/src/widgets/WarningMessage.test.jsx
diff --git a/components/frontend/src/widgets/buttons/ActionAndItemPickerButton.js b/components/frontend/src/widgets/buttons/ActionAndItemPickerButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/ActionAndItemPickerButton.js
rename to components/frontend/src/widgets/buttons/ActionAndItemPickerButton.jsx
diff --git a/components/frontend/src/widgets/buttons/ActionButton.js b/components/frontend/src/widgets/buttons/ActionButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/ActionButton.js
rename to components/frontend/src/widgets/buttons/ActionButton.jsx
diff --git a/components/frontend/src/widgets/buttons/AddButton.js b/components/frontend/src/widgets/buttons/AddButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/AddButton.js
rename to components/frontend/src/widgets/buttons/AddButton.jsx
diff --git a/components/frontend/src/widgets/buttons/AddButton.test.js b/components/frontend/src/widgets/buttons/AddButton.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/AddButton.test.js
rename to components/frontend/src/widgets/buttons/AddButton.test.jsx
diff --git a/components/frontend/src/widgets/buttons/AddDropdownButton.js b/components/frontend/src/widgets/buttons/AddDropdownButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/AddDropdownButton.js
rename to components/frontend/src/widgets/buttons/AddDropdownButton.jsx
diff --git a/components/frontend/src/widgets/buttons/AddDropdownButton.test.js b/components/frontend/src/widgets/buttons/AddDropdownButton.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/AddDropdownButton.test.js
rename to components/frontend/src/widgets/buttons/AddDropdownButton.test.jsx
diff --git a/components/frontend/src/widgets/buttons/CopyButton.js b/components/frontend/src/widgets/buttons/CopyButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/CopyButton.js
rename to components/frontend/src/widgets/buttons/CopyButton.jsx
diff --git a/components/frontend/src/widgets/buttons/CopyButton.test.js b/components/frontend/src/widgets/buttons/CopyButton.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/CopyButton.test.js
rename to components/frontend/src/widgets/buttons/CopyButton.test.jsx
diff --git a/components/frontend/src/widgets/buttons/DeleteButton.js b/components/frontend/src/widgets/buttons/DeleteButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/DeleteButton.js
rename to components/frontend/src/widgets/buttons/DeleteButton.jsx
diff --git a/components/frontend/src/widgets/buttons/DeleteButton.test.js b/components/frontend/src/widgets/buttons/DeleteButton.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/DeleteButton.test.js
rename to components/frontend/src/widgets/buttons/DeleteButton.test.jsx
diff --git a/components/frontend/src/widgets/buttons/ExpandButton.js b/components/frontend/src/widgets/buttons/ExpandButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/ExpandButton.js
rename to components/frontend/src/widgets/buttons/ExpandButton.jsx
diff --git a/components/frontend/src/widgets/buttons/MoveButton.js b/components/frontend/src/widgets/buttons/MoveButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/MoveButton.js
rename to components/frontend/src/widgets/buttons/MoveButton.jsx
diff --git a/components/frontend/src/widgets/buttons/MoveButton.test.js b/components/frontend/src/widgets/buttons/MoveButton.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/MoveButton.test.js
rename to components/frontend/src/widgets/buttons/MoveButton.test.jsx
diff --git a/components/frontend/src/widgets/buttons/PermLinkButton.js b/components/frontend/src/widgets/buttons/PermLinkButton.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/PermLinkButton.js
rename to components/frontend/src/widgets/buttons/PermLinkButton.jsx
diff --git a/components/frontend/src/widgets/buttons/PermLinkButton.test.js b/components/frontend/src/widgets/buttons/PermLinkButton.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/PermLinkButton.test.js
rename to components/frontend/src/widgets/buttons/PermLinkButton.test.jsx
diff --git a/components/frontend/src/widgets/buttons/ReorderButtonGroup.js b/components/frontend/src/widgets/buttons/ReorderButtonGroup.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/ReorderButtonGroup.js
rename to components/frontend/src/widgets/buttons/ReorderButtonGroup.jsx
diff --git a/components/frontend/src/widgets/buttons/ReorderButtonGroup.test.js b/components/frontend/src/widgets/buttons/ReorderButtonGroup.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/buttons/ReorderButtonGroup.test.js
rename to components/frontend/src/widgets/buttons/ReorderButtonGroup.test.jsx
diff --git a/components/frontend/src/widgets/icons.js b/components/frontend/src/widgets/icons.jsx
similarity index 93%
rename from components/frontend/src/widgets/icons.js
rename to components/frontend/src/widgets/icons.jsx
index 55fa0fe45f..525d606b42 100644
--- a/components/frontend/src/widgets/icons.js
+++ b/components/frontend/src/widgets/icons.jsx
@@ -1,7 +1,6 @@
 import AddIcon from "@mui/icons-material/Add"
 import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"
 import ArrowRightIcon from "@mui/icons-material/ArrowRight"
-import CalendarMonthIcon from "@mui/icons-material/CalendarMonth"
 import ContentCopyIcon from "@mui/icons-material/ContentCopy"
 import DeleteIcon from "@mui/icons-material/Delete"
 import LoopIcon from "@mui/icons-material/Loop"
@@ -15,10 +14,6 @@ export function AddItemIcon() {
     return <AddIcon fontSize="inherit" sx={{ verticalAlign: "middle" }} />
 }
 
-export function CalendarIcon() {
-    return <CalendarMonthIcon fontSize="inherit" sx={{ verticalAlign: "middle" }} />
-}
-
 export function CaretDown({ size }) {
     return <ArrowDropDownIcon title="expand" sx={{ verticalAlign: "middle", fontSize: size || "2.5em" }} />
 }
diff --git a/components/frontend/src/widgets/menu_options.js b/components/frontend/src/widgets/menu_options.jsx
similarity index 100%
rename from components/frontend/src/widgets/menu_options.js
rename to components/frontend/src/widgets/menu_options.jsx
diff --git a/components/frontend/src/widgets/menu_options.test.js b/components/frontend/src/widgets/menu_options.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/menu_options.test.js
rename to components/frontend/src/widgets/menu_options.test.jsx
diff --git a/components/frontend/src/widgets/toast.js b/components/frontend/src/widgets/toast.jsx
similarity index 100%
rename from components/frontend/src/widgets/toast.js
rename to components/frontend/src/widgets/toast.jsx
diff --git a/components/frontend/src/widgets/toast.test.js b/components/frontend/src/widgets/toast.test.jsx
similarity index 100%
rename from components/frontend/src/widgets/toast.test.js
rename to components/frontend/src/widgets/toast.test.jsx
diff --git a/sonar-project.properties b/sonar-project.properties
index 36b290aa87..f3f3cd132f 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -11,7 +11,7 @@ sonar.python.version=3.13
 
 # Exclude third party software and generated code from analysis
 sonar.exclusions=**/coverage/**/*,**/build/**/*,**/node_modules/**/*
-sonar.coverage.exclusions=components/frontend/coverage/**/*,**/*.test.js,**/src/index.js,**/setupTests.js,**/ci/**/*,**/build/**/*,docs/**/*,**/setup.py,**/tests/*.py
+sonar.coverage.exclusions=components/frontend/coverage/**/*,**/*.test.js?,**/src/index.jsx,**/setupTests.js,**/ci/**/*,**/build/**/*,docs/**/*,**/setup.py,**/tests/*.py
 
 # Unit tests
 sonar.python.xunit.reportPath=components/**/build/unittests.xml