Jeff Muizelaar's Avatar

Jeff Muizelaar

@muizelaar

Firefox Platform

31
Followers
84
Following
28
Posts
18.10.2024
Joined
Posts Following

Latest posts by Jeff Muizelaar @muizelaar

Preview
Mobile, Internet, TV, Home Monitoring, Home phone - Rogers Choose a cell phone or plan for your needs. At Rogers, count on more mobile, Internet, TV, Home Security and Home Phone options.

It looks like the p11.techlab-cdn.com stuff is also currently breaking viewing bills on rogers.com in Firefox

29.10.2025 02:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I wasn't able to find out much out about the purpose of the script from p11.techlab-cdn.com. It seems to be part of an Akamai product and my best guess is that it's hooking a bunch of stuff to try to detect malicious script running on the page. If anyone knows more, please share.

11.09.2025 21:07 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
1988248 - Proxied charCodeAt is 4x slower than Chrome NEW (nobody) in Core - JavaScript Engine: JIT. Last updated 2025-09-11.

Chrome handles the Proxy case better but it's still 11x slower than if it wasn't there: bugzilla.mozilla.org/show_bug.cgi.... Safari's slower than Firefox.

11.09.2025 21:07 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

If I block the techlab-cdn script the amount of time that the page blocks the main thread when I clear the search field goes down from 600ms to 350ms.

11.09.2025 21:07 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
GitHub - emotion-js/emotion: πŸ‘©β€πŸŽ€ CSS-in-JS library designed for high performance style composition πŸ‘©β€πŸŽ€ CSS-in-JS library designed for high performance style composition - emotion-js/emotion

One of the reasons it takes so long is that these sites run a script from p11.techlab-cdn.com that overrides String.charCodeAt with a Proxy. They also seem to use github.com/emotion-js/e... which hashes CSS strings a lot. The Proxy slows down this hashing by 40x in Firefox.

11.09.2025 21:07 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
No Frills Supermarket | Grocery shop online or instore

Clearing the search field on Loblaws online shopping sites like nofrills.ca blocks the main thread with JS for 600ms on my M3 MacBook Pro. This is a pretty noticeable jank and is presumably a lot worse if you're not using a computer as fast as an MBP

11.09.2025 21:07 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
1973131 - https://dΓΈ.nu/ uses software filters NEW (nobody) in Core - Graphics: WebRender. Last updated 2025-06-19.

I filed bugzilla.mozilla.org/show_bug.cgi... for that case

19.06.2025 23:47 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
1906212 - WR SVG filters: Enable gfx.webrender.svg-filter-effects pref in beta and release RESOLVED (ahale) in Core - Graphics: WebRender. Last updated 2024-11-05.

Is it correct that the `filter()` function stuff is only supported by Safari?

SVG filter performance should be better in a lot of cases as of bugzilla.mozilla.org/show_bug.cgi...

Do you have specific cases that are still slow?

19.06.2025 23:37 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
1777171 - (navigation-api) [meta] Implement Navigation API NEW (nobody) in Core - DOM: Navigation. Last updated 2025-06-19.

bugzilla.mozilla.org/show_bug.cgi...

19.06.2025 23:24 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
1961710 - Outlook sends `Content-Disposition: filename*=UTF-8''` and then parses it incorrectly NEW (nobody) in Web Compatibility - Site Reports. Last updated 2025-04-24.

bugzilla.mozilla.org/show_bug.cgi...

24.04.2025 17:13 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

The Outlook's parsing looks like:
```
o = e.headers.get('Content-Disposition') ||
'',
a = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(o);
return a &&
a[1] &&
(n = a[1].replace(/['"]/g, '')) &&
(n = decodeURIComponent(n)),
```

24.04.2025 17:13 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Outlook sends attachments to Firefox with `content-disposition: attachment; filename*=UTF-8''Backup.pdf`. Browsers with a non-Firefox UA get `content-disposition: attachment; filename="Backup.pdf"`. Outlook then fails to properly the parse this harder and starts a download of `UTF-8Backup.pdf`

24.04.2025 17:13 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
1954323 - Very high CPU usage on TikTok from toLocaleDateString VERIFIED (andrebargull) in Core - JavaScript: Internationalization API. Last updated 2025-03-27.

We ended up doing a Firefox release to deal with this: bugzilla.mozilla.org/show_bug.cgi...

27.03.2025 14:07 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Like 300 times per day of active use in the last 14 days for every instrumented event.

e.g. in my profile with 7 days of active use it does it 2072 times for every hover, click etc.

24.03.2025 01:18 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

TikTok does `new Date((new Date).getTime() - 864e5 * e).toLocaleDateString("en-US")` a lot

22.03.2025 18:01 πŸ‘ 4 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

"Perl's efficiency likely contributes to its rising usage, as teams leverage it for automation tasks where speed is a priority." - CircleCI's "Programming language trends 2025"

15.01.2025 18:55 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

During this entire process Gmail gives no indication that anything is happening at all. This encouraged me to click the download button multiple times which initiated multiple downloads of the 500MB file causing my Gmail process in Firefox to balloon to roughly 80GB of memory. πŸ™

07.01.2025 20:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

After that, Gmail converts the combined byte string to an ArrayBuffer using charCodeAt which takes another 148ms. Finally the ArrayBuffer is converted to a Blob and '<a>' element is used to get the browser to download it.

07.01.2025 20:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Each chunk is passed to atob() which returns a string containing all the byte values. These strings are then added to an array that's join("")ed to produce a byte string 2x the size of the attachment. It takes Chrome one second to do this conversion of a 100MB file on M3 MacBook Pro

07.01.2025 20:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Gmail uses this regex:
/(([\r\n]{0,2}[A-Za-z0-9+\/]){4,4}){0,1024}([\r\n]{0,2}[A-Za-z0-9+\/][\r\n]{0,2}[AQgw]([\r\n]{0,2}=){2,2}|([\r\n]{0,2}[A-Za-z0-9+\/]){2,2}[\r\n]{0,2}[AEIMQUYcgkosw048][\r\n]{0,2}=|([\r\n]{0,2}[A-Za-z0-9+\/]){4,4})[\r\n]{0,2}/g
to turn the responseText into 4100 length chunks

07.01.2025 20:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Once the download has completed Gmail needs to convert the base64 string into binary that can Gmail can give to the browser as a download.

07.01.2025 20:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

This response ends up in the responseText property of the XHR object. In Firefox, that means that the utf8 base64 response is converted to utf16 doubling its size. Combined with the base64 overhead, when downloading a 512MB file, you'll end up with a 1.3GB responseText property sitting in memory.

07.01.2025 20:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

When Gmail receives an email containing a Google Drive link it displays as an attachment. What happens when you click on the attachment to download it?

Gmail does an XHR to a URL like clients6.google.com/drive/.

This request responds with a base64 encoded version of the Google Drive file.

07.01.2025 20:47 πŸ‘ 1 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
Preview
Compiler Explorer - C++ (x86-64 gcc 14.2) int do_thing1(); int do_thing2(); void stuff(const char *dest, const char *src, size_t len) __attribute__((nonnull (1, 2))); int test(char *dest, const char *src, size_t len) { stuff(dest, src,...

Because the arguments to memcpy are marked as being nonnull. See godbolt.org/z/o58W65hnT.

The nonnull attribute is then presumably propagated to the arguments of test and the if condition is removed.

11.12.2024 16:28 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
1933929 - toei-anim.co.jp - The "Application error: a client-side exception has occurred" error is displayed randomly NEW (nobody) in Web Compatibility - Site Reports. Last updated 2024-12-04.

bugzilla.mozilla.org/show_bug.cgi...

04.12.2024 18:50 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

`s.type` is checked but `e.newsInfoDetail.date` is used.

Spidermonkey's sort algorithm ends up with a comparison where e.type = "rss" and s.type == "news" and then throws an exception. Chrome and Safari avoid this.

04.12.2024 18:50 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Webcompat diagnosis of the day:
toei-anim.co.jp has the following bug:
```
l = s.sort( (e, s) => {
let r = "news" == e.type ? Date.parse(e.newsInfoDetail.date) : e.published
, l = "news" == s.type ? Date.parse(e.newsInfoDetail.date) : s.published;
return l - r
}
```

04.12.2024 18:50 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
1923825 - unsplash.com - Image does not get uploaded when using "Visual search" NEW (nobody) in Web Compatibility - Site Reports. Last updated 2024-11-13.

Diagnosing bugzilla.mozilla.org/show_bug.cgi... has been difficult

15.11.2024 14:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0