Understanding the events sent by the JS SDK, `type: session`

I’m trying to understand why the JS SKD is constantly sending events to Sentry with the following payload (schema):

{"sid":"....","init":false,"started":"..." ,"timestamp":"...","status":"exited","errors":0,"did":"...","duration":4127,"attrs":{"release":"app@dev"}}

In almost every click I get two of those events being sent. Once with init: false and the other with a different sid and init: true.

I would like to know how does the SDK get the sid, and why is it changing so often?

This is an PWA. Our integration with Sentry is quite simple (in coffescript):

    dsn: SENTRY_DSN
    release: SENTRY_RELEASE
    environment: SENTRY_ENVIRONMENT
    integrations: [new window.SentryIntegrations.BrowserTracing()]
    tracesSampleRate: 0.35

Hi @mvaled, sessions are used to report on Release Health.