benweet/stackedit · critical · Error
Your browser is not supported. Please upgrade to the latest
Error message
Your browser is not supported. Please upgrade to the latest version.
What it means
This is a startup-time feature-detection guard. The app requires IndexedDB to persist workspaces and documents locally; the check `if (!indexedDB)` in src/index.js:13 throws before any app code runs when the API is absent. This happens in browsers without IndexedDB support (very old browsers, some private/hardened modes) or in insecure contexts (plain http:// non-localhost) where storage APIs are disabled.
Source
Thrown at src/index.js:13
import Vue from 'vue';
import 'babel-polyfill';
import 'indexeddbshim/dist/indexeddbshim';
import * as OfflinePluginRuntime from 'offline-plugin/runtime';
import './extensions';
import './services/optional';
import './icons';
import App from './components/App';
import store from './store';
import localDbSvc from './services/localDbSvc';
if (!indexedDB) {
throw new Error('Your browser is not supported. Please upgrade to the latest version.');
}
OfflinePluginRuntime.install({
onUpdateReady: () => {
// Tells to new SW to take control immediately
OfflinePluginRuntime.applyUpdate();
},
onUpdated: async () => {
if (!store.state.light) {
await localDbSvc.sync();
localStorage.updated = true;
// Reload the webpage to load into the new version
window.location.reload();
}
},
});
if (localStorage.updated) {View on GitHub (pinned to 6dce2a5e36)
Solutions
- Open the app in a current version of Chrome, Firefox, Edge, or Safari that supports IndexedDB.
- Serve the app over HTTPS (or http://localhost) so storage APIs are not blocked.
- Disable private browsing / allow site data and cookies in browser settings.
- If you must support such browsers, show a friendly compatibility screen instead of an uncaught throw.
Example fix
// before
if (!indexedDB) {
throw new Error('Your browser is not supported. Please upgrade to the latest version.');
}
// after
if (!window.indexedDB) {
document.body.innerHTML = 'Your browser is not supported. Please upgrade to the latest version.';
throw new Error('Your browser is not supported. Please upgrade to the latest version.');
} Defensive patterns
Strategy: validation
Validate before calling
if (typeof indexedDB === 'undefined' || !window.indexedDB) {
alert('Your browser is not supported. Please upgrade to the latest version.');
return;
} Type guard
function supportsIndexedDB(win = window) {
return typeof win.indexedDB !== 'undefined' && win.indexedDB !== null;
} Try / catch
try {
if (!supportsIndexedDB()) throw new Error('Your browser is not supported.');
} catch (e) {
renderUnsupportedBrowserScreen(e);
} Prevention
- Feature-detect IndexedDB before app startup and show a graceful upgrade message.
- Test the app in private-browsing modes and non-HTTPS origins.
- Browserslist/CI-test against minimum supported browsers and document them.
- Avoid throwing raw errors at startup; render a user-facing compatibility screen.
When it happens
Trigger: Loading the app in a browser where the global `indexedDB` is undefined: browsers with no IndexedDB implementation, Safari/Firefox private-browsing modes that previously disabled storage, insecure non-HTTPS origins in some browsers, or embedded webviews with storage disabled.
Common situations: Users on very old or exotic browsers; corporate browsers with storage APIs policy-disabled; serving the app over plain HTTP; embedded webviews (older Android WebView) with DOM storage turned off.
Related errors
AI-assisted analysis of benweet/stackedit@6dce2a5e36 (2026-09-01).
Data as JSON: /api/errors/becc6e804fa5c1f3.
Report an issue: GitHub.