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.
In this PR I introduce a slimmed version of the Gridicons library tailored for our needs - it only contains the icons we actually use: chevron-right (182 bytes), cross (253 bytes), external (278 bytes).
The rationale for this was to reduce bundle size of the Happychat library. This are the bundle sizes of the library and the top three components at the time of writing this:
dist/happychat.js
react-dom
gridicons
src/ui
src/state
engine.io-client
We can't avoid using
react-dom
. Taking into account that the combined size of the SVG icons we use from Gridicons is 713 bytes, it seemed reasonable to inline it and save 85K, the next bigger win we could have.Note that inlining the Gridicons library is sub-optimal and not future-proof. The next step to improve this is te make the Gridicons library to export its icons separately, so we can import them individually making the bundle size dependent on the icons you actually use.