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.
Description
This PR adds a feature flag to the renderer which enables optimized caching.
Once it's stable, it'll become the new standard caching mechanism.
What it does
It adds a new layer of smart caching that enables us to run some plugins only once per class.
This can be a huge performance boost! Our own benchmarks showed improvements between 30-50% and the difference should grow with the pure amount of renders.
Plugins that are eligible for smart caching:
Downsides
The only downside is, that those plugins are "removed" from the classic plugin order and thus plugins such as the logger or validator might render different results or yield errors.
We can solve this later on by making validator an optimized plugin as well. The logger could also become an optimized plugin, but its functionality would differ.
Given that both are non-production plugins, we won't include that in this PR but handle it in a future PR to keep the scope and complexity as low as possible for this one.
Example
If required, add a code example or a link to a working example (repository).
Packages
List all packages that have been changed.
Versioning
Minor
Checklist
Quality Assurance
yarn run format
)yarn run lint
)yarn run test
)yarn run flow
)Changes
If one of the following checks doesn't make sense due to the type of PR, just check them.