diff --git a/web_src/js/webcomponents/polyfill.js b/web_src/js/webcomponents/polyfill.js
new file mode 100644
index 000000000..88c727688
--- /dev/null
+++ b/web_src/js/webcomponents/polyfill.js
@@ -0,0 +1,17 @@
+try {
+  // some browsers like PaleMoon don't have full support for Intl.NumberFormat, so do the minimum polyfill to support "relative-time-element"
+  // https://repo.palemoon.org/MoonchildProductions/UXP/issues/2289
+  new Intl.NumberFormat('en', {style: 'unit', unit: 'minute'}).format(1);
+} catch {
+  const intlNumberFormat = Intl.NumberFormat;
+  Intl.NumberFormat = function(locales, options) {
+    if (options.style === 'unit') {
+      return {
+        format(value) {
+          return ` ${value} ${options.unit}`;
+        }
+      };
+    }
+    return intlNumberFormat(locales, options);
+  };
+}
diff --git a/web_src/js/webcomponents/webcomponents.js b/web_src/js/webcomponents/webcomponents.js
index 123607282..b17a4a832 100644
--- a/web_src/js/webcomponents/webcomponents.js
+++ b/web_src/js/webcomponents/webcomponents.js
@@ -1,3 +1,5 @@
 import '@webcomponents/custom-elements'; // polyfill for some browsers like Pale Moon
+import './polyfill.js';
+
 import '@github/relative-time-element';
 import './GiteaOriginUrl.js';