Remove moment dependency to reduce bundle sizes #2
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.
We've found date-holidays to be a very useful package, with one downside being
moment
inflating bundle size significantly. This PR removes themoment
dependencies (as well ascaldate
) and replaces it with vanilla JS and date-fns where appropriate.For our main use case, these dependencies were taking up more than 40% of the size of our vendor bundle (180kB for
moment-timezone
and 56kB formoment
, for a combined 236kB).date-fns
is highly modularised. The usage here is for 42kB for us (it may be less as some of our entrypoints might be pulling other date-fns modules not used in this PR into our vendor bundle).RE the implementation of
toTimezone
ininternal/utils.js
and browser support for thetimeZone
setting of Date.prototype.toLocaleString:There is a polyfill here which could be used when necessary. https://github.com/yahoo/date-time-format-timezone