Some of the key points noted while auditing performance,
[ ] Avoid JSON.parse inside dataRow loops, as its affects performance when dealing with large data.

[ ] Avoid new references, spread or {} in mapState, as it re-renders the entire components even when re-renders not required.

[ ] While creating new model keep the number of properties less by grouping all related props,
Major reason for storyboard performance is the commonSetting model which has more than 80 properties. On spreading while getting its state caused the performance lag.
[ ] Minimize the use of store.getState(), which we practiced earlier.
[ ] Map to Trie in lookup table, We have added Trie data structure to store the lookup table values which has major improvements as we can keep the key value as array.
[ ] Persist the settings in StatePersistHelper only when you have changes, which can overcome some of the update() not calling issues.
[ ] Return early if the feature is not used or enabled. We noticed some feature which is not enabled still perform some calculation/logics.
[ ] Split the appearance model if possible, else new chart can have separate model for appearances.
[ ] Avoid checking templates inside dataRow loops.