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

  1. Open the app in a current version of Chrome, Firefox, Edge, or Safari that supports IndexedDB.
  2. Serve the app over HTTPS (or http://localhost) so storage APIs are not blocked.
  3. Disable private browsing / allow site data and cookies in browser settings.
  4. 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

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.