Migrating from Baserow

Baserow is an app your team signs into; outside it, a view shows up only as a read-only iframe. SvGrid Base is the same kind of table database shipped as a Svelte 5 component. The records go into tables in your own database, <SvBase> renders editable views inside your app, and every change is written back to those tables.

Estimated effort: 1-3 hours per database, plus the time to rebuild its automations.

Facts, checked 14 Oct 2026. @svgrid/grid 3.0.3, MIT, last published 11 Sep 2026, 16,900 npm downloads in the 30 days to 10 Sep 2026. Baserow pricing, as its site states it: Baserow's self-hosted open-source edition is free with unlimited rows. baserow.io/pricing lists Premium at $10 per user per month billed yearly ($12 monthly), Advanced at $18 per user per month billed yearly ($22 monthly) and Enterprise on request, at the same prices on cloud and self-hosted; cloud Free is $0 with 3,000 rows per workspace (https://baserow.io/pricing, read 14 Oct 2026). SvGrid: SvGrid Base ships in Enterprise Suite of @svgrid/enterprise, $999 per developer per year, unlimited apps and end users; the grid it runs on is MIT. Side by side, with sources: SvGrid vs Baserow.

Two starting points

What maps to what

Baserow SvGrid Base
A database A <SvBase tables> with one tab per table
A table A table in your database, opened as a BaseTable
A view A FieldView: grid, kanban, calendar, gallery, gantt, chart or form
A timeline view A gantt view with dateField and endField
An automation An automation in the view bar, or createAutomationServer on your server
Workspace roles Your app's login, and authorize on the endpoint
Row comments setRecordComments, stored where your app stores them
An application builder page Your own Svelte page around the base
Baserow field fieldType
Single line text, long text text, longText
Link to table link
Lookup, rollup, count lookup, rollup, count
Formula formula
Number, rating, duration number, rating, duration
Boolean checkbox
Date date
Created on, last modified createdTime, lastModifiedTime
Created by, last modified by createdBy, lastModifiedBy
Collaborator user
File attachment
Single select, multiple select singleSelect, multiSelect
Autonumber autoNumber
URL, email, phone number url, email, phone
Button button
UUID text, or the table's key
Password none: passwords belong to your app's login
AI prompt none: an automation action you register with registerAutomationAction

Baserow formulas name fields in square brackets ([Quantity] * [Unit Price]); SvGrid Base names them in braces ({Quantity} * {Unit Price}). Change the brackets and paste the formula into the field editor. A function the base does not have shows #ERROR and is named in the editor, so you rewrite that part.

1. Export each table

In each table, export the grid view as CSV with every field shown and no filter. Open one file and look at how the link columns came out: the next step matches the linked rows they name back to keys.

2. Load the tables into your database

Create a table per Baserow table, with a key the database makes, load the CSV, and turn the link text into foreign keys and pairing tables. The SQL is the same as for any other CSV export: Load the tables into your database walks through it, a link to one record and a link to many.

3. Open the database as a base

// src/routes/api/base/+server.ts
import { createBaseEndpoint } from '@svgrid/enterprise/base'

// Your database driver: run parameterized SQL, return the rows.
declare function query(sql: string, params: unknown[]): Promise<Record<string, unknown>[]>

export const { GET, POST } = createBaseEndpoint({ execute: query })
<!-- src/routes/base/+page.svelte (with `export const ssr = false` in +page.ts) -->
<script lang="ts">
  import { SvToaster } from '@svgrid/grid'
  import { SvBase, baseFromEndpoint, enableBase } from '@svgrid/enterprise/base'

  enableBase()
  const tables = baseFromEndpoint('/api/base')
</script>

{#await tables then tables}
  <SvBase {tables} editable sortable columnAdder fieldMenu />
{/await}
<SvToaster />

Foreign keys become links with a field on the other side that links back, pairing tables become links to many records, and a text column that repeats a few values becomes a single select with a color per value. See what it reads from your database.

4. Views, automations and access

Recreate the views you used, including the Kanban, calendar and timeline views that were paid on Baserow:

import type { FieldView } from '@svgrid/enterprise/base'

const views: FieldView[] = [
  { id: 'all', name: 'All rows', type: 'grid', color: { mode: 'field', field: 'status' } },
  { id: 'board', name: 'Board', type: 'kanban', stackBy: 'status' },
  { id: 'due', name: 'Due dates', type: 'calendar', dateField: 'due' },
]

Automations take the triggers you know (a record created or changed, a condition, a form, a button, a schedule) and update records, create records, call webhooks or send email; see Automations. Roles move into the endpoint's authorize, or into row level security on Supabase.

What you give up

SvGrid Base is part of the Suite edition of @svgrid/enterprise ($999 per developer). It runs without a key during an evaluation, with a watermark.

See also

Related articles