AIJUTSU
> MIGRATION_NOTES · Riff

Migrating your app off Riff

If you built on Databutton, or on Riff in its first year, the product you built with is no longer the product Riff sells. Riff's documentation now opens with procurement and operations teams in manufacturing, and the pages for the old web app builder were moved into an archive marked legacy and then taken down.

Your app may well still be running. What has changed is that the roadmap, the support and the pricing it depended on are likely to follow a different customer now, and we have not found a published timeline for how long the old workspaces will be kept.

This page sets out what Riff's documentation says you can take with you, what has to be rebuilt, what it costs each month to run the result, and the questions worth asking before you decide anything.

> 30 MINUTES · COMPLIMENTARY · NO OBLIGATION
> THE_LIST

What tends to move, and what tends to need a plan

A migration is mostly a list. For a Riff app the list starts from one documented fact: an Export Code setting that downloads a zip, and nothing in the documentation about repositories, self-hosting or database export.

> USUALLY MOVES CLEANLY
  • The code, as a zip from the Export Code setting, if you still have access to the workspace.
  • The database schema, if the migrations the Riff agent wrote are in the zip; the documentation does not list what the zip contains.
  • Static assets: images, fonts, the build output.
  • The domain name, as long as the registrar account is yours.
  • The screens, as a specification: a running app is a precise one to rebuild or review from.
> NEEDS A PLAN OF ITS OWN
  • Sign-in, permissions and workspace controls: Riff says the exported app does not have the security features of the Riff workspace.
  • The data itself: the records in Riff's built-in PostgreSQL database, which the documentation gives no export for.
  • Files people uploaded, which sit in Riff's Storage and which no code export touches.
  • Secrets and environment variables, which Riff keeps in an encrypted vault and no export includes.
  • Anything Riff wired up for you: email, scheduled jobs, webhooks, ERP or SaaS connectors.
  • Monitoring, backups, and who gets the alert at two in the morning.
> THE_LONG_VERSION

Leaving slowly, on purpose

The questions we ask, the parts that surprise people, and how we tend to go about it.

What "migrating" can mean

When someone tells us they want to migrate off Riff, the four meanings we usually sort through narrow to two, because the documentation offers one way out. The first is moving the whole app: the code leaves as a zip from the Export Code setting, the security features it relied on are rebuilt, the data is extracted by whatever route Riff can provide, and the result runs on infrastructure you choose. The second is a rebuild, with the running app as a very precise specification. Which of these applies tends to depend on what the zip contains and whether the data can be got out in a standard form, and both are things to find out before anyone quotes you.

The option of owning the process while the app still runs on Riff, through a repository and a review, is one we would not plan on here. The documentation describes no repository sync, and the workspace the app lives in is sold to a different customer now.

Which of the two is yours? It is worth answering before reading on, because the cost and the timeline differ by a wide margin between a move and a rebuild.

Why building on Riff was a reasonable call

This applies as much to an app built on Databutton or on early Riff as to any other. A year or two ago the choice was between a builder that could produce a working app in a weekend and a development quote that started at five figures and ended months later. Picking the weekend was sensible. The app exists, it has users, and those users have taught you things about the business that no specification would have. That knowledge is worth more than the code, which can be rebuilt.

The feeling that comes with a vendor moving on tends to be a kind of embarrassment, as if the right move had been obvious all along. From where we sit it looks like a good decision that has done its job, which is what early decisions tend to do.

What usually moves cleanly

The code can leave, and that is the one documented fact to build a plan on. Riff's App Settings include an Export Code setting that, in its words, "downloads a zip file with your app's code. The exported app doesn't have the security features of the Riff workspace." Riff's documentation describes its apps as a React and TypeScript front end, a Python back end on FastAPI and a PostgreSQL database, and if your zip matches that shape a developer can usually have the front end running on a laptop within the hour, and the back end soon after, once the sign-in and permissions it leaned on have been replaced.

The documentation does not list what the zip contains, so a trial export is the first thing we would do. Whether the database migrations the Riff agent wrote are in it is worth checking early, because they are the recipe for recreating the tables. Static assets and the domain name move as they would from anywhere.

The design does not stay where it is, in the sense the other pages on this site mean. There is no builder to keep as the design surface, and the running app is the design record.

What needs its own plan

State is the hard part, and on Riff it is harder than on most builders because the documentation is silent on it. The records live in Riff's built-in PostgreSQL database, which the documentation lets you browse and query and gives no export for. User accounts come with the same silence: sign-in belongs to the security features the export leaves out, so plan for everyone to set up their account again on the new app. Uploaded files sit in Riff's Storage, and no code export touches them. Secrets are kept in an encrypted vault, which is correct, and which means someone has to collect them.

Then there is everything Riff connected for you. Deployed apps live at a riff.works address unless a custom domain was configured, so a webhook from a payment provider points there. A scheduled job runs on Riff's scheduler. Any ERP or SaaS connector is configuration on Riff's side. Each of these is small on its own and easy to miss as a group. We keep a one-page list for every migration, and for a Riff app the first line on it is a dated email to Riff asking, in writing, whether the database can be exported with its user accounts and in what form. If the data comes out, this is an ordinary migration with some security work on top. If it does not, the app itself can usually be made to write its data out through a page or an endpoint added before access ends, and that is the part worth doing first.

The questions worth asking before launch day

Security is the part that generated apps tend to get wrong in the same few ways. An automated scan of about a thousand AI-generated apps across Lovable, Bolt, Replit, Vercel and others, published by Stefan Lederer of securityscanner.dev in April 2026, reported that 183 of its 190 critical findings were misconfigured row-level security on Supabase databases, which in practice means any signed-in user can read other users' rows. The same scan flagged 38 apps with API keys sitting in the JavaScript bundle, and a few API endpoints with no authentication at all. One scan is one scan, and the figures will have moved since it ran. The pattern, though, matches what we find when we open a generated codebase for the first time.

Three checks cover most of it, and none of them needs a migration to run: searching the loaded JavaScript for the word "key" in the browser's developer tools on the live app, signing in as one user and trying to fetch another user's record by changing an ID in the address bar, and listing every API route the app has and asking, for each one, who is allowed to call it. If those three come back clean, the app is in better shape than most. If they come back with findings, it is better to know while the app is still on Riff than on the first morning it is on infrastructure you are responsible for.

Why the question is bigger on Riff

Riff is the Oslo company that was Databutton, a general-purpose AI app builder in the same family as Lovable and Bolt. On 23 October 2025 it relaunched under the Riff name, with a founder's note that "yesterday we were Databutton, today we're Riff", took a US$16 million Series A led by Northzone that same month, and over the following year narrowed its market. Its documentation now opens with the new position in one sentence: "Riff is built for procurement and operations teams in manufacturing — connecting directly to your ERP to take action, not just report on it." The features that follow are native connectors for Infor LN, Infor M3, SAP, Oracle and Microsoft Dynamics, and agents for supplier confirmation chasing, invoice matching, RFQ automation and exception management. By June 2026 the documentation for the old builder sat in an archive section titled "Features (legacy Databutton web-app-builder)". By November that archive returned a 404, riff.ai offered a demo request where the sign-up had been, and databutton.com redirected to riff.ai.

If you are a procurement or operations team in manufacturing, the new focus may suit you better than the old product did, and staying could be the right call. If you built something else on Databutton, a customer portal, an internal tool, a small SaaS, you are on a platform whose owner has moved to a different customer, and the roadmap, the support and the pricing are likely to follow that customer. That is a reasonable thing for a company to do, and it leaves an app built under the old positioning without a stated future.

This is worth saying plainly because it is the clearest current example of a risk every builder on this page carries. Lovable, Bolt, Replit, Zite and Emergent are mostly young, venture-funded companies, and a pivot, an acquisition, a pricing change or a shutdown is an ordinary event in that category. The question Riff makes concrete is one to ask of any builder, including the one you are happy with today: if the vendor's strategy changed next quarter, what would you still have?

How we tend to approach it

Our default, when a client wants to own the result, is a Go backend on PostgreSQL, deployed to a cloud region in Singapore. With a Riff export the first question is whether to keep the FastAPI back end the zip contains or replace it, and the answer tends to depend on how much of it leaned on the workspace's security features. A backend that assumed the platform would handle sign-in and permissions usually needs more rework than its size suggests, and at that point a rewrite in something the next developer will know can cost about the same. The front end is usually worth keeping. Go and Postgres are boring in the best sense: most developers you hire later will know them, and both are easy for an AI assistant to read and change, which matters more now than it did two years ago. The cutover happens once the new stack has run alongside the old app, with a copy of the data, for long enough that nobody is nervous.

We still get the timing wrong on one part more than any other: user authentication. On a Riff app it is a rebuild, and it is almost always the step that produces the support emails. We now plan for a week of those where we used to plan for a day.

A scene, to make it concrete

Picture a nine-person logistics firm in Jurong. The operations lead built a delivery-tracking app on Databutton over two weekends in 2025, and the drivers have used it every day since. Nothing in the app has broken. The trigger for the conversation is smaller than a tender: the lead went to the vendor's site to add a seat and found a demo request where the sign-up used to be, and a product description about ERP connectors for manufacturers. The app is doing its job, and the open question is what would still be there if it stopped.

In that situation the migration starts with two cheap steps: a trial export, to see what the zip contains, and a written question to Riff about the data. The screens are kept or rebuilt, the records go to a database in Singapore, the drivers set up their sign-in again once, and the firm ends up with a stack it can name. The firm is hypothetical; the shape of the situation is one we expect to meet more often, and Riff is simply the clearest current example of it.

Questions to take into your next conversation

  • Do you still have access to the Riff workspace, and has anyone tried the Export Code setting to see what the zip contains?
  • Which part of the app do you change most often, and who changes it, now that the builder it was made with is no longer sold?
  • Where does the data live right now, and who could answer that without checking?
  • If the app stopped tomorrow, what would you have on hand to rebuild it from?
  • Who will get the alert when the app is down at two in the morning?

If it would help to think these through with someone outside the team, we offer a short discovery call for exactly this, and we are glad to say if leaving the app where it is for now is the better answer.


Leaving a different builder? Bolt · Emergent · Lovable · Replit · Zite

> MONTHLY_COSTS

What it costs each month, roughly

One column is empty on purpose. Riff publishes no prices and no longer sells the builder your app was made with, so the comparison here is between leaving the app where it is for now, with no published price to attach to that, and running the same small app on a stack you own with Claude doing the building. Prices in US dollars before GST, as published on 5 November 2026.

Riff's legacy builderA stack you own
The AI you build withNo plan to stay on. The builder is no longer sold, and Riff's current product is priced by conversation.Claude Max 5x at US$100 a month, which includes Claude Code. Claude Pro at US$20 a month is enough for some teams.
HostingNo plan to stay on. The builder is no longer sold, and Riff's current product is priced by conversation.DigitalOcean App Platform from US$12 a month for a container with 1 vCPU and 1 GiB. A static front end is free.
DatabaseNo plan to stay on. The builder is no longer sold, and Riff's current product is priced by conversation.Neon Postgres: free to start (100 compute hours and 1 GB a month), then pay as you go at about US$0.11 a compute hour and US$0.35 a GB a month. Roughly US$0 to US$20 for a small app.
Small app, light useNo plan to stay on. The builder is no longer sold, and Riff's current product is priced by conversation.About US$112 to US$132 a month
When building gets heavierNo plan to stay on. The builder is no longer sold, and Riff's current product is priced by conversation.Roughly the same. The Claude plan has usage limits where a builder has per-credit top-ups, and the servers cost what they cost.
Where it runsNo plan to stay on. The builder is no longer sold, and Riff's current product is priced by conversation.A region you choose. Both DigitalOcean and Neon offer Singapore.

Riff's current product is priced by conversation and sold to procurement and operations teams in manufacturing, so there is no builder price to set beside this column; if you are still paying for the old product, that invoice is the number to use. The own-stack figure stays roughly flat as building intensifies. Both columns leave out the largest number, which is someone's time to run and maintain the stack. Nothing here is a quote. Own-stack prices checked on 5 November 2026: Claude, DigitalOcean App Platform, Neon.

> BOTH_SIDES

What changes when the stack is yours

Price is the easy comparison. These are the ones that tend to matter a year later, and each cuts both ways.

> WHAT YOU GAIN
  • A stack you can name. Go, PostgreSQL and a mainstream front end are things you can hire for, document, and hand to the next developer, with no dependence on a builder whose owner has moved to a different market.
  • A region you choose. The PDPA's transfer limitation obligation applies when personal data leaves Singapore, and where the app runs is one of the first questions a customer's data protection officer asks.
  • A path to SOC 2 or ISO 27001 when a customer asks for it. Both need logs, access lists and backups you can show an auditor, which tends to be simpler when the infrastructure is yours.
  • Costs that stay roughly flat as you build more, with no credit meter running while you think.
> WHAT YOU TAKE ON
  • Someone runs it. Updates, backups, access reviews and the two-in-the-morning alert belong to you, or to whoever you ask.
  • The migration itself: days to weeks of work depending on how much state has to move, and on a Riff app the sign-in and permissions the export leaves out add to that.
  • Claude replaces the builder's agent, and the skill of directing it is yours to build.
  • A monthly bill of your own, and a few more accounts to keep track of.
> TALK_TO_US

/MIGRATION_CHECK/

Tell us roughly what the app does, who uses it, and whether you still have access to the Riff workspace. We will come back with the list for your situation, and we are glad to say if leaving the app where it is for now is the better answer.

Prefer good ol' email?

> COMMON_QUESTIONS

/HELP_MENU/

What people ask us before they decide.

  • Riff's documentation answers the practical half. An Export Code setting in App Settings downloads a zip of your app's code, and that zip is how you take possession of it, if you still have access to the workspace. The same line says the exported app does not have the security features of the Riff workspace, so sign-in, permissions and the controls around the app were services you rented, and they have to be rebuilt wherever the code lands. What the terms say about ownership is worth reading once, and a short email to Riff asking in writing is a good second step.