Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import from individual react-dates component #21914

Merged
merged 1 commit into from
Apr 27, 2020

Conversation

sgomes
Copy link
Contributor

@sgomes sgomes commented Apr 27, 2020

Description

There is only one react-dates component in use in Gutenberg, which is currently being imported with a named import:

import { DayPickerSingleDateController } from 'react-dates';

This PR changes that to importing the internal library component directly:

import DayPickerSingleDateController from 'react-dates/lib/components/DayPickerSingleDateController';

This is more fragile with regards to library updates, since it uses knowledge of package internals, but it avoids the tree-shaking issues in react-dates that end up causing too much of the library to be imported when importing from the index.

This should save around 96KB on the components chunk, or 19KB over the wire, although the GitHub action will have the final say.

I believe the trade-off is worth it, since it basically only involves some extra vigilance when updating react-date versions.

Partially works towards resolving #21820.

How has this been tested?

Ran unit tests, performed build, and performed some ad-hoc testing of date picker functionality.

Types of changes

This is essentially a bug fix, in that it works around what I'd consider a bug in react-dates: that it doesn't tree-shake correctly.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code has proper inline documentation.

This avoids the tree-shaking issues in `react-dates` that end up causing
too much of the library to be imported when importing from the index.
@sgomes sgomes added [Type] Performance Related to performance efforts [Package] Components /packages/components labels Apr 27, 2020
@sgomes sgomes requested review from gziolo and aduth April 27, 2020 09:56
@youknowriad
Copy link
Contributor

I'm loving these PRs @sgomes :) Thanks for your help with the bundle size.

@github-actions
Copy link

Size Change: -18.5 kB (2%)

Total Size: 816 kB

Filename Size Change
build/annotations/index.js 3.62 kB +3 B (0%)
build/api-fetch/index.js 4.08 kB +3 B (0%)
build/autop/index.js 2.82 kB -3 B (0%)
build/block-directory/index.js 6.23 kB -2 B (0%)
build/block-editor/index.js 106 kB -89 B (0%)
build/block-library/index.js 112 kB +82 B (0%)
build/block-serialization-default-parser/index.js 1.88 kB +1 B
build/block-serialization-spec-parser/index.js 3.1 kB -1 B
build/blocks/index.js 48.1 kB -6 B (0%)
build/components/index.js 179 kB -18.6 kB (10%) 👏
build/compose/index.js 6.66 kB +1 B
build/core-data/index.js 11.4 kB +11 B (0%)
build/data/index.js 8.42 kB -6 B (0%)
build/date/index.js 5.47 kB +3 B (0%)
build/dom-ready/index.js 568 B -1 B
build/edit-navigation/index.js 3.54 kB -2 B (0%)
build/edit-post/index.js 27.8 kB +46 B (0%)
build/edit-site/index.js 11 kB +30 B (0%)
build/edit-widgets/index.js 8.33 kB -5 B (0%)
build/editor/index.js 43.4 kB +43 B (0%)
build/element/index.js 4.65 kB -2 B (0%)
build/format-library/index.js 7.32 kB +2 B (0%)
build/i18n/index.js 3.56 kB +1 B
build/is-shallow-equal/index.js 710 B -1 B
build/list-reusable-blocks/index.js 3.12 kB +1 B
build/media-utils/index.js 5.29 kB +2 B (0%)
build/notices/index.js 1.79 kB +1 B
build/nux/index.js 3.4 kB -3 B (0%)
build/primitives/index.js 1.5 kB +7 B (0%)
build/redux-routine/index.js 2.84 kB -1 B
build/rich-text/index.js 14.8 kB +8 B (0%)
build/server-side-render/index.js 2.68 kB +6 B (0%)
build/url/index.js 4.02 kB +2 B (0%)
build/viewport/index.js 1.84 kB +1 B
build/wordcount/index.js 1.18 kB +2 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 761 B 0 B
build/block-editor/style-rtl.css 10.2 kB 0 B
build/block-editor/style.css 10.2 kB 0 B
build/block-library/editor-rtl.css 7.05 kB 0 B
build/block-library/editor.css 7.05 kB 0 B
build/block-library/style-rtl.css 7.14 kB 0 B
build/block-library/style.css 7.14 kB 0 B
build/block-library/theme-rtl.css 683 B 0 B
build/block-library/theme.css 685 B 0 B
build/components/style-rtl.css 16.9 kB 0 B
build/components/style.css 16.9 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom/index.js 3.1 kB 0 B
build/edit-navigation/style-rtl.css 485 B 0 B
build/edit-navigation/style.css 485 B 0 B
build/edit-post/style-rtl.css 12.3 kB 0 B
build/edit-post/style.css 12.3 kB 0 B
build/edit-site/style-rtl.css 5.26 kB 0 B
build/edit-site/style.css 5.25 kB 0 B
build/edit-widgets/style-rtl.css 5 kB 0 B
build/edit-widgets/style.css 5 kB 0 B
build/editor/editor-styles-rtl.css 428 B 0 B
build/editor/editor-styles.css 431 B 0 B
build/editor/style-rtl.css 3.27 kB 0 B
build/editor/style.css 3.27 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/keyboard-shortcuts/index.js 2.51 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.67 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/warning/index.js 1.14 kB 0 B

compressed-size-action

@sgomes
Copy link
Contributor Author

sgomes commented Apr 27, 2020

Thank you for the review, @youknowriad! 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Components /packages/components [Type] Performance Related to performance efforts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants