# Compatibility

> Fabric.js compatibility for this engine: tested with Fabric.js 6 and 7 in Chromium, Firefox and Safari, with React 18 and 19, plus performance numbers.

Source: https://fabricjs-document-engine.jscrate.dev/docs/production/compatibility
Last updated: 2026-09-28

Every release runs the same browser test suite before it is published. This is the Fabric.js compatibility and performance picture for the 1.x line.

## Supported environments

|           | Supported in 1.x                                                                                                                                      |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Fabric.js | 6.x and 7.x                                                                                                                                           |
| Browsers  | Current Chromium, Firefox and WebKit (Safari), tested on every release                                                                                |
| React     | 18 and 19, through `fabricjs-document-engine/react`                                                                                                   |
| Node.js   | 18+ with Fabric.js 6, 20+ with Fabric.js 7. Importing, validation, migration, safety checks and storage adapters work; canvas features need a browser |

## Test results

|               | Chromium          | Firefox            | WebKit (Safari engine) | Node                                   |
| ------------- | ----------------- | ------------------ | ---------------------- | -------------------------------------- |
| Fabric.js 7.4 | Full suite passes | Full suite passes  | Full suite passes      | Imports, validation and migration pass |
| Fabric.js 6.9 | Full suite passes | Not run separately | Not run separately     | Imports, validation and migration pass |

- The browser suite covers ids, save and load, history, safe saving, assets and fonts, recovery with IndexedDB, export, versions, migration, React, cancellation, custom objects and safety limits.
- Fabric.js 6 and Fabric.js 7 use different default origins. Documents always store `originX` and `originY`, so a file saved with one opens correctly with the other.
- WebKit cannot store `Blob` values in IndexedDB. Recovery copies keep image data as bytes, so recovery works in Safari too.

## Performance

Measured with 5,000 objects (60% rectangles, 20% circles, 10% text boxes, 10% groups). The slowest browser is shown.

| Step                               | Target   | Worst measured |
| ---------------------------------- | -------- | -------------- |
| Record one undo step after a move  | 50 ms    | 27 ms          |
| A transaction restyling one object | 50 ms    | 29 ms          |
| Undo one step                      | 50 ms    | 28 ms          |
| Save to memory storage             | 50 ms    | 29 ms          |
| Load a document                    | 1,000 ms | 828 ms         |
| Checks before export               | 50 ms    | 22 ms          |

Export time is almost all Fabric.js's own rendering and the browser's image encoder. A regression test with 2,000 objects runs in every browser, so a large slowdown fails the build.

## Memory

- Undo keeps at most 100 steps and 64 MB of object data by default. Each step stores only the objects that changed.
- Recovery keeps one copy per document, removed once a save covers every change.
- Imported documents are limited to 50,000 objects and 100 levels of nesting.

Full measurements for each browser are in the [compatibility results on GitHub](https://github.com/re-sohail/fabricjs-document-engine/blob/main/docs/compatibility.md). The Fabric.js compatibility promises for 1.x are summarized on the [releases](https://fabricjs-document-engine.jscrate.dev/docs/overview/releases) page.
