Write your own Integration
An integration in Spotlight is rather powerful. It can completely change the behavior, add, remove functionality from Spotlight.
All integrations are run in the order that they are configured. For instance, for the array
[sentry(), astro()] in the
sentry() will run before
astro() and astro might overwrite things perviously configured.
Your integration should ideally be able to run in any order. If this isn’t possible, we recommend documenting that your integration needs to come first or last in your user’s integrations configuration array.
Explaining the Sentry Integration
so you can write your own
First the integration needs a name
Next up, we have an optional function that is invoked during initialization of Spotlight called
In Sentry’s case we try to find a running Browser SDK and hook into it to tell it to send events to the Sidecar.
How does an integration receive events?
It receives an event depending on a list of compatible headers, e.g for Sentry Integration:
So any event the Overlay receives from the Sidecar with the header
Content-Type: application/x-sentry-envelope will be forwarded to the
processEvent is the function the gets invoked on the integration for every incoming event matching the headers.
An integration can return a function that returns an array of tabs, and also what panel/content Spotlight should render when the tab is selected.
NotificationCount is optional but can determine if Spotlight should update the number on the tab.
See IntegrationTab interface for more information.
And that’s already it. This is just a very basic example, you can look at the code directly on Github so see all the details.