Supported browsers
The DataGrid targets the current versions of the evergreen browsers: Chrome, Edge, Firefox and Safari. Internet Explorer and the original, pre-Chromium Edge are not supported: the packages are compiled to modern JavaScript (ES2022 and later) and ship no polyfills.
This applies to every DataGrid package: React and plain JavaScript, Community
and Enterprise, the npm builds and the <script> tag builds.
Oldest browser versions
| Browser | Oldest version | Set by |
|---|---|---|
| Chrome, Edge | 111 | color-mix() in the stylesheet |
| Firefox | 113 | color-mix() in the stylesheet |
| Safari (macOS and iOS) | 16.2 | color-mix() in the stylesheet |
Two Enterprise features need a newer Firefox:
- Paste reads the clipboard with
navigator.clipboard.readText(), which Firefox has from version 125. - The validation message of a cell being edited relies on
:has()(Firefox 121) to lift the edited row above the next one, so the message is not covered.
These numbers come from the code, not from a test run on those versions. Each one is the first release of that browser that supports every feature the shipped packages use, according to MDN's browser compatibility data. An older release is missing at least one of them.
What the grid needs from the browser
Required:
| Feature | What it is for |
|---|---|
| Modern JavaScript (ES2022 and later) | Everything. Without it the script does not load. |
color-mix() in CSS | Tints: the focused row, group rows, the loading overlay. In Enterprise also the selected range, the fill preview and chart ranges. Without it those tints are not drawn. |
ResizeObserver | Measuring the viewport, so the right rows are rendered when the grid changes size. |
Intl | Number and date formatting, and locale-aware sorting. |
Used when available:
| Feature | What it is for | When it is missing |
|---|---|---|
| Web Worker started from a Blob URL | Filtering and sorting above 20,000 rows (configurable). | The same work runs on the main thread: same results, slower on large data. |
Clipboard API (navigator.clipboard) | Copy, cut and paste. | Browsers offer it only on secure pages (HTTPS or localhost). On a plain-HTTP page, copy and paste do nothing. |
localStorage / sessionStorage | Remembering the user's layout, when state saving is turned on. | The grid opens with its default layout. Storage errors are never fatal. |
crypto.subtle (Enterprise) | Verifying the licence key. | Browsers offer it only on secure pages. Elsewhere a bundled JavaScript verifier checks the same signature; see Plain HTTP and intranets. |
Content-Security-Policy
- The shipped JavaScript has no
evaland nonew Function, so ascript-srcwithout'unsafe-eval'works. - The worker starts from a
blob:URL. Allow it withworker-src 'self' blob:, or serve the worker as a file: Installation shows how. If no worker can start, the grid falls back to the main thread. - The real-browser licence test below runs under this policy:
default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline';
img-src 'self' data:; connect-src 'self'; worker-src 'self' blob:
That policy allows inline styles. A policy without 'unsafe-inline' in
style-src has not been tested.
What is tested
Unit tests run in Node in continuous integration, on every push and pull request to the main branch. Tests that need a DOM use jsdom, a simulated DOM. jsdom does no layout and no painting, so these tests prove behaviour, not how a particular browser draws the grid.
In a real browser: licence verification. A script drives an installed Google Chrome against the built packages:
- on a plain-HTTP page, where there is no
crypto.subtleand the bundled JavaScript verifier has to load as its own chunk; - on a secure page, where WebCrypto is used and that chunk must never load;
- through the npm (ESM) build and through the
<script>tag (UMD) build; - under the Content-Security-Policy above, so an
evalin the verifier would fail the run.
This test runs outside continuous integration.
Firefox and Safari are not part of an automated run. If the grid misbehaves in a browser at or above the versions listed here, tell us the browser, its version and what you saw.