fix(perf): Chunk and lazy load BackgroundFiltersProvider #2040
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.
💡 Overview
With the introduction of the revamped video filters in #1977, our SDK grew by ~250KB after minification.
While filters are an optional feature, many bundlers were unnecessarily bundling them in the main app chunk, slightly increasing the JS download and parsing time.
With this PR,
BackgroundFiltersProviderand the content of the@stream-io/video-filters-webpackage live in a separate, lazily loaded chunk of our SDK. This trick moves those ~250KB outside of the main bundle, hence restoring the previous performance and size constraints.Implementation notes
Some code restructuring was necessary, so now we have:
types.ts- a shared module containing all types, used in both chunksBackgroundFiltersProvider.tsx- code splitting happens hereBackgroundFilters.tsx- the original, slightly slimmed down implementation