mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-27 17:09:53 +02:00
Experimental chunking optimisation and other performance improvements (#5871)
* Chunking optimization * Fix comments * Remove redundant `insertionsMinusRemovals` variable * Fix typo * Unblock Netlify builds * Add placeholder * Upgrade Playwright (fixes crash when debugging) * Fix `autoFocus` not working * Fix huge document test * Fix the previous issue without changing `useSlateSelector` * Retry `test:integration` * Re-implement `useSlateWithV` * Retry `test:integration` * Update docs * Update JS examples to match TS examples * Upload Playwright's `test-results` directory in CI to access traces * Change trace mode to `retain-on-first-failure` * Fix: `Locator.fill(text)` is flaky on Editable * Add changesets * Increase minimum `slate-dom` version * Update changeset * Update 09-performance.md * Deprecate the `useSlateWithV` hook * Fix errors and improve clarity in 09-performance.md * Minimum `slate-dom` version is now 0.116 * Update `yarn.lock`
This commit is contained in:
5
.changeset/chatty-flies-pay.md
Normal file
5
.changeset/chatty-flies-pay.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'slate-dom': minor
|
||||
---
|
||||
|
||||
- Add `splitDecorationsByChild` to split an array of decorated ranges by child index.
|
5
.changeset/silly-crabs-sort.md
Normal file
5
.changeset/silly-crabs-sort.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'slate': patch
|
||||
---
|
||||
|
||||
- PERF: Use pure JS instead of Immer for applying operations and transforming points and ranges. Immer is now used only for producing fragments.
|
14
.changeset/tiny-scissors-yell.md
Normal file
14
.changeset/tiny-scissors-yell.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
'slate-react': minor
|
||||
---
|
||||
|
||||
- Implement experimental chunking optimization (disabled by default, see https://docs.slatejs.org/walkthroughs/09-performance).
|
||||
- Add `useElement` and `useElementIf` hooks to get the current element.
|
||||
- **BREAKING CHANGE:** Decorations are no longer recomputed when a node's parent re-renders, only when the node itself re-renders or when the `decorate` function is changed.
|
||||
- Ensure that `decorate` is a pure function of the node passed into it. Depending on the node's parent may result in decorations not being recomputed when you expect them to be.
|
||||
- If this change impacts you, consider changing your `decorate` function to work on the node's parent instead.
|
||||
- For example, if your `decorate` function decorates a `code-line` based on the parent `code-block`'s language, decorate the `code-block` instead.
|
||||
- This is unlikely to result in any performance detriment, since in previous versions of `slate-react`, the decorations of all siblings were recomputed when one sibling was modified.
|
||||
- Increase minimum `slate-dom` version to `0.116.0`.
|
||||
- Deprecate the `useSlateWithV` hook
|
||||
- PERF: Use subscribable pattern for `useSlate`, `useSelected` and decorations to reduce re-renders.
|
Reference in New Issue
Block a user