diff --git a/config/last_updated.json b/config/last_updated.json
index 21c956f4..26fe5500 100644
--- a/config/last_updated.json
+++ b/config/last_updated.json
@@ -111,8 +111,8 @@
},
"/static/js/histogram.js": {
"date_published": "2018-05-08T00:00:00.000Z",
- "date_modified": "2025-12-06T00:00:00.000Z",
- "hash": "99e8e464ab39d5ad18392ee3451a09d6"
+ "date_modified": "2025-12-07T00:00:00.000Z",
+ "hash": "e63fe706198cb8564c6ed7ddd56e66f9"
},
"/static/js/index.js": {
"date_published": "2018-05-08T00:00:00.000Z",
@@ -166,23 +166,23 @@
},
"/static/js/techreport.js": {
"date_published": "2023-10-09T00:00:00.000Z",
- "date_modified": "2025-12-06T00:00:00.000Z",
- "hash": "01542635aed93dc48da5e84e58fefa02"
+ "date_modified": "2025-12-07T00:00:00.000Z",
+ "hash": "e581a509e8e35ec9645e37c71a5d8677"
},
"/static/js/techreport/section.js": {
"date_published": "2023-10-09T00:00:00.000Z",
- "date_modified": "2025-12-06T00:00:00.000Z",
- "hash": "78bb11d0e3a5ed3bb767f3e2bb8c25dc"
+ "date_modified": "2025-12-07T00:00:00.000Z",
+ "hash": "bf59e4e82aca2efb3d2ffa8be803f456"
},
"/static/js/techreport/timeseries.js": {
"date_published": "2023-10-09T00:00:00.000Z",
- "date_modified": "2025-12-06T00:00:00.000Z",
- "hash": "66106fc8e5a8ae322d813311e6366657"
+ "date_modified": "2025-12-07T00:00:00.000Z",
+ "hash": "a87f2f0026ad070e4bdf6f2e1c259fc5"
},
"/static/js/timeseries.js": {
"date_published": "2018-05-08T00:00:00.000Z",
- "date_modified": "2025-12-06T00:00:00.000Z",
- "hash": "862eb28316cd75685b535e2f71ae610a"
+ "date_modified": "2025-12-07T00:00:00.000Z",
+ "hash": "1145991117c15864eb7f80febcac9ba4"
},
"/static/js/web-vitals.js": {
"date_published": "2022-01-03T00:00:00.000Z",
diff --git a/src/js/components/drilldownHeader.js b/src/js/components/drilldownHeader.js
index c7eceb2b..9a0f6791 100644
--- a/src/js/components/drilldownHeader.js
+++ b/src/js/components/drilldownHeader.js
@@ -8,7 +8,7 @@ function setTitle(title) {
function setIcon(icon) {
const img = document.querySelector('h1 .title-img');
- const imgUrl = `https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/icons/${icon}`;
+ const imgUrl = `https://cdn.httparchive.org/v1/static/icons/${icon}`;
img.setAttribute('style', `background-image: url(${imgUrl})`);
}
diff --git a/src/js/histogram.js b/src/js/histogram.js
index d686844d..cd36cd1a 100644
--- a/src/js/histogram.js
+++ b/src/js/histogram.js
@@ -11,7 +11,7 @@ const [COLOR_DESKTOP, COLOR_MOBILE, COLOR_DESKTOP_ALT, COLOR_MOBILE_ALT] = Color
function histogram(metric, date, options) {
options.date = date;
options.metric = metric;
- const dataUrl = `https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${options.lens ? `${options.lens.id}/` : ''}${date}/${metric}.json`;
+ const dataUrl = `https://cdn.httparchive.org/v1/static/reports/${options.lens ? `${options.lens.id}/` : ''}${date}/${metric}.json`;
fetch(dataUrl)
.then(response => {
if (!response.ok) {
diff --git a/src/js/techreport/combobox.js b/src/js/techreport/combobox.js
index f79c7970..6fa0ad95 100644
--- a/src/js/techreport/combobox.js
+++ b/src/js/techreport/combobox.js
@@ -31,7 +31,7 @@ class ComboBox {
option.id = `${this.element.dataset.id}-${row.technology.replaceAll(' ','-')}`;
const logo = document.createElement('img');
logo.setAttribute('alt', '');
- logo.setAttribute('src', `https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/icons/${icon}`);
+ logo.setAttribute('src', `https://cdn.httparchive.org/v1/static/icons/${icon}`);
logo.setAttribute('loading', 'lazy');
option.append(logo);
if(this.selected.includes(row.technology)) {
@@ -200,7 +200,7 @@ class ComboBox {
/* Add the app logo */
const appIcon = document.createElement('img');
- appIcon.setAttribute('src', `https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/icons/${encodeURI(icon)}`);
+ appIcon.setAttribute('src', `https://cdn.httparchive.org/v1/static/icons/${encodeURI(icon)}`);
appIcon.setAttribute('alt', '');
appIcon.classList.add('logo');
deleteSelection.append(appIcon);
diff --git a/src/js/techreport/tableLinked.js b/src/js/techreport/tableLinked.js
index 9311d13c..09d8c3d1 100644
--- a/src/js/techreport/tableLinked.js
+++ b/src/js/techreport/tableLinked.js
@@ -107,7 +107,7 @@ class TableLinked {
wrapper.classList.add('app-wrapper');
const img = document.createElement('span');
- const imgUrl = `https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/icons/${encodeURI(technology[0]?.icon)}`;
+ const imgUrl = `https://cdn.httparchive.org/v1/static/icons/${encodeURI(technology[0]?.icon)}`;
img.setAttribute('aria-hidden', 'true');
img.setAttribute('style', `background-image: url(${imgUrl})`);
img.classList.add('app-img');
diff --git a/src/js/techreport/utils/constants.js b/src/js/techreport/utils/constants.js
index 02d394ce..5af2d718 100644
--- a/src/js/techreport/utils/constants.js
+++ b/src/js/techreport/utils/constants.js
@@ -1,4 +1,4 @@
-const apiBase = 'https://reports-prod-2vzgiib6.uc.gateway.dev/v1';
+const apiBase = 'https://cdn.httparchive.org/v1';
export const Constants = {
apiBase,
diff --git a/src/js/timeseries.js b/src/js/timeseries.js
index b61a7078..b949c2e6 100644
--- a/src/js/timeseries.js
+++ b/src/js/timeseries.js
@@ -8,7 +8,7 @@ import { el, prettyDate, chartExportOptions, drawMetricSummary, callOnceWhenVisi
function timeseries(metric, options, start, end) {
- const dataUrl = `https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${options.lens ? `${options.lens.id}/` : ''}${metric}.json`;
+ const dataUrl = `https://cdn.httparchive.org/v1/static/reports/${options.lens ? `${options.lens.id}/` : ''}${metric}.json`;
options.chartId = `${metric}-chart`;
options.tableId = `${metric}-table`;
options.metric = metric;
diff --git a/templates/report/report.html b/templates/report/report.html
index e1fef3a4..a7b7ffea 100644
--- a/templates/report/report.html
+++ b/templates/report/report.html
@@ -15,7 +15,7 @@
{% block head %}
{{ super() }}
-
+
{% endblock %}
diff --git a/tools/scripts/test_reports.sh b/tools/scripts/test_reports.sh
index 10c6550d..92f3ede2 100755
--- a/tools/scripts/test_reports.sh
+++ b/tools/scripts/test_reports.sh
@@ -22,20 +22,20 @@ LENSES="drupal magento wordpress top1k top10k top100k top1m"
# These dated report URLs are tested for 200 status
# We test the first and last report for each lens
REPORT_MONTHLY_URLS=$(cat <<-END
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${REPORT_DATE}/bootupJs.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${REPORT_DATE}/tcp.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${CRUX_REPORT_DATE}/cruxCls.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${CRUX_REPORT_DATE}/cruxOl.json
+https://cdn.httparchive.org/v1/static/reports/${REPORT_DATE}/bootupJs.json
+https://cdn.httparchive.org/v1/static/reports/${REPORT_DATE}/tcp.json
+https://cdn.httparchive.org/v1/static/reports/${CRUX_REPORT_DATE}/cruxCls.json
+https://cdn.httparchive.org/v1/static/reports/${CRUX_REPORT_DATE}/cruxOl.json
END
)
for LENS in ${LENSES}
do
REPORT_MONTHLY_URLS_LENS=$(cat <<-END
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/${REPORT_DATE}/bootupJs.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/${REPORT_DATE}/tcp.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/${CRUX_REPORT_DATE}/cruxCls.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/${CRUX_REPORT_DATE}/cruxOl.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/${REPORT_DATE}/bootupJs.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/${REPORT_DATE}/tcp.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/${CRUX_REPORT_DATE}/cruxCls.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/${CRUX_REPORT_DATE}/cruxOl.json
END
)
REPORT_MONTHLY_URLS="${REPORT_MONTHLY_URLS} ${REPORT_MONTHLY_URLS_LENS}"
@@ -45,16 +45,16 @@ done
# These timeseries URLs are tested if the date exists in the returned body
# We test the first and last report for each lens
TIMESERIES_URLS=$(cat <<-END
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/numUrls.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/a11yButtonName.json
+https://cdn.httparchive.org/v1/static/reports/numUrls.json
+https://cdn.httparchive.org/v1/static/reports/a11yButtonName.json
END
)
for LENS in ${LENSES}
do
TIMESERIES_URLS_LENS=$(cat <<-END
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/numUrls.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/a11yButtonName.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/numUrls.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/a11yButtonName.json
END
)
TIMESERIES_URLS="${TIMESERIES_URLS} ${TIMESERIES_URLS_LENS}"
@@ -64,16 +64,16 @@ done
# For CrUX we always test the month before (unless an explicit date was passed)
# We test the first and last report
CRUX_TIMESERIES_URLS=$(cat <<-END
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/cruxFastDcl.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/cruxSmallCls.json
+https://cdn.httparchive.org/v1/static/reports/cruxFastDcl.json
+https://cdn.httparchive.org/v1/static/reports/cruxSmallCls.json
END
)
for LENS in ${LENSES}
do
CRUX_TIMESERIES_URLS_LENS=$(cat <<-END
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/cruxFastDcl.json
-https://reports-prod-2vzgiib6.uc.gateway.dev/v1/static/reports/${LENS}/cruxSmallCls.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/cruxFastDcl.json
+https://cdn.httparchive.org/v1/static/reports/${LENS}/cruxSmallCls.json
END
)
CRUX_TIMESERIES_URLS="${CRUX_TIMESERIES_URLS} ${CRUX_TIMESERIES_URLS_LENS}"