One of the most powerful features enabled by the user-owned data stores of Basic is the ability for user data to be interopped across various Basic-powered apps. This is done securely since they are always in control of how their data is shared.

We’ve made setting up interop in your app for your users very straightforward and easy.


In this guide, you will:

  1. Learn how to make tables in your app available to other apps
  2. Learn how to read a table from another app

Make tables in your app available to other apps

They’re available by default! There’s nothing you need to change in your development process to have them made available.

Schemas are public in Basic, therefore developers can build on top of your tables and interop with them.

Read a table from another app

You import a table very similar to how you would define a table in your own app, except you’d include the origin object.

For example, if you want to import the tasks table from the tsk.lol app, you’d add the following to your schema:

export const schema = {
  project_id: 'your-project-id',
  version: 'your-version-number',
  tables: {
    "tasks": {
      // add the origin object
      "origin": {
        // add the project id of the app you're importing from
        "project_id": "701b11bc-59a8-45b5-8148-7184d7733e5b",
        // make sure the table name matches exactly
        "table": "tasks",
        // type should be 'reference' instead of 'collection'
        "type": "reference"
      },
      // the rest of your own schema tables
      ...
    }
  }
}

current limitations

  • There’s no way to import multiple tables from a project - you need to specify each of them manually. However, this lets you be selective about which tables to import
  • The table name in your schema must match the name of the table you are importing
  • Field names must match - you don’t need to include all of the fields you are importing, but also can’t add any additional ones either (yet)
  • Schema versions migrations for imported tables are coming soon