-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
To provide guarantees for users, we need a documented browser support policy that defines:
- Which browser engines and versions we officially support
- What JavaScript syntax levels we rely on
- What Web APIs may be used by the core and by various instrumentations
- Which features we explicitly avoid because they cannot be transpiled or polyfilled
- How we test and enforce support boundaries
Scopes
I imagine that we should define support for:
- core browser SDK
- default instrumentations bundle
- optional instrumentations (on case-by-case basis?)
Proposal
Javascript Syntax
- the core SDK and instrumentations should target ES2018+
- This is supported by all modern browser. The only exception is IE11
- To clarify: this requirement applies to the compiled output we publish to npm, not to the source code. Source can use newer syntax as long as the build step downlevels it to ES2018+.
Web APIs
- core can assume presence of: fetch, URL, Promise, Map, Set, Symbol
- core should not depend on APIs that cannot be polyfilled, e.g. BigInt, SharedArrayBuffer, Proxy
- instrumentations can use any API but must include feature-detect fallback
Other questions
Should our support be defined based on browser versions or capability/features?
How do we guarantee this? Should we plan on testing in all of the supported environments?
What constitutes a breaking change?
Metadata
Metadata
Assignees
Labels
No labels