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

[RFC] Support only last n browser versions #15496

Closed
eps1lon opened this issue Apr 26, 2019 · 5 comments · Fixed by #22814
Closed

[RFC] Support only last n browser versions #15496

eps1lon opened this issue Apr 26, 2019 · 5 comments · Fixed by #22814

Comments

@eps1lon
Copy link
Member

eps1lon commented Apr 26, 2019

Current state

We transpile for the following targets:

ie 11
edge >= 14
firefox >= 52
chrome >= 49 // this should be 41 which is used by the google crawler
safari >= 10
node 8.0

Proposal

We use every major release to update the list to include only the last 31 versions and use this snapshot throughout the lifetime of the release. For v4 this would mean

ie 11
edge >= 16
firefox >= 65
chrome >= 71
safari >= 11
node 10.0

1 Somewhat arbitrary. Used the default "last 2 versions" from browserslist and relaxed it by 1.

Rationale

  1. This is transpilation only. We can still support layout quirks in older browsers. If it is really important for app authors to support older versions they can always transpile node_modules. We can include a guide in our docs.
  2. Firefox, edge and safari (and chrome) are evergreen browsers meaning users automatically get updates. Usage numbers for outdated versions of these evergreen browsers is very low.
  3. Transpilation adds a considerable amount of bundle bloat. E.g. transform-destructuring accounts for around 2-3% of our bundle.
  4. Once google updates their crawler to use a newer chrome version we can think about publishing a separate IE11 bundle. Edit: crawler runs on chrome 74 which means it already matches last 3 versions.

/cc @mui-org/community-partners @mui-org/core-contributors

@joshwooding
Copy link
Member

This looks good to me, the market share we lose is probably very little and the benefits look to outweigh the very little cost 👍

@oliviertassinari
Copy link
Member

oliviertassinari commented Apr 26, 2019

chrome >= 49 // this should be 41 which is used by the google crawler

@eps1lon We are lucky IE 11 and Chrome 41 supports almost the same JavaScript features. I would suspect it's the reason why Google Bot uses Chrome 41.

Once google updates their crawler to use a newer chrome version we can think about publishing a separate IE11 bundle.

If my assumption is correct, we will be able to drop Chrome 41 and IE 11 at the same time. But it's only speculation. I have asked Why? on Twitter. It seems Google plans to upgrade it.

Transpilation adds a considerable amount of bundle bloat. E.g. transform-destructuring accounts for around 2-3% of our bundle.

This probably why the classes to hooks migration are reducing our bundle size that much. We do no longer have to transpile the JavaScript class syntax.

Does this issue target v5?

@eps1lon
Copy link
Member Author

eps1lon commented Apr 27, 2019

Does this issue target v5?

Yes. I don't think we should change browser support on such a short notice. Even if it is only for "exotic" browsers (edge 14 isn't even available in browserstack). The bundle wouldn't benefit from it anyway since we still transpile for IE 11.

@oliviertassinari oliviertassinari added this to the v5 milestone Apr 27, 2019
@oliviertassinari
Copy link
Member

Today, we are happy to announce that Googlebot now runs the latest Chromium rendering engine (74 at the time of this post) when rendering pages for Search. Moving forward, Googlebot will regularly update its rendering engine to ensure support for latest web platform features.

https://webmasters.googleblog.com/2019/05/the-new-evergreen-googlebot.html

@eps1lon
Copy link
Member Author

eps1lon commented May 8, 2019

Something I haven't really thought about is our /es build. Since we explicitly say that

We also publish a second version of the components to target evergreen browsers.

we should be able to safely apply these changes to that build.

I started experimenting with it in #15629

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants