Describe the bug
The following error message appears when accessing any of the sidebar menu pages, below is the message for the cores page:
Cores: null
r.throwIfAborted is not a function. (In 'r.throwIfAborted()', 'r.throwIfAborted' is undefined)
tauri://localhost/assets/index-BZOP8maW.js:72:275579
asyncFunctionResume@[native code]
[native code]
promiseReactionJobWithoutPromise@[native code]
promiseReactionJob@[native code]
To Reproduce
The app crashes on macOS Big Sur 11.7.11 because the bundled WebKit engine lacks AbortSignal.prototype.throwIfAborted(). This error can be easily fixed for all legacy Mac users by adding a browser fallback target (such as target: ['safari15']) to their vite.config.js file, or by embedding an explicit global polyfill check at the bundle entry point.
Logs
Copy over the log from the folder that opens when you click the "Open Log Folder" button at the bottom of settings.
Desktop (please complete the following information):
- OS: MacOs 11.7.11 Big Sur
Additional context
Gemini is suggesting adding the following:
Step 1: Inject the PolyfillYou need to manually define the missing function before your bundle loads your main code. Open your frontend source files and locate your primary entry point (typically src/main.js, src/main.ts, src/index.js, or src/main.tsx).At the very top of this file (above your framework imports like React, Vue, or Svelte), add this explicit safeguard:
javascript
// Polyfill for legacy WebKit engines (like macOS Big Sur)
if (typeof AbortSignal !== 'undefined' && !AbortSignal.prototype.throwIfAborted) {
AbortSignal.prototype.throwIfAborted = function () {
if (this.aborted) {
const error = this.reason || new DOMException('The operation was aborted.', 'AbortError');
throw error;
}
};
}
Step 2: Configure Vite to Down-level Your JavaScriptYour crash log shows an error in a minified asset (index-BZOP8maW.js). This indicates your build system is outputting modern JavaScript syntax that Big Sur's WebKit engine does not know how to read.Open your vite.config.js or vite.config.ts file in the root of your Tauri project, and modify the build.target array to force Vite to compile down to syntax safe for older browsers:
javascript
import { defineConfig } from 'vite';
// ... your other imports like react() or vue()
export default defineConfig({
// ... your existing config (plugins, clearScreen, server, etc.)
build: {
// Force compilation to support older Safari / WebKit baselines
target: ['es2021', 'chrome100', 'safari15'],
// Don't minify away syntax fixes if you need to debug further
minify: 'esbuild',
},
});
Why this happens in Tauri
Unlike electron, which ships with a massive, hardcoded copy of a brand-new Chromium browser inside every app download, Tauri apps are tiny because they use your Mac's built-in webview (WKWebView). If your app is distributed to users running vintage hardware operating on macOS 11, they will experience this exact crash unless you proactively ship the polyfill inside your JavaScript bundle.If you apply these changes, rebuild your app using npm run tauri build (or your respective package manager command), and run it again, the assets will load smoothly without triggering the runtime crash.
Describe the bug
The following error message appears when accessing any of the sidebar menu pages, below is the message for the cores page:
Cores: null
r.throwIfAborted is not a function. (In 'r.throwIfAborted()', 'r.throwIfAborted' is undefined)
tauri://localhost/assets/index-BZOP8maW.js:72:275579
asyncFunctionResume@[native code]
[native code]
promiseReactionJobWithoutPromise@[native code]
promiseReactionJob@[native code]
To Reproduce
The app crashes on macOS Big Sur 11.7.11 because the bundled WebKit engine lacks AbortSignal.prototype.throwIfAborted(). This error can be easily fixed for all legacy Mac users by adding a browser fallback target (such as target: ['safari15']) to their vite.config.js file, or by embedding an explicit global polyfill check at the bundle entry point.
Logs
Copy over the log from the folder that opens when you click the "Open Log Folder" button at the bottom of settings.
Desktop (please complete the following information):
Additional context
Gemini is suggesting adding the following:
Step 1: Inject the PolyfillYou need to manually define the missing function before your bundle loads your main code. Open your frontend source files and locate your primary entry point (typically src/main.js, src/main.ts, src/index.js, or src/main.tsx).At the very top of this file (above your framework imports like React, Vue, or Svelte), add this explicit safeguard:
javascript
// Polyfill for legacy WebKit engines (like macOS Big Sur)
if (typeof AbortSignal !== 'undefined' && !AbortSignal.prototype.throwIfAborted) {
AbortSignal.prototype.throwIfAborted = function () {
if (this.aborted) {
const error = this.reason || new DOMException('The operation was aborted.', 'AbortError');
throw error;
}
};
}
Step 2: Configure Vite to Down-level Your JavaScriptYour crash log shows an error in a minified asset (index-BZOP8maW.js). This indicates your build system is outputting modern JavaScript syntax that Big Sur's WebKit engine does not know how to read.Open your vite.config.js or vite.config.ts file in the root of your Tauri project, and modify the build.target array to force Vite to compile down to syntax safe for older browsers:
javascript
import { defineConfig } from 'vite';
// ... your other imports like react() or vue()
export default defineConfig({
// ... your existing config (plugins, clearScreen, server, etc.)
build: {
// Force compilation to support older Safari / WebKit baselines
target: ['es2021', 'chrome100', 'safari15'],
// Don't minify away syntax fixes if you need to debug further
minify: 'esbuild',
},
});
Why this happens in Tauri
Unlike electron, which ships with a massive, hardcoded copy of a brand-new Chromium browser inside every app download, Tauri apps are tiny because they use your Mac's built-in webview (WKWebView). If your app is distributed to users running vintage hardware operating on macOS 11, they will experience this exact crash unless you proactively ship the polyfill inside your JavaScript bundle.If you apply these changes, rebuild your app using npm run tauri build (or your respective package manager command), and run it again, the assets will load smoothly without triggering the runtime crash.