fix: avoid using dev-mode array.includes wrapper on internal array checks #17536
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The dev-mode warning wrapper on Array.includes induces a significant performance penalty on some hot paths in Svelte's internals. Eg. the slowest part in rendering this bar chart page (#17176 (comment)) in dev mode is the
sources.includesindepends_on. This change gives me a roughly 4x improvement in rendering the bar chart page in dev.This pr changes all usage of
Array.includesin reactivity internals to use the un-wrappedindex_ofexport instead. Only thing I'm not sure of is whether to use thatindex_of, or add a new re-export forarray_includes.Before submitting the PR, please make sure you do the following
feat:,fix:,chore:, ordocs:.packages/svelte/src, add a changeset (npx changeset).Tests and linting
pnpm testand lint the project withpnpm lint