Shrink SignalR JS client (to 11kB compressed) - #30320
Conversation
|
Nice, is the main benefit from using terser instead of uglify-js? We'll need to discuss some of the version updates with the team before merging this. |
|
68d1d19 to
6611802
Compare
|
Note: es2019 is already being used by Blazor aspnetcore/src/Components/Web.JS/tsconfig.json Lines 8 to 9 in a28da74 |
Yep, I'm not sure if SignalR needs to support IE11 or so though. That said, it shouldn't be hard to produce a separate ES5 bundle I think. I've put a link on this PR to the issue we have for doing this on Blazor so that we don't loose track of it. Thanks @benaadams for doing this work! |
3ea529a to
d9ad305
Compare
.NET 6.0 is coming out in Nov 2021; Teams has already dropped support for IE11 (Aug 17 2020) and Microsoft 365 drops support on Aug 17 2021 and Microsoft Edge supports Windows 7 so... 🤷♂️ |
|
We don't support IE11. You need to add polyfills to get IE11 support AFAIK |
d9ad305 to
2d8ab24
Compare
|
This is great! |
2d8ab24 to
1be32ca
Compare
20961d1 to
555fe47
Compare
555fe47 to
be2e537
Compare
|
Required docs change
|
|
@benaadams really nice to see this coming along. Let me know when you are ready for me to review, but so far what I've seen looks great. |
eb358bf to
c0a3f76
Compare
|
@BrennanConroy feel free to merge when you are happy. |
|
There are a couple broken npm unit tests. I have created PR #30409 to address the issue with them not showing up in the CI. |
Fixed, one was irrelevant and other was internals visible to (e.g. remove the |
Removed this time 😀 |
a1b86bc to
1ba0197
Compare
|
Merged feedback commits to retrigger CI (transient error) |
|
Same failures with submodules 😥 |
|
@pranavkm can you help out @benaadams here since you've been playing around this area? |
|
I could try a rebase? Bit weird getting the submodules only fails on one platform though... |
1ba0197 to
37373c2
Compare
|
@benaadams I suspect it has to do with #30445 |
|
Sigh... now |
|
🥳 |
|
Thanks @benaadams ! |


Highlights
Significantly shrinks the uncompressed sizes of SignalR, MsgPack and Blazor.Server; and their corresponding compressed sizes. Leading to faster downloads and less JS parsing and compiling by the browser, allowing for faster start-up.
Shrinks
signalr.min.jsby91 kB(now10 kBbr compressed,12 kBgz compressed)Shrinks
blazor.server.jsby96 kB(now28 kBbr compressed,33 kBgz compressed)Shrinks add-on msgpack by
112 kB(now8 kBbr compressed,9 kBgz compressed)Don't need to add an additional
scriptreference tomsgpack5.jswhen using mspackMain changes
class)"sideEffects": false; so tree-shaking can work better"es6-promise/dist/es6-promise.auto.js"pollyfilles2019rather thanes5and dropped the "es2015.promise" and "es2015.iterable" pollyfillsNote: es2019 is already being used by Blazor
aspnetcore/src/Components/Web.JS/tsconfig.json
Lines 8 to 9 in a28da74
msgpack5from@msgpack/msgpackas it requires less pollyfills, is typescript & module awareRequired docs change
@microsoft/signalr-protocol-msgpackpackage for msgpack; don't need to includemsgpack5which means its an additional29 kBrather than140 kBto use msgpack rather than Json (protocol-msgpack16 kb+ msgpack5124 kB)Sizes
SignalR before (130 kB minimized)
SignalR after (39 kB minimized, 10 kB br compressed, 12 kB gz compressed)
Shrinks
blazor.server.jsby 45% from212 kbto116 kB(to28 kBbr compressed,33 kBgz compressed)Addresses #30319
Addresses #29904