google / google/closure-compiler

IE11: Enumerating Object properties has `Symbol` polyfill keys in them

Open
#2,825 4 comments 2 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
7.7k
Forks
1.2k
Avg merge
2d 12h
Merged PRs (30d)
6

Description

Sorry in advance if this actually has nothing to do with Closure Compiler directly. I'd assume that it's done on purpose (or not?) and mostly looking for alternative ways to prevent the issue.

We have been debugging some issues caused by `Google Maps version >3.29` on Internet Explorer 11 for a while now and finally most likely found a root cause in

https://github.com/apollographql/apollo-client/issues/3043#issuecomment-367455085

TL;DR: Recursively enumerating Object properties causes endless loops (or at least really really deep recursion) on IE11 because Google Maps now uses a version of `Symbol` polyfill that adds the keys to object. Maybe related to https://github.com/google/closure-compiler/issues/2448 or similar?

Steps to reproduce:

Option 1:
- Use the Apollo repo linked in the issue

Option 2:

- Add a blank page with Google Maps v3.30 embedded
- Inline some large-ish object
- [`deepFreeze`](https://github.com/substack/deep-freeze/blob/master/index.js)

It's hard to say what happened between the versions v3.29 and v3.30 that caused the breakage (versions updated, compiler flags changed) but hopefully you Googlers can check the menorepo or ask across the table or something (😂) to find out more.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.