0.1.1007666 • Published 9 months ago

userflow.js-self-hosted v0.1.1007666

Weekly downloads
-
License
-
Repository
-
Last release
9 months ago

Self-hosted Userflow.js

IMPORTANT: This is a WIP! Unless you've been explicitly told by Userflow to use this package, you should use our CDN-hosted version instead. See https://userflow.com/install

Userflow.js is hosted on Userflow's CDN (running on Cloudflare). We always recommend using the official Userflow.js CDN, unless you have very specific requirements as detailed in this document. See Userflow.js installation via CDN

This package allows you to self-host Userflow.js. This may be required in cases such as:

  • Chrome Extensions using manifest v3, which does not allow for loading remote JavaScript code.
  • When Userflow.js is deployed on customers' machines running behind a firewall. In this case, you're also responsible for proxying requests to Userflow's backend, which is not detailed in this document.

Backwards compatibility

Userflow.js connects to Userflow's backend and communicates about flows and user activity. When you use our official CDN, you're always guaranteed to run on the latest Userflow.js version. We occasionally, but rarely, introduce backwards incompatible changes between old Userflow.js versions and the currently deployed Userflow backend. We strive to keep old Userflow.js clients (browsers that have not refreshed in days, for example) working for at least 2 weeks. But this is not a strict guarantee - there could be very rare cases, where outdated and unsupported clients are rejected sooner.

If you choose to self-host, your Userflow.js version may run behind what the Userflow backend is designed to work with. It is therefore your responsibility to periodically upgrade to the latest userflow.js-self-hosted package version.

The consequence of an outdated and unsupported Userflow.js client version connecting to the Userflow backend, would simply be that no Userflow content will show, and calls to userflow.identify(), userflow.start() etc. will fail.

Contact Userflow if you require a more tightly controlled service agreement with explicit backwards compatibility guarantees.

Versioning

userflow.js-self-hosted uses Semantic Versioning, where versions are on the format 1.0.<USERFLOW_BUILD>, where <USERFLOW_BUILD> is a Userflow-internal build number (always incrementing). Example: 1.0.1002407. As long as the major version is 1, you can expect no changes in how to consume the package. If we one day change the structure of the package, requiring you to do some work, it'll be under a new major version, e.g. 2.0.<USERFLOW_BUILD>. This means it should always be safe and maintenance-free for you to upgrade to the latest patch version.

Usage

Install from npm:

npm install userflow.js-self-hosted

The package contains ES modules and a few CSS files. The entrypoint is ./userflow.js, whose default export is the userflow object - the one you call userflow.init() etc. on.

From your own code, you can import ./userflow.js via a dynamic import() call. Then grab the default export from that. Example:

const {default: userflow} = await import(
  'path/to/userflow.js-self-hosted/userflow.js'
)
userflow.init('<TOKEN>')
// userflow.identify(...) etc.

It'll automatically and lazily figure out how to import further modules from the same location as ./userflow.js was loaded from. For example, it won't load the resource center code if you're not using it. It'll also load CSS files from the same location. It never touches the official CDN at js.userflow.com (except if you use our default avatar SVGs).

You may also be able to use a bundler, such as Webpack, to transform the code into whatever format you want.

Usage in Chrome Extensions

Here's a super simple Chrome Extension which installs Userflow.js on myapp.com. It assumes that you've already installed userflow.js-self-hosted as an npm package.

manifest.json:

{
  "manifest_version": 3,
  "name": "Demo",
  "description": "Just a demo of using Userflow.js in manifest v3",
  "version": "0.1.0",
  "content_scripts": [
    {
      "matches": ["https://myapp.com/*"],
      "js": ["content-script.js"]
    }
  ],
  "web_accessible_resources": [
    {
      "matches": ["<all_urls>"],
      "resources": ["node_modules/userflow.js-self-hosted/*"]
    }
  ]
}

content-script.js:

;(async () => {
  const {default: userflow} = await import(
    chrome.runtime.getURL('node_modules/userflow.js-self-hosted/userflow.js')
  )
  userflow.init('<TOKEN>')
  // userflow.identify(...) etc.
})()

Since ./userflow.js is an ES module (so are all other .js files in the package), and Chrome extensions don't use ES modules themselves directly, you have to include it in your content script via this dynamic import() call. It's important to add the userflow.js-self-hosted package's path under web_accessible_resources in your manifest.json.

Userflow.js documentation

0.1.1007620

9 months ago

0.1.1007587

9 months ago

0.1.1007666

9 months ago

0.1.1007501

9 months ago

0.1.1007467

9 months ago

0.1.1007532

9 months ago

0.1.1007548

9 months ago

0.1.1007435

9 months ago

0.1.1007423

9 months ago

0.1.1007428

9 months ago

0.1.1007050

10 months ago

0.1.1007051

10 months ago

0.1.1007299

9 months ago

0.1.1006528

10 months ago

0.1.1006195

11 months ago

0.1.1007164

9 months ago

0.1.1007043

10 months ago

0.1.1006511

10 months ago

0.1.1006513

10 months ago

0.1.1007287

9 months ago

0.1.1006993

10 months ago

0.1.1006519

10 months ago

0.1.1006877

10 months ago

0.1.1006662

10 months ago

0.1.1006309

10 months ago

0.1.1006305

10 months ago

0.1.1006534

10 months ago

0.1.1006658

10 months ago

0.1.1007011

10 months ago

0.1.1007259

9 months ago

0.1.1007376

9 months ago

0.1.1007256

9 months ago

0.1.1006393

10 months ago

0.1.1007362

9 months ago

0.1.1007241

9 months ago

0.1.1006395

10 months ago

0.1.1006391

10 months ago

0.1.1007006

10 months ago

0.1.1006279

10 months ago

0.1.1006959

10 months ago

0.1.1007394

9 months ago

0.1.1007391

9 months ago

0.1.1006500

10 months ago

0.1.1006980

10 months ago

0.1.1006188

11 months ago

0.1.1007036

10 months ago

0.1.1006508

10 months ago

0.1.1006503

10 months ago

0.1.1006973

10 months ago

0.1.1007387

9 months ago

0.1.1006977

10 months ago

0.1.1006976

10 months ago

0.1.1006979

10 months ago

0.1.1007337

9 months ago

0.1.1007333

9 months ago

0.1.1006487

10 months ago

0.1.1006474

10 months ago

0.1.1007322

9 months ago

0.1.1007208

9 months ago

0.1.1007230

9 months ago

0.1.1007352

9 months ago

0.1.1007355

9 months ago

0.1.1007356

9 months ago

0.1.1007235

9 months ago

0.1.1006491

10 months ago

0.1.1007346

9 months ago

0.1.1007225

9 months ago

0.1.1007228

9 months ago

0.1.1006934

10 months ago

0.1.1007096

9 months ago

0.1.1006203

11 months ago

0.1.1006314

10 months ago

0.1.1007409

9 months ago

0.1.1007407

9 months ago

0.1.1007317

9 months ago

0.1.1006337

10 months ago

0.1.1007305

9 months ago

0.1.1005315

1 year ago

0.1.1005420

12 months ago

0.1.1005213

1 year ago

0.1.1004908

1 year ago

0.1.1005203

1 year ago

0.1.1004912

1 year ago

0.1.1005741

11 months ago

0.1.1005743

11 months ago

0.1.1005742

11 months ago

0.1.1005525

12 months ago

0.1.1005270

1 year ago

0.1.1005281

1 year ago

0.1.1005169

1 year ago

0.1.1005722

11 months ago

0.1.1004941

1 year ago

0.1.1005347

1 year ago

0.1.1005903

11 months ago

0.1.1005377

1 year ago

0.1.1004949

1 year ago

0.1.1004662

1 year ago

0.1.1004660

1 year ago

0.1.1004530

1 year ago

0.1.1004519

1 year ago

0.1.1004513

1 year ago

0.1.1004474

1 year ago

0.1.1004389

1 year ago

0.1.1004371

1 year ago

0.1.1004377

1 year ago

0.1.1004327

1 year ago

0.1.1004325

1 year ago

0.1.1004280

1 year ago

0.1.1004281

1 year ago

0.1.1004276

1 year ago

0.1.1004235

1 year ago

0.1.1004233

1 year ago

0.1.1004224

1 year ago

0.1.1004223

1 year ago

0.1.1004226

1 year ago

0.1.1004222

1 year ago

0.1.1004209

1 year ago

0.1.1004206

1 year ago

0.1.1004207

1 year ago

0.1.1004191

1 year ago

0.1.1004186

1 year ago

0.1.1004182

1 year ago

0.1.1004175

1 year ago

0.1.1004158

1 year ago

0.1.1004155

1 year ago

0.1.1004153

1 year ago

0.1.1004123

2 years ago

0.1.1004122

2 years ago

0.1.1004108

2 years ago

0.1.1004104

2 years ago

0.1.1004068

2 years ago

0.1.1003917

2 years ago

0.1.1003916

2 years ago

0.1.1004059

2 years ago

0.1.1003880

2 years ago

0.1.1004053

2 years ago

0.1.1004080

2 years ago

0.1.1004081

2 years ago

0.1.1004005

2 years ago

0.1.1004001

2 years ago

0.1.1003955

2 years ago

0.1.1004071

2 years ago

0.1.1004077

2 years ago

0.1.1004075

2 years ago

0.1.1003850

2 years ago

0.1.1003972

2 years ago

0.1.1004024

2 years ago

0.1.1003973

2 years ago

0.1.1003968

2 years ago

0.1.1003967

2 years ago

0.1.1004041

2 years ago

0.1.1004042

2 years ago

0.1.1003914

2 years ago

0.1.1003878

2 years ago

0.1.1003988

2 years ago

0.1.1003773

2 years ago

0.1.1003416

2 years ago

0.1.1003813

2 years ago

0.1.1003417

2 years ago

0.1.1003364

2 years ago

0.1.1003804

2 years ago

0.1.1003829

2 years ago

0.1.1003270

2 years ago

0.1.1003278

2 years ago

0.1.1003557

2 years ago

0.1.1003816

2 years ago

0.1.1003268

2 years ago

0.1.1003662

2 years ago

0.1.1003825

2 years ago

0.1.1003308

2 years ago

0.1.1003826

2 years ago

0.1.1003821

2 years ago

0.1.1003269

2 years ago

0.1.1003607

2 years ago

0.1.1003450

2 years ago

0.1.1003617

2 years ago

0.1.1003614

2 years ago

0.1.1003459

2 years ago

0.1.1003698

2 years ago

0.1.1003443

2 years ago

0.1.1003840

2 years ago

0.1.1003441

2 years ago

0.1.1003606

2 years ago

0.1.1003329

2 years ago

0.1.1003602

2 years ago

0.1.1003206

2 years ago

0.1.1003510

2 years ago

0.1.1003594

2 years ago

0.1.1003515

2 years ago

0.1.1003512

2 years ago

0.1.1003618

2 years ago

0.1.1003224

2 years ago

0.1.1003343

2 years ago

0.1.1003469

2 years ago

0.1.1003622

2 years ago

0.1.1002918

2 years ago

0.1.1002761

2 years ago

0.1.1002564

2 years ago

0.1.1002726

2 years ago

0.1.1002888

2 years ago

0.1.1002842

2 years ago

0.1.1002964

2 years ago

0.1.1002920

2 years ago

0.1.1002884

2 years ago

0.1.1002643

2 years ago

0.1.1002904

2 years ago

0.1.1003124

2 years ago

0.1.1002872

2 years ago

0.1.1002990

2 years ago

0.1.1003123

2 years ago

0.1.1002870

2 years ago

0.1.1002912

2 years ago

0.1.1002558

2 years ago

0.1.1002559

2 years ago

0.1.1003129

2 years ago

0.1.1002876

2 years ago

0.1.1002874

2 years ago

0.1.1002859

2 years ago

0.1.1002738

2 years ago

0.1.1002739

2 years ago

0.1.1003114

2 years ago

0.1.1003034

2 years ago

0.1.1002661

2 years ago

0.1.1003153

2 years ago

0.1.1002989

2 years ago

0.1.1002902

2 years ago

0.1.1002743

2 years ago

0.1.1002865

2 years ago

0.1.1002744

2 years ago

0.1.1002667

2 years ago

0.1.1002863

2 years ago

0.1.1002929

2 years ago

0.1.1002848

2 years ago

0.1.1002727

2 years ago

0.1.1002893

2 years ago

0.1.1003142

2 years ago

0.1.1002934

2 years ago

0.1.1002856

2 years ago

0.1.1002975

2 years ago

0.1.1002775

2 years ago

0.1.1002544

2 years ago

0.1.1002542

2 years ago

0.1.1002534

3 years ago

0.1.1002513

3 years ago

0.1.1002512

3 years ago

0.1.1002497

3 years ago

0.1.1002486

3 years ago

0.1.1002482

3 years ago

0.1.1002477

3 years ago

0.1.1002471

3 years ago

0.1.1002468

3 years ago

0.1.1002465

3 years ago

0.1.1002463

3 years ago

0.1.1002462

3 years ago

0.1.1002461

3 years ago

0.1.1002460

3 years ago

0.1.1002459

3 years ago

0.1.1002458

3 years ago

0.1.1002457

3 years ago

0.1.1002455

3 years ago

0.0.2000010

3 years ago

0.0.2000009

3 years ago

0.0.2000008

3 years ago

0.0.2000007

3 years ago

0.0.2000006

3 years ago

0.0.2000005

3 years ago

0.0.2000004

3 years ago

0.0.2000003

3 years ago

0.0.2000002

3 years ago

0.0.2000001

3 years ago