lutzroeder/netron · error · Error

Please update your browser to use this application.

Error message

Please update your browser to use this application.

What it means

On page load the application feature-detects the JavaScript runtime and refuses to run if Symbol.asyncIterator, BigInt, BigInt.asIntN/asUintN, or DataView.prototype.getBigInt64 are missing. These are hard requirements: the HDF5 reader stores 64-bit sizes/addresses as BigInt and iterates streams asynchronously, so a browser without them cannot load files correctly.

Source

Thrown at source/index.js:98

        /* eslint-disable no-unused-vars */
        try {
            window.__view__.show('welcome message');
        } catch (error) {
            // continue regardless of error
        }
        /* eslint-enable no-unused-vars */
    }
};

window.addEventListener('error', function (event) {
    var error = event instanceof window.ErrorEvent && event.error && event.error instanceof Error ? event.error : new Error(event && event.message ? event.message : JSON.stringify(event));
    window.exports.terminate(error.message);
});

window.addEventListener('load', function() {
    if (typeof Symbol !== 'function' || typeof Symbol.asyncIterator !== 'symbol' ||
        typeof BigInt !== 'function' || typeof BigInt.asIntN !== 'function' || typeof BigInt.asUintN !== 'function' || typeof DataView.prototype.getBigInt64 !== 'function') {
        throw new Error('Please update your browser to use this application.');
    }
    var ua = window.navigator.userAgent;
    var chrome = ua.match(/Chrom(e|ium)\/([0-9]+)\./);
    var safari = ua.match(/Version\/(\d+)\.(\d+).*Safari/);
    var firefox = ua.match(/Firefox\/([0-9]+)\./);
    if ((Array.isArray(chrome) && parseInt(chrome[2], 10) < 86) ||
        (Array.isArray(safari) && (parseInt(safari[1], 10) < 16 || (parseInt(safari[1], 10) === 16 && parseInt(safari[2], 10) < 4))) ||
        (Array.isArray(firefox) && parseInt(firefox[1], 10) < 114)) {
        throw new Error('Please update your browser to use this application.');
    }
    window.exports.preload(function(value, error) {
        if (error) {
            window.exports.terminate(error.message);
        } else {
            var host = new window.exports.browser.Host();
            window.__view__ = new window.exports.view.View(host);
            window.__view__.start();
        }

View on GitHub (pinned to d8a543f5f8)

Solutions

  1. Use a current browser: Chrome/Edge >= 86, Firefox >= 114, Safari >= 16.4 (see the companion version check).
  2. If you must support older runtimes, load full BigInt/Symbol polyfills — though true BigInt semantics are very hard to polyfill; a real browser upgrade is strongly preferred.
  3. Update the WebView/Chromium embedding in hybrid apps rather than the page.
  4. Gate the app entry point behind your own capability check and show an upgrade page instead of relying on the thrown error.

Example fix

// before: the app throws on load in old browsers
// (no code change possible in the app itself)

// after: guard the entry point in the host page
if (typeof BigInt !== 'function' ||
    typeof DataView.prototype.getBigInt64 !== 'function' ||
    typeof Symbol.asyncIterator !== 'symbol') {
  document.body.innerHTML = '<p>This app requires a modern browser (Chrome 86+, Firefox 114+, Safari 16.4+).</p>';
} else {
  boot();
}
Defensive patterns

Strategy: type-guard

Validate before calling

function supportsRequiredFeatures() {
  return typeof Symbol === 'function' &&
         typeof Symbol.asyncIterator === 'symbol' &&
         typeof BigInt === 'function' &&
         typeof BigInt.asIntN === 'function' &&
         typeof BigInt.asUintN === 'function' &&
         typeof DataView.prototype.getBigInt64 === 'function';
}
if (!supportsRequiredFeatures()) showUpgradePage(); else startApp();

Type guard

function isModernBrowserRuntime() {
  return typeof BigInt === 'function' &&
    typeof BigInt.asIntN === 'function' &&
    typeof DataView.prototype.getBigInt64 === 'function' &&
    typeof Symbol.asyncIterator === 'symbol';
}

Try / catch

window.addEventListener('error', function (e) {
  if (/update your browser/.test(e.message || '')) showUpgradePage();
});

Prevention

When it happens

Trigger: Loading the app in a legacy browser (roughly pre-2019 engines): old Safari, old Chrome/Edge (pre-Chromium Edge), IE11, or embedded WebViews/older in-app browsers. The check is a typeof probe, so it fires before any HDF5 API is called.

Common situations: Corporate environments with pinned old browsers, older iOS/Android WebViews inside hybrid apps, kiosk or appliance browsers, or polyfilled environments where Symbol/BigInt exist only as partial shims (typeof checks still fail for missing pieces).


AI-assisted analysis of lutzroeder/netron@d8a543f5f8 (2026-08-27). Data as JSON: /api/errors/994acd4f6883e75c. Report an issue: GitHub.