These are the beta docs for the upcoming v0.10.0 release.

JavaScript API

PocketBase's JavaScript runtime environment is neither Browser nor NodeJS. As such, it lacks Web APIs and NodeJS APIs such as Buffer and require('fs').

There is extensive documentation covering many aspects of extending PocketBase with JS hooks. You'll probably be most concerned with database operations and higher-level record operations, like this:

const records = $app
  .dao()
  .findRecordsByExpr(
    'articles',
    $dbx.exp('LOWER(username) = {:username}', { username: 'John.Doe' }),
    $dbx.hashExp({ status: 'pending' })
  )

Going even deeper, look at the PocketBase JSVM docs to see available APIs. It's a little hard to understand, so hopefully the examples we provide will help to fill in any unfamiliar concepts.

But can I use my favorite NPM package?

Probably not, but maybe you're luckier than I am. Any NPM modules that work as pure EcmaScript will also work inside PocketBase, as long as they are CommonJS.