diff --git a/packages/desktop-client/src/browser-server.js b/packages/desktop-client/src/browser-server.js index eb19fc5585b8ab0951b8c7ae938a2107d0f6af2b..98159b3dd8d5732d15167b861b91312f92f3d98c 100644 --- a/packages/desktop-client/src/browser-server.js +++ b/packages/desktop-client/src/browser-server.js @@ -10,6 +10,14 @@ self.addEventListener('message', e => { let version = msg.version; let hash = msg.hash; + if (!self.SharedArrayBuffer) { + self.postMessage({ + type: 'app-init-failure', + SharedArrayBufferMissing: true + }); + return; + } + // eslint-disable-next-line importScripts(`${process.env.PUBLIC_URL}/kcab/kcab.worker.${hash}.js`); diff --git a/packages/desktop-client/src/components/FatalError.js b/packages/desktop-client/src/components/FatalError.js index 2b038ffb1585ae186e5b32da3e6c6bcf2626f490..025d9a7f56e9a7258318189d995576fffabf83f4 100644 --- a/packages/desktop-client/src/components/FatalError.js +++ b/packages/desktop-client/src/components/FatalError.js @@ -27,6 +27,20 @@ class FatalError extends React.Component { private browsing. </Text> ); + } else if (error.SharedArrayBufferMissing) { + // SharedArrayBuffer isn't available + msg = ( + <Text> + Actual requires access to <code>SharedArrayBuffer</code> in order to + function properly. If you’re seeing this error, either your browser + does not support <code>SharedArrayBuffer</code>, or your server is not + sending the appropriate headers, or you are not using HTTPS. See{' '} + <a href="https://actualbudget.github.io/docs/Troubleshooting/SharedArrayBuffer"> + our troubleshooting documentation + </a>{' '} + for more information. + </Text> + ); } else { // This indicates the backend failed to initialize. Show the // user something at least so they aren't looking at a blank