Getting started
Install with npm
Use @playstep/web from your bundler, for single-page apps and any framework.
npm i @playstep/web
Start PlayStep once, as early as your app boots:
import { playstep } from '@playstep/web'
playstep.init({ appKey: 'ps_pub_dev_your_key' })
Then tell it who is signed in, and report the events your guides react to:
playstep.identify(user.id, { plan: user.plan })
playstep.track('invoice_page_opened')
The package is ESM with TypeScript types. The guide UI is a separate chunk that your bundler loads only when a guide starts, so it adds about 3 KB to your main bundle.
Single-page apps
Client-side navigation is detected automatically: PlayStep listens for history.pushState and popstate, and reports a page view for each new path, which is what page_view triggers match. To report screens yourself, turn it off and call page:
playstep.init({ appKey: 'ps_pub_dev_your_key', autoPageViews: false })
router.afterEach((to) => playstep.page(to.path))
Server-side rendering
init is safe to import anywhere, but call it only in the browser (for example in a client-only plugin). The SDK never touches window until init runs.
Next steps
Mark your anchors, then build your first guide. Every method is in the web SDK reference.