Skip to content

Define what browsers the browser SDK should support #58

@martinkuba

Description

@martinkuba

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions