<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aakash Verma</title>
    <description>The latest articles on DEV Community by Aakash Verma (@batmanofweb).</description>
    <link>https://dev.to/batmanofweb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4157864%2Ff2bb08a7-fe95-4e7b-ae8c-8ca94ff74fc7.jpg</url>
      <title>DEV Community: Aakash Verma</title>
      <link>https://dev.to/batmanofweb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/batmanofweb"/>
    <language>en</language>
    <item>
      <title>Google Play Developer Account Cost: $25 and 14 Days</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Fri, 13 Nov 2026 23:46:55 +0000</pubDate>
      <link>https://dev.to/batmanofweb/google-play-developer-account-cost-25-and-14-days-104f</link>
      <guid>https://dev.to/batmanofweb/google-play-developer-account-cost-25-and-14-days-104f</guid>
      <description>&lt;p&gt;A Google Play developer account costs &lt;strong&gt;US$25, one time&lt;/strong&gt;, paid by credit or debit card when you sign up for Play Console (&lt;a href="https://support.google.com/googleplay/android-developer/answer/6112435" rel="noopener noreferrer"&gt;Google's sign-up guide&lt;/a&gt;, checked November 2, 2026). No yearly renewal, unlike Apple's $99. Prepaid cards aren't accepted, and if your ID and card details don't check out, Google keeps the $25.&lt;/p&gt;

&lt;p&gt;That's the whole fee. The cost founders don't see coming is time. If you open a &lt;strong&gt;personal&lt;/strong&gt; account, Google won't let your app into production until it has run a closed test with &lt;strong&gt;at least 12 testers, opted in continuously for 14 days&lt;/strong&gt; (&lt;a href="https://support.google.com/googleplay/android-developer/answer/14151465" rel="noopener noreferrer"&gt;App testing requirements&lt;/a&gt;). Then you apply for production access, and Google says that review "usually takes seven days or less." So on a personal account, the realistic path from "I paid the $25" to "my Lovable app is on Google Play" is three weeks, sometimes more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fgoogle-play-developer-account-cost%2Fgoogle-play-personal-account-timeline.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fgoogle-play-developer-account-cost%2Fgoogle-play-personal-account-timeline.webp" alt="Timeline from paying $25 to a public Google Play listing on a new personal account: ID and device checks, a 14-day closed test with 12 testers, then up to 7 days of production review" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Personal or organization: decide before you pay
&lt;/h2&gt;

&lt;p&gt;This is the decision that matters, and you make it in step 4 of sign-up, right after paying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personal account.&lt;/strong&gt; Your own name and ID. You get the closed-test rule above (it applies to personal accounts created after November 13, 2023), and you also have to verify that you have access to a real Android device through the Play Console mobile app before you can publish. Your name shows as the developer on the store listing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Organization account.&lt;/strong&gt; For a registered company. No 12-tester rule. Google asks for the company's details and a D-U-N-S number, and from the new Android developer verification work, a company website verified in Google Search Console. A D-U-N-S number is free from Dun &amp;amp; Bradstreet, but getting one can take from a day to a couple of weeks depending on the country.&lt;/p&gt;

&lt;p&gt;If you have a company, open an organization account. The D-U-N-S wait usually overlaps with building the app, and you skip the testing rule completely. If you don't have a company and won't make one for this app, go personal and start recruiting testers early.&lt;/p&gt;

&lt;p&gt;We had a founder last month who'd opened a personal account "to save time," then spent two weeks chasing friends to keep the test app installed. Three of them uninstalled it after a few days because they thought they were done. Google counts testers who stayed opted in, not testers who ever joined, so the 14 days restarted in practice. If you do the test, tell testers plainly: leave it installed for two weeks and open it now and then.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 12 testers, without the panic
&lt;/h2&gt;

&lt;p&gt;Testers join through an opt-in link from the closed testing track, with the Google account they use on their phone. They don't need to be developers. Google wants feedback too: when you apply for production you answer questions about the test and summarize the feedback, so give testers one thing to try each few days and keep notes from the Testing feedback page in Play Console.&lt;/p&gt;

&lt;p&gt;Don't buy testers. There are services selling "12 testers for 14 days." Google asks how you recruited them and what you learned, and a test where nobody opened the app after day one is exactly what that question is there to catch. Your Lovable app's existing web users are the best testers you'll ever get, because they already care about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What else costs money on Google Play
&lt;/h2&gt;

&lt;p&gt;Not much, up front. Uploading builds, internal testing and the store listing are free. The money starts when you sell. Since June 30, 2026, for users in the US, UK and EEA, Google Play's fee is split into a service fee plus a 5% billing fee: on your first $1M of earnings a year, that's 10% + 5% (&lt;a href="https://support.google.com/googleplay/android-developer/answer/112622" rel="noopener noreferrer"&gt;Google's service fee table&lt;/a&gt;). Selling only to existing web users through Stripe on your website is a separate question, and we covered the Apple side in &lt;a href="https://lovable2app.com/blog/lovable-app-in-app-purchases/" rel="noopener noreferrer"&gt;in-app purchases for a Lovable app&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One more date for anyone distributing outside the Play Store: Android developer verification started on September 30, 2026 in Brazil, Indonesia, Singapore and Thailand, and Google says it goes global in 2027 (&lt;a href="https://developer.android.com/developer-verification" rel="noopener noreferrer"&gt;Android developer verification&lt;/a&gt;). A Play Console account already covers this for apps you ship through Google Play.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers for a Lovable app on both stores
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Google Play&lt;/th&gt;
&lt;th&gt;Apple App Store&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Account fee&lt;/td&gt;
&lt;td&gt;$25, once&lt;/td&gt;
&lt;td&gt;$99 a year (&lt;a href="https://lovable2app.com/blog/apple-developer-account-cost/" rel="noopener noreferrer"&gt;details&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Before your first public release&lt;/td&gt;
&lt;td&gt;Personal: 14-day closed test, 12 testers, then review of up to about 7 days&lt;/td&gt;
&lt;td&gt;Review of your build, usually a day or two (&lt;a href="https://lovable2app.com/blog/app-store-review-time/" rel="noopener noreferrer"&gt;our notes&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Organization needs&lt;/td&gt;
&lt;td&gt;D-U-N-S number, verified website&lt;/td&gt;
&lt;td&gt;D-U-N-S number&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The account is the cheap part. Getting the Android build right (an app bundle signed for Play App Signing, the target API level Google requires, a store listing that matches the app) is where most first submissions stall. Our walkthrough of &lt;a href="https://lovable2app.com/blog/lovable-app-on-google-play-android/" rel="noopener noreferrer"&gt;getting a Lovable app on Google Play&lt;/a&gt; covers the build, and if you'd rather not do any of it, we &lt;a href="https://lovable2app.com/publish-lovable-app/" rel="noopener noreferrer"&gt;publish your Lovable app&lt;/a&gt; to Google Play and the App Store from $300, including the closed test setup.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2app.com/blog/google-play-developer-account-cost/" rel="noopener noreferrer"&gt;lovable2app.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>googleplay</category>
      <category>playconsole</category>
      <category>android</category>
      <category>lovable</category>
    </item>
    <item>
      <title>Deploy a Lovable App to Vercel: What Moves</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Thu, 12 Nov 2026 23:51:05 +0000</pubDate>
      <link>https://dev.to/batmanofweb/deploy-a-lovable-app-to-vercel-what-moves-hef</link>
      <guid>https://dev.to/batmanofweb/deploy-a-lovable-app-to-vercel-what-moves-hef</guid>
      <description>&lt;p&gt;To deploy a Lovable app to Vercel today, you connect the project to GitHub in Lovable, import that repository at vercel.com/new, and click deploy. That's the whole official process, and for a current Lovable project it works, because Lovable apps are TanStack Start under the hood and Vercel added zero-config detection for them. What the two-step guide doesn't tell you is which half of your app actually moved.&lt;/p&gt;

&lt;p&gt;We checked this on November 11, 2026 against &lt;a href="https://vercel.com/docs/integrations/lovable" rel="noopener noreferrer"&gt;Vercel's Lovable guide&lt;/a&gt;, its &lt;a href="https://vercel.com/docs/frameworks/full-stack/tanstack-start" rel="noopener noreferrer"&gt;TanStack Start docs&lt;/a&gt;, and the source of &lt;code&gt;@lovable.dev/vite-tanstack-config&lt;/code&gt; 2.27.0, the package that holds a Lovable project's whole build setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check one version first
&lt;/h2&gt;

&lt;p&gt;Open &lt;code&gt;package.json&lt;/code&gt; and find &lt;code&gt;@lovable.dev/vite-tanstack-config&lt;/code&gt;. Vercel says zero-config detection needs &lt;code&gt;^2.6.2&lt;/code&gt; or newer. Anything recent is fine; the current release is 2.27.0, from late October.&lt;/p&gt;

&lt;p&gt;If your project is older than mid-2026 you may not have that package at all. Older Lovable apps were plain Vite single-page apps with no server, and those deploy to Vercel as a static site, which is simpler and also a different post.&lt;/p&gt;

&lt;p&gt;Here's why it works without config, straight from the package's own type definitions. A Lovable build runs Nitro, and Nitro's default target is &lt;code&gt;cloudflare-module&lt;/code&gt;, because that's where Lovable hosts your app. But Nitro's own platform detection wins over that default. On Vercel's build machines, Nitro sees it's on Vercel and builds for Vercel Functions instead. Lovable's own builds set &lt;code&gt;LOVABLE_NITRO_PRESET&lt;/code&gt;, so the two never fight.&lt;/p&gt;

&lt;p&gt;If you build in your own CI and want to pin the target, the package takes &lt;code&gt;nitro: { preset: "vercel" }&lt;/code&gt; in &lt;code&gt;vite.config.ts&lt;/code&gt;. The same file warns you not to add the TanStack, React or Tailwind plugins yourself, and that warning is serious: you get duplicate plugins and a broken build. One more trap from the source: the old &lt;code&gt;cloudflare&lt;/code&gt; option was removed in v2, so a config copied from an early-2026 tutorial gets a warning and the setting is ignored.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually moves
&lt;/h2&gt;

&lt;p&gt;Your frontend and the server rendering. That's it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-vercel%2Fwhat-moves.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-vercel%2Fwhat-moves.webp" alt="Map of a Lovable app after a Vercel deploy: pages, server rendering and server functions move to Vercel; database, auth, storage, edge functions and secrets stay on Lovable Cloud, which keeps billing" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the app runs on Lovable Cloud, the database, sign-in, storage buckets, edge functions and their secrets all stay on Lovable Cloud. The app on Vercel talks to the same backend it talked to before. That's convenient (nothing to migrate, same users, same data) and it's also why this is not "leaving Lovable". You still pay Lovable Cloud usage, and if your balance hits zero the backend can pause, wherever the frontend is hosted.&lt;/p&gt;

&lt;p&gt;The connection details come from the repo's &lt;code&gt;.env&lt;/code&gt; file, &lt;code&gt;VITE_SUPABASE_URL&lt;/code&gt; and the publishable key. Vite bakes &lt;code&gt;VITE_&lt;/code&gt; variables into the build, so they have to be there at build time. Lovable commits that file with the project, so the first Vercel build usually just works. If someone deleted it or added it to &lt;code&gt;.gitignore&lt;/code&gt; (a developer tidying up the repo will do exactly that, it looks like a secrets file), add the same variables in Vercel's project settings and redeploy. The publishable key is meant to be public; your row level security is what protects the data, not the key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things that change on the day you switch
&lt;/h2&gt;

&lt;p&gt;Sign-in links. Password reset and magic link emails point back to a URL your auth settings allow. If that list only knows the &lt;code&gt;.lovable.app&lt;/code&gt; address, users on the new domain get bounced to the old one, or to an error page. Test a password reset on the Vercel URL before you move the domain, not after.&lt;/p&gt;

&lt;p&gt;The domain. If your custom domain is connected in Lovable, its DNS points at Lovable. Move it to Vercel only when the Vercel deployment has been tested, and expect a short window where some visitors still hit the old host.&lt;/p&gt;

&lt;p&gt;Previews. Every push to GitHub now builds on Vercel, including every commit Lovable makes while you prompt. That's 30 deployments on a busy afternoon. Free, but noisy, and each one is a public preview URL unless you turn on Vercel's deployment protection.&lt;/p&gt;

&lt;p&gt;The plan. Vercel's Hobby plan is for personal, non-commercial projects. A product with paying users belongs on Pro, which is $20 a month per seat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is it worth it?
&lt;/h2&gt;

&lt;p&gt;Honestly, often not. If the only goal is "my app on my domain", Lovable already does that. Moving the frontend to Vercel makes sense when you want Vercel's preview deployments for a team, your company already runs everything on Vercel, or you need edge config or logs Lovable doesn't expose.&lt;/p&gt;

&lt;p&gt;If the real goal is to stop depending on Lovable for hosting and billing, the frontend is the easy half. The backend is the part that matters, and it doesn't move by importing a repo. That's a &lt;a href="https://lovable2live.com/cloud-to-supabase/" rel="noopener noreferrer"&gt;Cloud to Supabase migration&lt;/a&gt; (from $150, usually 1 to 2 days, everything moves, priced by table count), after which the app runs on a Supabase project you own and can sit on Vercel, Cloudflare or &lt;a href="https://lovable2live.com/lovable-own-server/" rel="noopener noreferrer"&gt;your own server&lt;/a&gt;. Not sure what either setup would cost you each month? The free &lt;a href="https://lovable2live.com/tools/lovable-cost-check/" rel="noopener noreferrer"&gt;Lovable cost check&lt;/a&gt; reads the repo and tells you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2live.com/blog/lovable-vercel/" rel="noopener noreferrer"&gt;lovable2live.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>lovable</category>
      <category>vercel</category>
      <category>deployment</category>
    </item>
    <item>
      <title>Capacitor Android for Lovable: First Build</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Wed, 11 Nov 2026 23:48:45 +0000</pubDate>
      <link>https://dev.to/batmanofweb/capacitor-android-for-lovable-first-build-1mmi</link>
      <guid>https://dev.to/batmanofweb/capacitor-android-for-lovable-first-build-1mmi</guid>
      <description>&lt;p&gt;To run a Lovable app as a Capacitor Android app you need Node 22 or later, Android Studio 2025.2.1 or later, and your project's code from GitHub. Then it's &lt;code&gt;npm install @capacitor/android&lt;/code&gt;, &lt;code&gt;npx cap add android&lt;/code&gt; and &lt;code&gt;npx cap open android&lt;/code&gt;. Unlike iOS, you don't need a Mac: Windows and Linux are fine.&lt;/p&gt;

&lt;p&gt;That's the part the &lt;a href="https://capacitorjs.com/docs/android" rel="noopener noreferrer"&gt;Capacitor Android docs&lt;/a&gt; cover, checked November 5, 2026, with Capacitor 8 current and 9 listed as "next". What follows is the part they don't, the stuff that actually eats the first afternoon. If you already did the iOS side, read our &lt;a href="https://lovable2app.com/blog/capacitor-ios-lovable/" rel="noopener noreferrer"&gt;Capacitor iOS first build&lt;/a&gt; for the setup both platforms share; I won't repeat it all here.&lt;/p&gt;

&lt;h2&gt;
  
  
  The versions, in one place
&lt;/h2&gt;

&lt;p&gt;From the &lt;a href="https://capacitorjs.com/docs/getting-started/environment-setup" rel="noopener noreferrer"&gt;environment setup page&lt;/a&gt;: &lt;strong&gt;Android Studio 2025.2.1&lt;/strong&gt; (Otter) or newer, &lt;strong&gt;Node 22&lt;/strong&gt; or newer, and the Android SDK platform for &lt;strong&gt;API 24&lt;/strong&gt; or higher installed. Capacitor 8 apps run on Android 7 (API 24) and up, and target Android 16 (API 36). You don't install a JDK yourself. Android Studio ships the one Gradle needs, JDK 21.&lt;/p&gt;

&lt;p&gt;The Android Studio version is the one people skip. Open a Capacitor 8 project in an older Studio and the Gradle sync fails with "The project is using an incompatible version (AGP 8.13.0) of the Android Gradle plugin". Nothing is wrong with your project. Update the IDE.&lt;/p&gt;

&lt;p&gt;And when Studio offers to upgrade the Android Gradle plugin to 9, click no. We covered why in the &lt;a href="https://lovable2app.com/blog/capacitor-8-upgrade/" rel="noopener noreferrer"&gt;Capacitor 8 upgrade post&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding the platform
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @capacitor/android
npx cap add android
npm run build
npx cap sync android
npx cap open android
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;cap add android&lt;/code&gt; creates an &lt;code&gt;android/&lt;/code&gt; folder with a real Gradle project. Commit it. Your icons, permissions in &lt;code&gt;AndroidManifest.xml&lt;/code&gt;, signing config and version numbers all live there.&lt;/p&gt;

&lt;p&gt;Before you run anything, check &lt;code&gt;webDir&lt;/code&gt; in &lt;code&gt;capacitor.config.ts&lt;/code&gt;. Lovable projects started since mid-2026 are TanStack Start apps whose normal build is a server bundle with no &lt;code&gt;index.html&lt;/code&gt;, so &lt;code&gt;cap sync&lt;/code&gt; either fails or copies the wrong thing. It's the same fix as on iOS (a client-only build in its own folder), and it's the first thing to sort out on either platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four things that break first
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-android-lovable%2Fcapacitor-android-first-run.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-android-lovable%2Fcapacitor-android-first-run.webp" alt="Four first-run problems in a Lovable Capacitor Android build: plugin not implemented because of a service worker, header under the status bar on Android 16, Supabase login rejected from https://localhost, and an old WebView on the emulator" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Plugin not implemented", but the plugin is installed.&lt;/strong&gt; This one is very Lovable-specific. A lot of Lovable apps were asked at some point to "make it a PWA" or "work offline", so they ship a service worker, often through &lt;code&gt;vite-plugin-pwa&lt;/code&gt;. Capacitor's troubleshooting guide says it plainly: service workers can stop Capacitor from injecting its code. Inside the app the service worker serves cached pages, the bridge never loads, and every native call fails. We spent most of an afternoon on a client's app where the camera button did nothing on Android and worked fine on iOS before anyone thought to look for a &lt;code&gt;sw.js&lt;/code&gt;. Turn the service worker off in the native build. The website can keep it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The header sits under the clock.&lt;/strong&gt; Capacitor 8 targets Android 16, where apps draw edge to edge and the old config key that kept content below the status bar is gone. Your top bar slides under the system icons. The fix is CSS, &lt;code&gt;env(safe-area-inset-top)&lt;/code&gt; padding on the header, which you'll want on iOS anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Login works on the website, fails in the app.&lt;/strong&gt; On Android the app's origin is &lt;code&gt;https://localhost&lt;/code&gt; (on iOS it's &lt;code&gt;capacitor://localhost&lt;/code&gt;). Supabase redirect URLs, OAuth callbacks and the CORS checks in your own edge functions were all written for your domain. Add the app's origin, and for Google or Apple sign-in add a deep link so the browser can hand the session back to the app. Email and password login usually works without any of this, which is why people think the app is fine until someone taps "Continue with Google".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It works on your phone but not the emulator, or the other way round.&lt;/strong&gt; The Capacitor docs note that the system WebView doesn't update itself on emulators. An emulator on an old system image runs an old Chrome WebView, and modern CSS or JavaScript breaks there in ways you'll never see on a real phone. Use a recent system image and stop debugging Chrome versions from 2019.&lt;/p&gt;

&lt;p&gt;Two smaller ones. "Unable to locate a Java Runtime" in the terminal means &lt;code&gt;JAVA_HOME&lt;/code&gt; isn't set; point it at the JDK inside Android Studio, which the docs give for macOS as &lt;code&gt;/Applications/Android Studio.app/Contents/jbr/Contents/Home&lt;/code&gt;. And "APK can't be installed" usually means an old build with the same package name is still on the device. Uninstall it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before the Play Store
&lt;/h2&gt;

&lt;p&gt;Pick the application ID in &lt;code&gt;capacitor.config.ts&lt;/code&gt; carefully, because Google Play ties the listing to it forever. Then the store side: Google Play wants an Android App Bundle (&lt;code&gt;.aab&lt;/code&gt;), not an APK, and everything uploaded after August 31, 2026 has to target API 36, which Capacitor 8 already does. Our &lt;a href="https://lovable2app.com/blog/lovable-android-app-bundle/" rel="noopener noreferrer"&gt;Android App Bundle post&lt;/a&gt; walks through signing and the version code. A new personal developer account also needs 12 testers for 14 days before it can publish, which is in our &lt;a href="https://lovable2app.com/blog/google-play-developer-account-cost/" rel="noopener noreferrer"&gt;Google Play developer account post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Most founders get the app running on their own phone in a day. Getting it accepted is a different week. If you'd rather hand over both, we &lt;a href="https://lovable2app.com/publish-lovable-app/" rel="noopener noreferrer"&gt;publish Lovable apps to Google Play and the App Store&lt;/a&gt; from $300, with your app still built in Lovable afterwards.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2app.com/blog/capacitor-android-lovable/" rel="noopener noreferrer"&gt;lovable2app.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>capacitor</category>
      <category>android</category>
      <category>lovable</category>
      <category>androidstudio</category>
    </item>
    <item>
      <title>Lovable vs Figma Make: Who Keeps the Code?</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Wed, 11 Nov 2026 00:07:58 +0000</pubDate>
      <link>https://dev.to/batmanofweb/lovable-vs-figma-make-who-keeps-the-code-10ia</link>
      <guid>https://dev.to/batmanofweb/lovable-vs-figma-make-who-keeps-the-code-10ia</guid>
      <description>&lt;p&gt;Lovable vs Figma Make looks like a fight between two prompt-to-app builders, and on the first afternoon it is one. Both turn a sentence or a design into a working React app, both charge in AI credits, and both give you a public link. The difference shows up the week after, when someone has to keep building on what they made. Figma Make is a design tool that grew a code tab. Lovable is a code tool that happens to start from a chat box.&lt;/p&gt;

&lt;p&gt;We checked both against Figma's pricing page and help center, and Lovable's plans, on November 9, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you pay
&lt;/h2&gt;

&lt;p&gt;Figma doesn't sell Make on its own. It comes with a Figma seat, and the seat decides your AI credits:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Figma Make&lt;/th&gt;
&lt;th&gt;Lovable&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Starter: 150 AI credits a day, up to 500 a month&lt;/td&gt;
&lt;td&gt;5 credits a day, up to 30 a month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entry paid&lt;/td&gt;
&lt;td&gt;Professional Full seat, $16 a month, 3,000 AI credits&lt;/td&gt;
&lt;td&gt;Pro, $25 a month, 100 credits plus 5 a day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cheaper seats&lt;/td&gt;
&lt;td&gt;Dev $12 or Collab $3, 500 AI credits each&lt;/td&gt;
&lt;td&gt;None, one plan per workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bigger plans&lt;/td&gt;
&lt;td&gt;Organization Full seat $55, Enterprise $90 (both billed yearly)&lt;/td&gt;
&lt;td&gt;Business, $50 a month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Publishing&lt;/td&gt;
&lt;td&gt;Needs a Full seat on paid plans&lt;/td&gt;
&lt;td&gt;Every paid plan&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Don't compare 3,000 with 100. Figma's credits are spread across every AI feature in Figma, not only Make, and its help pages don't publish a fixed cost per Make prompt. Lovable's credits pay for building and, since June 2026, for running the live app on Lovable Cloud too. The honest summary is that a designer who already pays for a Full seat gets Make for nothing extra, and a founder who doesn't use Figma is buying a design seat to get an app builder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publishing: figma.site and a custom domain
&lt;/h2&gt;

&lt;p&gt;Figma Make publishes to an address like &lt;code&gt;three-random-words.figma.site&lt;/code&gt;. You can attach your own domain, but the number of custom domains depends on your plan and is shared with Figma Sites. There's password protection, which applies to the figma.site version and not the preview. One catch on the free Starter plan: Figma's help page says Starter users must also publish the file to the Figma Community, so your "private prototype" is a public community file too. Read that before you put a client's flows in it.&lt;/p&gt;

&lt;p&gt;Lovable publishes to a lovable.app subdomain and takes a custom domain on paid plans. Neither gives you a server you control. Both host the thing for you, which is fine until it isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The backend is where they split
&lt;/h2&gt;

&lt;p&gt;Figma Make offers two backends. Payload, which Figma hosts in the eastern United States, comes with a database, file storage, auth and an admin panel. Or Supabase, where you connect your own Supabase project under Integrations. So far that sounds close to Lovable, which runs on Supabase too.&lt;/p&gt;

&lt;p&gt;Then there's this line in Figma's own help page: "Figma Make currently uses key-value stores rather than setting up a full SQL database." In practice that means a single table of keys and JSON values, read and written by one generated server function. No &lt;code&gt;orders&lt;/code&gt; table with a foreign key to &lt;code&gt;customers&lt;/code&gt;. No row level security policy per table, because there's one table.&lt;/p&gt;

&lt;p&gt;A founder sent us a Figma Make link a few weeks ago. Lovely booking flow, Supabase connected, published on a figma.site address, about 300 real bookings in it. Every booking was a JSON blob under a key like &lt;code&gt;booking:&lt;/code&gt; plus a timestamp. Finding "all bookings for this customer next week" meant reading every row and filtering in JavaScript. It worked at 300. It would not have worked at 30,000, and adding a second staff login with different permissions was simply not possible without redesigning the data.&lt;/p&gt;

&lt;p&gt;Lovable builds real Postgres tables on Lovable Cloud or your own Supabase project, with migrations and RLS policies it writes as it goes. They're not always good policies (we've written about &lt;a href="https://lovable2live.com/blog/lovable-security/" rel="noopener noreferrer"&gt;what the Lovable security scan misses&lt;/a&gt;), but they are tables you can query, index and fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub: one way vs both ways
&lt;/h2&gt;

&lt;p&gt;This is the part I'd weigh most. Figma Make pushes to GitHub, and Figma's help page is blunt about it: "It's a one-way push from Figma Make → GitHub." Changes made in GitHub don't come back into Make, and the next push overwrites them. Make only pushes to repositories it created, only to the default branch, and only one GitHub account or organization can be connected per Figma team. Payload-backed apps don't get the GitHub integration at all yet.&lt;/p&gt;

&lt;p&gt;So the day a developer fixes something in the repo, the Make file is a fork you can no longer use. You either stop prompting in Make or you lose the developer's work.&lt;/p&gt;

&lt;p&gt;Lovable's GitHub sync goes both ways. A developer can push a fix, and the next Lovable prompt builds on top of it. That's the single reason we tell founders who plan to hire help later to start in Lovable rather than Make. It's not about which AI writes nicer components. Make's components are often nicer, honestly, because it starts from a real design file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-vs-figma-make%2Fkv-vs-tables.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-vs-figma-make%2Fkv-vs-tables.webp" alt="Two databases holding the same three bookings: Figma Make as one key-value table of JSON blobs, Lovable as customers and bookings tables joined by a customer ID" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one to use
&lt;/h2&gt;

&lt;p&gt;Use Figma Make when the output is a prototype: a clickable demo for investors, a usability test, a flow your designer wants to feel in the hand before anyone writes real code. If your team lives in Figma, it is the fastest way from a frame to something you can tap. You can even &lt;a href="https://lovable2live.com/blog/lovable-figma/" rel="noopener noreferrer"&gt;bring Figma designs into Lovable later&lt;/a&gt; when it's time to build the real thing.&lt;/p&gt;

&lt;p&gt;Use Lovable when the app is the product, it holds data with relationships, and a developer will touch the code within a year. And if you've already built something real in Figma Make, plan the move early. Rebuilding the data as tables is a few days of work at 300 records and a much worse week at 30,000.&lt;/p&gt;

&lt;p&gt;To see what a Lovable app will cost once it has users, run the free &lt;a href="https://lovable2live.com/tools/lovable-cost-check/" rel="noopener noreferrer"&gt;Lovable cost check&lt;/a&gt; on the repo. If the prototype works and you want it ready for real users, that's &lt;a href="https://lovable2live.com/lovable-to-production/" rel="noopener noreferrer"&gt;Lovable to production&lt;/a&gt;, from $500, and if it's on Lovable Cloud and you want the database in your own name, &lt;a href="https://lovable2live.com/cloud-to-supabase/" rel="noopener noreferrer"&gt;Cloud to Supabase&lt;/a&gt; starts at $150.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2live.com/blog/lovable-vs-figma-make/" rel="noopener noreferrer"&gt;lovable2live.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>lovable</category>
      <category>figma</category>
      <category>comparison</category>
    </item>
    <item>
      <title>Android App Bundle for Your Lovable App</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Mon, 09 Nov 2026 23:50:20 +0000</pubDate>
      <link>https://dev.to/batmanofweb/android-app-bundle-for-your-lovable-app-14gh</link>
      <guid>https://dev.to/batmanofweb/android-app-bundle-for-your-lovable-app-14gh</guid>
      <description>&lt;p&gt;To publish a Lovable app on Google Play you upload an Android App Bundle (an &lt;code&gt;.aab&lt;/code&gt; file), not an APK: Google has required bundles for new apps since August 2021. With a Capacitor project you get one with &lt;code&gt;npm run build&lt;/code&gt;, &lt;code&gt;npx cap sync android&lt;/code&gt;, then either Android Studio's &lt;strong&gt;Build &amp;gt; Generate Signed App Bundle&lt;/strong&gt; or &lt;code&gt;npx cap build android --androidreleasetype AAB&lt;/code&gt; with your keystore details, and since August 31, 2026 that bundle has to target Android 16 (API level 36).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I publish my Lovable app on Google Play?&lt;/strong&gt; The short answer, checked against Google's Play Console help on October 26, 2026:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Wrap the Lovable app with Capacitor so there's an Android project to build (or have us &lt;a href="https://lovable2app.com/publish-lovable-app/" rel="noopener noreferrer"&gt;publish it for you&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Open a &lt;a href="https://support.google.com/googleplay/android-developer/answer/6112435" rel="noopener noreferrer"&gt;Play Console developer account&lt;/a&gt; ($25, one time).&lt;/li&gt;
&lt;li&gt;Build a signed &lt;code&gt;.aab&lt;/code&gt; targeting API level 36, as below, and &lt;a href="https://developer.android.com/studio/publish/upload-bundle" rel="noopener noreferrer"&gt;upload it&lt;/a&gt; to a testing track.&lt;/li&gt;
&lt;li&gt;If your account is a personal one created after November 13, 2023, run a &lt;a href="https://support.google.com/googleplay/android-developer/answer/14151465" rel="noopener noreferrer"&gt;closed test with at least 12 testers opted in for 14 days in a row&lt;/a&gt; before you can apply for production.&lt;/li&gt;
&lt;li&gt;Fill in the store listing, the Data safety form and the content rating, then apply for production access. Google warns that some accounts' reviews take up to 7 days or longer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most first launches spend more time on step 4 than on everything else combined.&lt;/p&gt;

&lt;p&gt;The command is the easy part. What trips people up is the keys, so most of this post is about those.&lt;/p&gt;

&lt;h2&gt;
  
  
  The build, in the order that works
&lt;/h2&gt;

&lt;p&gt;Lovable edits your web code. The Android project in the &lt;code&gt;android/&lt;/code&gt; folder only gets those changes when you copy them in, so every release starts the same way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
npx cap sync android
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Skip the sync and you ship last week's app with a new version number. It happens more than you'd think, usually on the release where you were in a hurry.&lt;/p&gt;

&lt;p&gt;Then build the bundle. The Capacitor CLI can do it in one line, per the &lt;a href="https://capacitorjs.com/docs/cli/commands/build" rel="noopener noreferrer"&gt;cap build docs&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cap build android --androidreleasetype AAB \
  --keystorepath ../keys/upload.jks --keystorepass &lt;span class="s2"&gt;"$KS_PASS"&lt;/span&gt; \
  --keystorealias upload --keystorealiaspass &lt;span class="s2"&gt;"$KEY_PASS"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Android Studio's Generate Signed App Bundle wizard does the same thing with a form. If you live in the terminal, &lt;code&gt;./gradlew bundleRelease&lt;/code&gt; inside &lt;code&gt;android/&lt;/code&gt; works too once signing is set up in Gradle, and the file lands in &lt;code&gt;android/app/build/outputs/bundle/release/app-release.aab&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Two things to check before you upload. &lt;code&gt;versionCode&lt;/code&gt; in &lt;code&gt;android/app/build.gradle&lt;/code&gt; has to go up on every upload, or Play Console stops you with "Version code 1 has already been used. Try another version code." And &lt;code&gt;targetSdkVersion&lt;/code&gt; has to be 36 for anything submitted after August 31, 2026 (&lt;a href="https://developer.android.com/google/play/requirements/target-sdk" rel="noopener noreferrer"&gt;Google's target API page&lt;/a&gt;). Capacitor 7 projects target 35, so that means the &lt;a href="https://lovable2app.com/blog/capacitor-8-upgrade/" rel="noopener noreferrer"&gt;Capacitor 8 upgrade&lt;/a&gt; first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two keys, and only one of them is yours
&lt;/h2&gt;

&lt;p&gt;This is the part worth slowing down for.&lt;/p&gt;

&lt;p&gt;When you sign the bundle on your machine, you sign it with your &lt;strong&gt;upload key&lt;/strong&gt;. That key's only job is proving to Google that the upload came from you. Google then strips that signature and signs the APKs it builds for each phone with the &lt;strong&gt;app signing key&lt;/strong&gt;, which Google generates and keeps for you under Play App Signing. New apps are enrolled automatically. Users never see your upload key at all.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-android-app-bundle%2Fandroid-upload-key-vs-app-signing-key.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-android-app-bundle%2Fandroid-upload-key-vs-app-signing-key.webp" alt="Where the two Android keys live: the upload key signs the bundle on your laptop, Google re-signs with the app signing key it holds, and only that key’s SHA-1 makes Google sign-in work on Play installs" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That split is good news and bad news.&lt;/p&gt;

&lt;p&gt;The good news: if you lose the upload key, you're not locked out. Make a new one, export its certificate with &lt;code&gt;keytool -export -rfc&lt;/code&gt; to a &lt;code&gt;.pem&lt;/code&gt; file, then in Play Console go to &lt;strong&gt;Protected with Play &amp;gt; Play Store protection &amp;gt; Manage Play app signing&lt;/strong&gt; and click &lt;strong&gt;Request upload key reset&lt;/strong&gt; (&lt;a href="https://support.google.com/googleplay/android-developer/answer/9842756" rel="noopener noreferrer"&gt;Play App Signing help&lt;/a&gt;). Before Play App Signing, a lost key meant a new app listing and starting over at zero reviews. Back up the &lt;code&gt;.jks&lt;/code&gt; file and its passwords anyway. A password manager entry with both passwords and the alias saves a very annoying afternoon.&lt;/p&gt;

&lt;p&gt;The bad news is the one that bites Lovable apps specifically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Google sign-in works in testing and fails from Play
&lt;/h2&gt;

&lt;p&gt;Your Lovable app probably has "Sign in with Google" through Supabase. In the native app that often means a Google Sign-In plugin, and Google only accepts sign-ins from an Android app whose certificate fingerprint (SHA-1) is registered in your Google Cloud OAuth client or Firebase project.&lt;/p&gt;

&lt;p&gt;So you register the SHA-1 from your keystore, test a release build on your phone, everything works. You publish. Users install from Play and sign-in fails with &lt;code&gt;ApiException: 10&lt;/code&gt; (Google calls it &lt;code&gt;DEVELOPER_ERROR&lt;/code&gt;). The app on their phone is signed with Google's app signing key, not yours, and that fingerprint was never registered.&lt;/p&gt;

&lt;p&gt;The fix takes two minutes once you know it. In Play Console, open &lt;strong&gt;Protected with Play &amp;gt; Play Store distribution &amp;gt; Go to Play app signing&lt;/strong&gt;, copy the SHA-1 of the &lt;strong&gt;app signing key&lt;/strong&gt; (not the upload key; new apps on Google's quantum-ready hybrid signing show three keys, and you need all three fingerprints), and add it next to the existing one in Firebase or as another Android OAuth client in Google Cloud. Keep the upload key's fingerprint there too, so your own sideloaded test builds keep working. Google's help page says it in one line: register the Google-held key's fingerprint with your API providers, "not just your local upload key". Same goes for Facebook login, Maps API key restrictions and anything else that pins your app's certificate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting it in front of people
&lt;/h2&gt;

&lt;p&gt;Upload the first bundle to the &lt;strong&gt;internal testing&lt;/strong&gt; track. It has no requirements, Play says builds usually reach testers within seconds, and it's the fastest way to find out whether the release build behaves like the debug one. If your developer account is a personal one created after November 13, 2023, you then need a closed test with 12 testers opted in for 14 days in a row before production unlocks. Our &lt;a href="https://lovable2app.com/blog/lovable-app-on-google-play-android/" rel="noopener noreferrer"&gt;Google Play guide&lt;/a&gt; covers that rule and the rejections we see most.&lt;/p&gt;

&lt;p&gt;A last opinion: don't put keystore passwords in &lt;code&gt;capacitor.config.ts&lt;/code&gt; or commit them to the repo Lovable syncs with. That repo is the one you give contractors access to. Environment variables in your build machine or CI, nowhere else.&lt;/p&gt;

&lt;p&gt;If you'd rather hand over the whole Android release, keys, fingerprints, bundle and store listing, &lt;a href="https://lovable2app.com/publish-lovable-app/" rel="noopener noreferrer"&gt;that's what we do&lt;/a&gt;, at a fixed price.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2app.com/blog/lovable-android-app-bundle/" rel="noopener noreferrer"&gt;lovable2app.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>googleplay</category>
      <category>capacitor</category>
      <category>lovable</category>
    </item>
    <item>
      <title>How to Make a Lovable App Production Ready</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Sun, 08 Nov 2026 23:51:04 +0000</pubDate>
      <link>https://dev.to/batmanofweb/how-to-make-a-lovable-app-production-ready-4d3h</link>
      <guid>https://dev.to/batmanofweb/how-to-make-a-lovable-app-production-ready-4d3h</guid>
      <description>&lt;p&gt;To make a Lovable app production ready in October 2026, run the Deep security scan (the Quick scan that runs when you publish only checks database rules, dependencies and MCP exposure), then test your row level security with two real accounts, because no scanner knows which user should see which row. After that it's operations: a custom domain with sign-in emails from your own domain, knowing that Lovable's daily backups cover the database but not your storage files, and checking the hourly email limits before launch day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the launch docs leave out (checked November 8, 2026).&lt;/strong&gt; Lovable's security page covers the scans, and Supabase's &lt;a href="https://supabase.com/docs/guides/deployment/going-into-prod" rel="noopener noreferrer"&gt;production checklist&lt;/a&gt; covers a backend you run yourself. Four things fall between them for a Lovable Cloud app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No point-in-time recovery.&lt;/strong&gt; Supabase tells you to turn on PITR once the database passes 4 GB. Lovable Cloud keeps one daily backup for about 14 days and has no PITR, so a bad &lt;code&gt;UPDATE&lt;/code&gt; at 4 pm loses everything since the night's backup. If that's unacceptable, the database has to live in your own Supabase project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth emails and rate limits.&lt;/strong&gt; Supabase's own email sender allows 2 auth emails an hour across sign-up and reset, and even with custom SMTP the default is 30 new users an hour. Send sign-in mail from your own domain and check the limit before launch day, not during it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email scanners eat magic links.&lt;/strong&gt; Company mail filters open links to check them, which uses up a single-use sign-up or reset link before your user clicks it. Supabase's fix is a template link to a page on your domain with a "Sign in" button that then follows the real link.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CAPTCHA on sign-up, sign-in and password reset&lt;/strong&gt;, which Supabase lists and no Lovable scan checks for.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of the built-in scans is an OWASP ASVS review either. Our &lt;a href="https://lovable2live.com/lovable-security-audit/" rel="noopener noreferrer"&gt;Lovable security audit&lt;/a&gt; uses ASVS 5.0 as the checklist, for $350 with the report in 2 days.&lt;/p&gt;

&lt;p&gt;That's the short version. The rest of this post is the order we'd do it in, and why each step is there.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Lovable already checks, and what it doesn't
&lt;/h2&gt;

&lt;p&gt;Lovable has two built-in scans now, and people mix them up. The &lt;strong&gt;Quick scan&lt;/strong&gt; runs automatically every time you open the publish dialog. It looks at tables without row level security, policies that let everyone through, leaked-password protection being off, known vulnerabilities in your npm packages, and MCP servers exposed without auth. It takes seconds and shows one line in the dialog.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Deep scan&lt;/strong&gt; does not run on its own. You start it from the project's Security view. It reads the whole codebase for access control holes, endpoints anyone can call, injection, secrets in the repo, payment logic a customer can tamper with and auth that can be bypassed. Lovable's own &lt;a href="https://docs.lovable.dev/features/security" rel="noopener noreferrer"&gt;security docs&lt;/a&gt; say these tools "do not replace a thorough security review", and they recommend scanning first, fixing, then a pentest (Aikido, as a connector) before a major release.&lt;/p&gt;

&lt;p&gt;Run the Deep scan. Fix everything marked Critical. It's free and it catches the dumb stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part no scanner can do
&lt;/h2&gt;

&lt;p&gt;A scanner can see that &lt;code&gt;orders&lt;/code&gt; has RLS on. It can't know that a customer should see their own orders, a shop owner should see orders for their shop, and nobody should see anyone else's. That's your business rule, and it lives in your head, not in the code.&lt;/p&gt;

&lt;p&gt;So test it the boring way. Make two accounts. Log in as A, create data. Log in as B and try to read A's data through the API, not just the UI. Open dev tools, copy a request, change the ID, send it again. The classic Lovable failures we look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A policy that checks the user is signed in (&lt;code&gt;auth.uid() is not null&lt;/code&gt;) instead of checking they own the row. RLS is on, the Quick scan has nothing to say, and every signed-in user can read every order.&lt;/li&gt;
&lt;li&gt;An &lt;code&gt;is_admin&lt;/code&gt; flag on the &lt;code&gt;profiles&lt;/code&gt; table that the row owner can update. One PATCH and you're an admin.&lt;/li&gt;
&lt;li&gt;Admin checks done in React only. The page hides the button, the API doesn't care.&lt;/li&gt;
&lt;li&gt;An edge function with &lt;code&gt;verify_jwt&lt;/code&gt; off that sends email. Congratulations, you run an open mail relay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that list makes you nervous, that's what our &lt;a href="https://lovable2live.com/lovable-security-audit/" rel="noopener noreferrer"&gt;security audit&lt;/a&gt; does: two real accounts against every policy, written up by severity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keys that shouldn't be in the browser
&lt;/h2&gt;

&lt;p&gt;Anything the frontend can read, a visitor can read. Stripe secret keys, OpenAI keys and the Supabase service role key (or the newer &lt;code&gt;sb_secret_&lt;/code&gt; key) belong in edge function secrets, never in a &lt;code&gt;VITE_&lt;/code&gt; variable or a constant in a component. The Deep scan looks for secrets in your code, which is good. It won't catch the key you pasted into the chat three weeks ago that ended up in a config file you've since forgotten about, if it doesn't look like a key. Search the repo yourself for &lt;code&gt;sk_live&lt;/code&gt;, &lt;code&gt;sk-&lt;/code&gt;, &lt;code&gt;service_role&lt;/code&gt; and &lt;code&gt;sb_secret&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backups: know what you actually have
&lt;/h2&gt;

&lt;p&gt;This one surprises people. On Lovable Cloud you get a daily database backup, kept for roughly 14 days, and you restore from More, Cloud, Database, Backups (&lt;a href="https://docs.lovable.dev/features/database" rel="noopener noreferrer"&gt;database docs&lt;/a&gt;). Restoring rolls back schema and data together, so anything created after that backup is gone, and the app may stop matching the database if you changed the schema since.&lt;/p&gt;

&lt;p&gt;And backups cover the database only. &lt;strong&gt;Files in storage buckets are not in them.&lt;/strong&gt; If your app stores invoices, avatars or uploads, and someone deletes them, the backup doesn't bring them back. For a lot of apps that's fine. For an app where the uploads &lt;em&gt;are&lt;/em&gt; the product, it isn't, and you want your own copy somewhere.&lt;/p&gt;

&lt;p&gt;This is also one of the reasons founders move the backend to a Supabase project they own, where point-in-time recovery is an option. That's our &lt;a href="https://lovable2live.com/cloud-to-supabase/" rel="noopener noreferrer"&gt;Cloud to Supabase migration&lt;/a&gt;, if you get there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-production-ready%2Flovable-launch-day-timeline.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-production-ready%2Flovable-launch-day-timeline.webp" alt="Launch day for a Lovable app as a timeline: the Quick scan at publish, the Deep scan most people skip, the 500 auth emails an hour cap, a policy that checks sign-in not ownership, and storage files missing from backups" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Email limits on launch day
&lt;/h2&gt;

&lt;p&gt;Lovable's built-in email is decent now: branded auth templates, sending from a &lt;code&gt;notify&lt;/code&gt; subdomain of your own domain, 50,000 transactional emails a month included on paid workspaces. But there's an hourly cap. On Pro it's &lt;strong&gt;100 app emails and 500 authentication emails per hour&lt;/strong&gt; (&lt;a href="https://docs.lovable.dev/features/custom-emails" rel="noopener noreferrer"&gt;email docs&lt;/a&gt;). When you hit it, new emails are rejected until the hour resets.&lt;/p&gt;

&lt;p&gt;Picture a launch post that does well. 700 people sign up in the first hour, the confirmation emails stop at 500, and 200 people are staring at "check your inbox" with nothing in it. Most of them don't come back. If you expect a spike, either be on a plan with a higher cap, or send auth email through your own SMTP provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Domain, redirects, the boring bits
&lt;/h2&gt;

&lt;p&gt;Custom domains are on paid plans only. Connect it, then go through every place the old &lt;code&gt;lovable.app&lt;/code&gt; URL is hard-coded: auth redirect URLs, OAuth app settings in Google, Stripe webhook endpoints, links in your email templates. A sign-in that redirects back to &lt;code&gt;yourapp.lovable.app&lt;/code&gt; after you've moved to &lt;code&gt;yourapp.com&lt;/code&gt; is the most common "it worked yesterday" bug we see after a domain switch.&lt;/p&gt;

&lt;p&gt;Then add error reporting. Sentry's free tier is plenty for a new app and it takes about ten minutes. Without it, your users find the bugs and tell you on Twitter, or more likely, they don't tell you at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  What production ready doesn't mean
&lt;/h2&gt;

&lt;p&gt;It doesn't mean a rewrite. Most Lovable apps we look at are a few days of work away from being safe to put real users on, not weeks. Fix the policies, move the keys, sort out backups and email, connect the domain, add monitoring. If you'd rather hand that list to someone, &lt;a href="https://lovable2live.com/lovable-to-production/" rel="noopener noreferrer"&gt;Lovable to production&lt;/a&gt; is the fixed-price version, and the free &lt;a href="https://lovable2live.com/tools/lovable-cost-check/" rel="noopener noreferrer"&gt;cost check&lt;/a&gt; tells you what running it will cost once it's live.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2live.com/blog/lovable-production-ready/" rel="noopener noreferrer"&gt;lovable2live.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>lovable</category>
      <category>production</category>
      <category>security</category>
      <category>launch</category>
    </item>
    <item>
      <title>Capacitor iOS for a Lovable App: First Build</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Sun, 08 Nov 2026 01:29:24 +0000</pubDate>
      <link>https://dev.to/batmanofweb/capacitor-ios-for-a-lovable-app-first-build-4c5c</link>
      <guid>https://dev.to/batmanofweb/capacitor-ios-for-a-lovable-app-first-build-4c5c</guid>
      <description>&lt;p&gt;Getting a Lovable app running as a Capacitor iOS app takes four commands and one Mac. Getting it to build cleanly the first time takes a bit more, and almost none of the extra is in the docs. This is the version we'd hand a founder who wants to try it themselves before deciding whether to pay someone.&lt;/p&gt;

&lt;p&gt;Facts below are from the &lt;a href="https://capacitorjs.com/docs/ios" rel="noopener noreferrer"&gt;Capacitor iOS docs&lt;/a&gt;, checked November 4, 2026. Capacitor 8 is current there, with 9 listed as "next".&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need before anything else
&lt;/h2&gt;

&lt;p&gt;A Mac. There's no way around it for iOS: you need &lt;strong&gt;Xcode 26.0 or later&lt;/strong&gt;, which only runs on macOS. The app itself can support iPhones back to &lt;strong&gt;iOS 15&lt;/strong&gt;. You'll also want a free Apple ID signed into Xcode for running on your own phone, and the paid Apple Developer Program ($99 a year) once you want TestFlight or the App Store.&lt;/p&gt;

&lt;p&gt;Your Lovable project has to be on GitHub, because Capacitor works on the code in your repo, not inside the Lovable editor. Connect GitHub from Lovable, clone the repo, and run &lt;code&gt;npm install&lt;/code&gt; locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @capacitor/core @capacitor/cli @capacitor/ios
npx cap init "My App" com.mycompany.myapp
npx cap add ios
npx cap open ios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;cap init&lt;/code&gt; writes &lt;code&gt;capacitor.config.ts&lt;/code&gt;. Think about the bundle ID before you type it (&lt;code&gt;com.mycompany.myapp&lt;/code&gt;). It ends up in App Store Connect and you can't change it on a live app without shipping a new one. We've had a founder use &lt;code&gt;com.lovable.test&lt;/code&gt; "just for now" and then publish with it. It's still there.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cap add ios&lt;/code&gt; creates an &lt;code&gt;ios/App&lt;/code&gt; folder with a real Xcode project. Commit it. People treat it like a build artefact and gitignore it, then lose every icon, permission string and signing setting they configured.&lt;/p&gt;

&lt;h2&gt;
  
  
  The webDir problem in newer Lovable projects
&lt;/h2&gt;

&lt;p&gt;Capacitor copies a folder of static files (your built web app) into the iOS project, and &lt;code&gt;webDir&lt;/code&gt; in &lt;code&gt;capacitor.config.ts&lt;/code&gt; says which folder. For years that was &lt;code&gt;dist&lt;/code&gt; and it just worked with Lovable apps.&lt;/p&gt;

&lt;p&gt;Lovable projects started since mid-2026 are server-rendered TanStack Start apps. Run &lt;code&gt;npm run build&lt;/code&gt; on one and you get a server bundle, not a folder with an &lt;code&gt;index.html&lt;/code&gt; Capacitor can load. &lt;code&gt;npx cap sync&lt;/code&gt; will complain that it can't find &lt;code&gt;index.html&lt;/code&gt; in your web assets directory, or worse, it copies something and the app opens to a white screen.&lt;/p&gt;

&lt;p&gt;The fix is a client-only build of the app for Capacitor, its own output folder, and &lt;code&gt;webDir&lt;/code&gt; pointed at it. It's a config change, not a rewrite, but it's the step that stops most people. Older Lovable projects built on plain Vite don't have this problem. If you're not sure which you have, we wrote up &lt;a href="https://lovable2live.com/blog/lovable-app-builder/" rel="noopener noreferrer"&gt;what the current Lovable template generates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some people skip all this and set &lt;code&gt;server.url&lt;/code&gt; to the live website, so the app is just a window onto it. Don't ship that. It's the quickest route to a guideline 4.2 rejection, and the app is blank with no signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  CocoaPods or Swift Package Manager
&lt;/h2&gt;

&lt;p&gt;The docs still describe iOS projects managed with Xcode and CocoaPods, opened from &lt;code&gt;ios/App/App.xcworkspace&lt;/code&gt;. Swift Package Manager is the other option, chosen when you add the platform with &lt;code&gt;npx cap add ios --packagemanager SPM&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Our take: SPM for a new app, because it means no Ruby and no &lt;code&gt;pod install&lt;/code&gt;, and that's where Apple tooling is heading. The &lt;a href="https://capacitorjs.com/docs/ios/spm" rel="noopener noreferrer"&gt;Capacitor SPM guide&lt;/a&gt; warns that plugins without an SPM version won't work properly, and Cordova plugins "should work" but might not. So check your plugin list first. If you depend on an old Cordova plugin for something like barcode scanning, CocoaPods is still the safer choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first errors, and what they mean
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-ios-lovable%2Fcapacitor-ios-first-build-errors.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-ios-lovable%2Fcapacitor-ios-first-build-errors.webp" alt="Four first-build stops for a Lovable app in Capacitor iOS: signing team, missing index.html, white screen, capacitor://localhost origin" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Signing for App requires a development team."&lt;/strong&gt; Open the App target in Xcode, go to Signing &amp;amp; Capabilities, pick your team. With a free Apple ID you can run on your own phone, but the app stops launching after 7 days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A white screen on the simulator.&lt;/strong&gt; Nine times out of ten, the web build is missing or stale. Run your build, then &lt;code&gt;npx cap sync ios&lt;/code&gt;, then run again. Capacitor doesn't rebuild your web app for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API calls fail on the device but work in the browser.&lt;/strong&gt; Your app now runs from &lt;code&gt;capacitor://localhost&lt;/code&gt;, not your domain, so anything that checks the origin rejects it. Supabase auth redirect URLs and CORS rules on your own edge functions are the usual suspects. Add the Capacitor origin and a deep link for the OAuth return.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"pod install" errors.&lt;/strong&gt; Usually an old CocoaPods or Ruby. Another reason we lean towards SPM.&lt;/p&gt;

&lt;h2&gt;
  
  
  After it runs
&lt;/h2&gt;

&lt;p&gt;Running in the simulator is maybe a third of the job. Icons in every size, a splash screen, permission strings for the camera or location, push notifications, a reviewer login for App Review, and enough native behaviour that Apple sees an app rather than a website: that's the rest, and it's where first submissions usually stall.&lt;/p&gt;

&lt;p&gt;If you'd rather skip to the end, we take Lovable apps to the App Store and Google Play as a fixed-price job, &lt;a href="https://lovable2app.com/pricing/" rel="noopener noreferrer"&gt;from $300&lt;/a&gt;, and keep the app building from the same code you edit in Lovable. The &lt;a href="https://lovable2app.com/publish-lovable-app/" rel="noopener noreferrer"&gt;publishing service&lt;/a&gt; has the details.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2app.com/blog/capacitor-ios-lovable/" rel="noopener noreferrer"&gt;lovable2app.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>capacitor</category>
      <category>ios</category>
      <category>lovable</category>
      <category>xcode</category>
    </item>
    <item>
      <title>Lovable Database: Backups, Limits, Export</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Sat, 07 Nov 2026 00:06:56 +0000</pubDate>
      <link>https://dev.to/batmanofweb/lovable-database-backups-limits-export-4l9f</link>
      <guid>https://dev.to/batmanofweb/lovable-database-backups-limits-export-4l9f</guid>
      <description>&lt;p&gt;The Lovable database is a managed PostgreSQL database that comes with Lovable Cloud, one per project, on Supabase's open-source stack. You get a table browser, a SQL editor, daily backups kept for about 14 days, and an export capped at 15 GB. You don't get point-in-time recovery, you can't change the region after it's created, and you can only install the extensions on Lovable's list.&lt;/p&gt;

&lt;p&gt;That's the short version. The rest of this post is what those limits mean once real users are writing to it, from &lt;a href="https://docs.lovable.dev/features/database" rel="noopener noreferrer"&gt;Lovable's database docs&lt;/a&gt; and the backup and performance pages next to it, all checked on November 5, 2026. The docs carry no dates, so if you're reading this in 2027, check them again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it lives in the editor
&lt;/h2&gt;

&lt;p&gt;Open &lt;strong&gt;More → Database&lt;/strong&gt;. You see your tables with an approximate row count, and you can double-click any value to edit it. Under &lt;strong&gt;Manage&lt;/strong&gt; there are six tools: Jobs, SQL editor, Edge functions, Backups, Policies and Settings. Settings shows the &lt;strong&gt;Database location&lt;/strong&gt; row, which is the only place you'll see the region and the Postgres version.&lt;/p&gt;

&lt;p&gt;One line in the docs deserves to be in bold, so I'll do it for them: &lt;strong&gt;edits in the Database view go straight to the database your published app uses.&lt;/strong&gt; There is no staging copy. A founder we worked with fixed a typo in a &lt;code&gt;plans&lt;/code&gt; table on a Friday afternoon by double-clicking the price cell. It was the &lt;code&gt;price_id&lt;/code&gt; column, not the display name, and Stripe checkout failed for every new customer until Monday. The view doesn't refresh live either, so he didn't even see his own change until he hit &lt;strong&gt;Refresh&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Small things worth knowing: pages show 10, 25, 50 or 100 rows, row editing only works on tables with a single primary key, views are read-only, and there's no import button. To load a CSV you attach it in the chat and ask Lovable to add the rows. CSV export does exist, and it exports every row matching your filter, not just the page you're looking at.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the schema changes
&lt;/h2&gt;

&lt;p&gt;You ask in chat, Lovable writes a migration. New projects keep those in &lt;code&gt;drizzle/migrations/&lt;/code&gt; (older ones in &lt;code&gt;supabase/migrations/&lt;/code&gt;), and the docs ask you not to touch &lt;code&gt;drizzle/schema.ts&lt;/code&gt; or &lt;code&gt;drizzle.config.ts&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The interesting part is what Lovable refuses to do. By default the agent permission &lt;strong&gt;Execute backward incompatible database migrations&lt;/strong&gt; is set to &lt;strong&gt;Never allow&lt;/strong&gt;, so it won't drop or rename a column, change a column's type, or add a required column without a default. Instead it adds a new column, copies the data across, and leaves the old one where it was.&lt;/p&gt;

&lt;p&gt;That's a sensible default for an app with users. It's also how a six-month-old Lovable project ends up with &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;status_v2&lt;/code&gt; and &lt;code&gt;order_status&lt;/code&gt; on the same table, two of them dead, and code that still reads the wrong one in one place. Set the permission to &lt;strong&gt;Ask each time&lt;/strong&gt; once you know what you're doing. You'll see the SQL before it runs, which is how it should have worked in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensions: a fixed list
&lt;/h2&gt;

&lt;p&gt;Supported: &lt;code&gt;pg_cron&lt;/code&gt;, &lt;code&gt;pg_net&lt;/code&gt;, &lt;code&gt;pg_trgm&lt;/code&gt;, &lt;code&gt;vector&lt;/code&gt;, &lt;code&gt;btree_gist&lt;/code&gt;, &lt;code&gt;btree_gin&lt;/code&gt;, &lt;code&gt;unaccent&lt;/code&gt;, &lt;code&gt;fuzzystrmatch&lt;/code&gt;, &lt;code&gt;postgis&lt;/code&gt; and &lt;code&gt;pgmq&lt;/code&gt;. Preinstalled: &lt;code&gt;plpgsql&lt;/code&gt;, &lt;code&gt;pg_graphql&lt;/code&gt;, &lt;code&gt;pg_stat_statements&lt;/code&gt;, &lt;code&gt;pgcrypto&lt;/code&gt;, &lt;code&gt;uuid-ossp&lt;/code&gt; and &lt;code&gt;pgsodium&lt;/code&gt;. Anything else is refused, in chat, in the SQL editor and through the API, which answers with a &lt;code&gt;403&lt;/code&gt; and &lt;code&gt;unsupported_extension&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For most apps that list is plenty. &lt;code&gt;vector&lt;/code&gt; covers embeddings, &lt;code&gt;pg_cron&lt;/code&gt; covers scheduled jobs, &lt;code&gt;postgis&lt;/code&gt; covers maps. If your plan depends on something that isn't there, find out now, not after launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backups: daily, about 14 days, no rewind
&lt;/h2&gt;

&lt;p&gt;Lovable takes one backup a day and keeps roughly 14 of them, listed under &lt;strong&gt;Manage → Backups&lt;/strong&gt; with the time in UTC. Restoring is one button, &lt;strong&gt;Restore to this backup&lt;/strong&gt;, and it can't be undone: everything written after that backup is gone, and the database is down for a few minutes while it restores.&lt;/p&gt;

&lt;p&gt;There is no point-in-time recovery. If someone runs a bad &lt;code&gt;UPDATE&lt;/code&gt; at 4 pm and the last backup was at 2 am, you lose 14 hours of orders to undo it. The SQL editor does ask for confirmation before &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;DROP&lt;/code&gt;, &lt;code&gt;TRUNCATE&lt;/code&gt; and &lt;code&gt;ALTER&lt;/code&gt;, which helps until the day someone clicks yes.&lt;/p&gt;

&lt;p&gt;Backups cover the database only. Files in storage are not in them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Export: what it takes, and what it leaves behind
&lt;/h2&gt;

&lt;p&gt;From &lt;strong&gt;Manage → Settings&lt;/strong&gt;, &lt;strong&gt;Export data&lt;/strong&gt; produces a compressed Postgres archive you load with &lt;code&gt;pg_restore&lt;/code&gt;. Lovable emails you when it's ready and you download it from &lt;strong&gt;More → Storage&lt;/strong&gt;. The limits are the ones that matter if you're planning to leave one day: databases up to 15 GB, an export file up to 5 GB, one export every 24 hours, and the database must be running. A project paused because it ran out of credits has to be resumed first, which means buying credits to get your own data out.&lt;/p&gt;

&lt;p&gt;The export includes your tables, your data and your users with their password hashes. Here's what it doesn't include, from the &lt;a href="https://docs.lovable.dev/features/database-backups" rel="noopener noreferrer"&gt;backups page&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-database%2Fwhat-the-export-leaves-behind.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-database%2Fwhat-the-export-leaves-behind.webp" alt="Map of where each part of a Lovable Cloud app goes when you leave: the database export carries tables, data and users with password hashes; storage files, edge function code, secrets, sign-in provider settings and API keys each need their own route" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Storage files, edge function code, secrets, sign-in provider settings and project API keys all move separately. The code comes over with GitHub sync. The files you download yourself. Secrets and Google or Apple sign-in you set up again at the destination. Users keep their passwords after a restore into Supabase, but everyone who was signed in has to sign in again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sizes and what they cost
&lt;/h2&gt;

&lt;p&gt;The Free plan is fixed at &lt;strong&gt;Tiny&lt;/strong&gt;. Paid plans can pick Tiny, Mini, Small, Medium, Large or X-Large under &lt;strong&gt;Settings → Database size → Manage&lt;/strong&gt;; a resize takes a few minutes with a short restart. Some older projects show 2X-Large, which can't be selected again once you leave it. Storage starts at 8 GB, can grow up to 5 times per change and 4 times a day, and &lt;strong&gt;never shrinks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Lovable doesn't publish prices per size. Larger instances burn more Run credits per hour, and the &lt;strong&gt;Manage instance&lt;/strong&gt; dialog shows an estimated monthly cost based on your last 30 days. The &lt;a href="https://docs.lovable.dev/features/database-performance" rel="noopener noreferrer"&gt;performance page&lt;/a&gt; also says to fix slow queries before resizing, and I agree with it completely. Nine times out of ten, a "we need a bigger database" problem is a missing index on a column the app filters by on every page load. Our free &lt;a href="https://lovable2live.com/tools/lovable-cost-check/" rel="noopener noreferrer"&gt;Lovable cost check&lt;/a&gt; reads your repo and estimates what your Cloud setup costs against running it on your own Supabase.&lt;/p&gt;

&lt;h2&gt;
  
  
  When it stops being enough
&lt;/h2&gt;

&lt;p&gt;The Lovable database is fine for a lot of apps that will never outgrow it. We'd move off it when one of these is true: you need to restore to a specific minute, you need an extension that isn't on the list, two projects need to share data (each Lovable project gets its own isolated database), or you need it in a region other than the one picked on day one.&lt;/p&gt;

&lt;p&gt;The move is the export above plus everything it leaves behind. Our &lt;a href="https://lovable2live.com/blog/lovable-cloud-to-supabase-migration-checklist/" rel="noopener noreferrer"&gt;migration checklist&lt;/a&gt; lists every piece. If you'd rather not do it yourself, we do &lt;a href="https://lovable2live.com/cloud-to-supabase/" rel="noopener noreferrer"&gt;Lovable Cloud to Supabase migrations&lt;/a&gt; from $150, priced by table count, usually in 1 to 2 days, and full &lt;a href="https://lovable2live.com/lovable-to-production/" rel="noopener noreferrer"&gt;production hardening&lt;/a&gt; for apps that need backups and monitoring set up properly.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2live.com/blog/lovable-database/" rel="noopener noreferrer"&gt;lovable2live.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>lovable</category>
      <category>database</category>
      <category>lovablecloud</category>
    </item>
    <item>
      <title>Capacitor vs Expo for a Lovable App: Wrap It or Rebuild It</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Thu, 05 Nov 2026 23:49:18 +0000</pubDate>
      <link>https://dev.to/batmanofweb/capacitor-vs-expo-for-a-lovable-app-wrap-it-or-rebuild-it-3ebp</link>
      <guid>https://dev.to/batmanofweb/capacitor-vs-expo-for-a-lovable-app-wrap-it-or-rebuild-it-3ebp</guid>
      <description>&lt;p&gt;For an app built with Lovable, Capacitor is the right default and Expo is the right second choice. Capacitor wraps the React web app you already have in a native iOS and Android shell, so the same code runs in the browser and in both stores and you keep building in Lovable. Expo is a framework for React Native, which means rewriting every screen with native components: more work up front, a more native feel, and you stop editing the mobile app in Lovable.&lt;/p&gt;

&lt;p&gt;That's the whole decision in two sentences. The rest of this post is about the cases where the second sentence wins.&lt;/p&gt;

&lt;h2&gt;
  
  
  What each one actually does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Capacitor&lt;/strong&gt; (&lt;a href="https://capacitorjs.com/docs" rel="noopener noreferrer"&gt;capacitorjs.com&lt;/a&gt;) takes your built web app, the &lt;code&gt;dist&lt;/code&gt; folder Vite produces, and runs it inside a native WebView. You get real &lt;code&gt;ios/&lt;/code&gt; and &lt;code&gt;android/&lt;/code&gt; projects, real App Store and Play Store builds, and plugins that call native features from JavaScript: camera, push notifications, file system, haptics, biometrics. Your Tailwind classes, shadcn/ui components and Supabase calls work unchanged, because it's still a web page underneath.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expo&lt;/strong&gt; (&lt;a href="https://docs.expo.dev/" rel="noopener noreferrer"&gt;expo.dev&lt;/a&gt;) is the most common way to build React Native apps today. React Native doesn't render HTML. A &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; becomes a &lt;code&gt;&amp;lt;View&amp;gt;&lt;/code&gt;, text has to sit inside &lt;code&gt;&amp;lt;Text&amp;gt;&lt;/code&gt;, and CSS becomes style objects (or NativeWind if you want Tailwind-like classes). Your business logic, Supabase client, types and API calls carry over. Your UI does not. Expo SDK 58 shipped on October 14, 2026, and it comes with Expo Router, cloud builds through EAS and over-the-air updates.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-vs-expo%2Fcapacitor-vs-expo-decision-tree.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-vs-expo%2Fcapacitor-vs-expo-decision-tree.webp" alt="Decision tree for a Lovable app: keep building in Lovable leads to Capacitor, heavy native UI or gestures leads to Expo" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Capacitor wins for a Lovable app
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You keep one codebase.&lt;/strong&gt; A change you make in Lovable on Monday is in the web app and, after a rebuild, in both store apps. With Expo you maintain two UIs from then on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's faster to ship.&lt;/strong&gt; Most of the work is native setup, icons, splash screens, permissions and store submission, not rewriting screens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lovable keeps working.&lt;/strong&gt; Lovable generates web React. It doesn't generate React Native, so an Expo app is something you or a developer edit by hand afterwards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing changed in 2026. Lovable projects started since mid-2026 use a server-rendered TanStack Start template instead of a plain Vite single-page app, so &lt;code&gt;npm run build&lt;/code&gt; no longer gives you a folder of static files to hand to Capacitor. The app needs a client-only build for its &lt;code&gt;webDir&lt;/code&gt; first, which is a config change, not a rewrite. Older Lovable projects build static files as before. Our &lt;a href="https://lovable2live.com/blog/lovable-app-builder/" rel="noopener noreferrer"&gt;look at the current Lovable template&lt;/a&gt; shows what's inside.&lt;/p&gt;

&lt;p&gt;The other catch is Apple's guideline 4.2. A WebView app that's just your website in a box gets rejected for "minimum functionality". Adding real native features (push notifications, the camera, offline screens, native sharing) is what gets it through, and we cover that in &lt;a href="https://lovable2app.com/blog/apple-guideline-4-2-lovable-webview-rejection/" rel="noopener noreferrer"&gt;the 4.2 rejection guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Expo wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The app is mostly gestures and animation.&lt;/strong&gt; Swipe-heavy feeds, maps with lots of markers, drag and drop, complex lists of thousands of rows. A WebView can do these, but native components do them more smoothly on older phones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The mobile app is becoming the main product.&lt;/strong&gt; If most of your users will be on the app and the web version is secondary, paying once for a native UI is a reasonable trade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You want builds without a Mac.&lt;/strong&gt; EAS builds iOS apps in the cloud. With Capacitor you build iOS in Xcode on a Mac, or use a cloud CI like &lt;a href="https://lovable2app.com/blog/codemagic-pricing/" rel="noopener noreferrer"&gt;Codemagic&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over-the-air updates aren't a reason to pick Expo on their own: Capacitor has them too, through Capgo, with the same App Store rules on what you may change without review; see &lt;a href="https://lovable2app.com/blog/capacitor-live-updates-lovable/" rel="noopener noreferrer"&gt;Capacitor live updates&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs to go either way
&lt;/h2&gt;

&lt;p&gt;For us the price is the same for both paths: $300, $600 or $1,000 depending on the size of the app, as listed on &lt;a href="https://lovable2app.com/pricing/" rel="noopener noreferrer"&gt;our pricing page&lt;/a&gt;. Capacitor is the default because it keeps your Lovable workflow; a React Native rebuild with Expo is the second path when one of the reasons above applies. If you're not sure which one your app needs, &lt;a href="https://lovable2app.com/capacitor-or-native/" rel="noopener noreferrer"&gt;the two paths compared&lt;/a&gt; goes through it screen by screen.&lt;/p&gt;

&lt;p&gt;If you'd rather skip all of it, we &lt;a href="https://lovable2app.com/publish-lovable-app/" rel="noopener noreferrer"&gt;publish your Lovable app&lt;/a&gt; to the App Store and Google Play from $300, with the native features Apple asks for.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2app.com/blog/capacitor-vs-expo/" rel="noopener noreferrer"&gt;lovable2app.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>capacitor</category>
      <category>expo</category>
      <category>reactnative</category>
      <category>lovable</category>
    </item>
    <item>
      <title>Lovable App Builder: What It Generates in 2026</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Tue, 03 Nov 2026 23:53:51 +0000</pubDate>
      <link>https://dev.to/batmanofweb/lovable-app-builder-what-it-generates-in-2026-4ln1</link>
      <guid>https://dev.to/batmanofweb/lovable-app-builder-what-it-generates-in-2026-4ln1</guid>
      <description>&lt;p&gt;The Lovable app builder turns a prompt into a working web app, and in late 2026 that app is no longer the simple React page it used to be. New projects start from a template called &lt;code&gt;tanstack_start_ts_current&lt;/code&gt;: a server-rendered TanStack Start app with React 19, Vite 8, Tailwind 4 and 46 prebuilt UI components, installed with bun. We know because we made one on October 5, 2026, connected it to GitHub, and read every file.&lt;/p&gt;

&lt;p&gt;That matters if you ever plan to host it somewhere else, hand it to a developer, or wonder why a tutorial from last year doesn't match what you see.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in the repo
&lt;/h2&gt;

&lt;p&gt;Here is the real tree from our test project, the one we use for GitHub sync tests. The first commit is from Lovable itself: &lt;code&gt;template: tanstack_start_ts_current-01a0e63ae988&lt;/code&gt;. After that, commits from &lt;code&gt;gpt-engineer-app[bot]&lt;/code&gt; for every change made in the editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-app-builder%2Flovable-project-file-tree.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-app-builder%2Flovable-project-file-tree.webp" alt="File tree of a Lovable project created October 5, 2026, with notes on .lovable/project.json, AGENTS.md, src/routes, src/server.ts, the 46 shadcn/ui components and the bun 24-hour install guard" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The parts worth knowing about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.lovable/project.json&lt;/code&gt;&lt;/strong&gt; holds three lines: a schema version, the template name and its revision. Don't delete it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/strong&gt; is written for AI coding agents, and its first instruction is blunt: don't force push or rewrite history on the connected branch, because "the user will likely lose their project history." Commits you push sync back into the Lovable editor, so the branch has to stay in a working state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;src/routes/&lt;/code&gt;&lt;/strong&gt; is file-based routing from TanStack Router, and &lt;code&gt;routeTree.gen.ts&lt;/code&gt; is generated from it. Don't edit the generated file by hand, it gets overwritten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;src/server.ts&lt;/code&gt;&lt;/strong&gt; wraps server rendering so a crash returns a readable error page instead of a bare &lt;code&gt;{"unhandled":true,"message":"HTTPError"}&lt;/code&gt; 500. Somebody at Lovable got bitten by that and wrote a comment about it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;src/components/ui/&lt;/code&gt;&lt;/strong&gt; is shadcn/ui: 46 components, Radix underneath, from accordion to tooltip. Most apps use maybe ten of them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;bunfig.toml&lt;/code&gt;&lt;/strong&gt; refuses any package version published less than 24 hours ago (&lt;code&gt;minimumReleaseAge = 86400&lt;/code&gt;), with exceptions only for Lovable's own packages. That's a supply-chain guard against hijacked npm releases, and honestly it's a better default than most agencies ship.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's also Vitest with Testing Library for tests, ESLint and Prettier configs, and a &lt;code&gt;vite.config.ts&lt;/code&gt; that is almost empty because everything comes from &lt;code&gt;@lovable.dev/vite-tanstack-config&lt;/code&gt;. A comment in that file warns you not to add the TanStack, React or Tailwind plugins yourself "or the app will break with duplicate plugins". Believe it.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's a server app now
&lt;/h2&gt;

&lt;p&gt;Projects from before mid-2026 were single-page apps: Vite built a folder of static files and any static host could serve it. The current template renders pages on a server. The build goes through Nitro, and the config's default target is Cloudflare.&lt;/p&gt;

&lt;p&gt;Two consequences. Google gets real HTML for each page, which is good news for the &lt;a href="https://lovable2live.com/blog/lovable-seo/" rel="noopener noreferrer"&gt;SEO problems older Lovable apps had&lt;/a&gt;. And "just upload the dist folder to Netlify" stops working. We've watched a founder do exactly that and get a site that loaded the shell and nothing else, because there was no server to render the routes. You need a host that runs the server build (Cloudflare, Netlify or Vercel with the right Nitro preset, or a Node server), and environment variables have to exist at runtime as well as at build time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the builder still leaves to you
&lt;/h2&gt;

&lt;p&gt;The code is clean and the stack is modern. That's not the problem. What the builder doesn't decide for you is everything around the code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where the backend lives (Lovable Cloud by default, or a Supabase project you own; newer TanStack Start apps can use your own Supabase from the start),&lt;/li&gt;
&lt;li&gt;whether the row level security policies actually stop one user reading another user's data,&lt;/li&gt;
&lt;li&gt;which secrets ended up in client code,&lt;/li&gt;
&lt;li&gt;what happens to your app when the credits run out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one surprises people. On Lovable Cloud, the backend pauses shortly after your balance hits zero, so sign-in stops working until you top up. Our free &lt;a href="https://lovable2live.com/tools/lovable-cost-check/" rel="noopener noreferrer"&gt;Lovable cost check&lt;/a&gt; reads your repo and tells you what the app costs to run each month, and what it would cost on your own Supabase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should you care which framework it is?
&lt;/h2&gt;

&lt;p&gt;If you only ever build in the editor, barely. If you'll ever hire a developer, yes: tell them it's TanStack Start, not Next.js and not a plain Vite SPA, before they quote. Half the estimates we see for "Lovable to production" work are priced for the wrong stack.&lt;/p&gt;

&lt;p&gt;When it's time to take a Lovable app live properly, we do &lt;a href="https://lovable2live.com/lovable-to-production/" rel="noopener noreferrer"&gt;Lovable to production&lt;/a&gt; at a fixed price from $500, usually in 5 to 7 days, working in your existing repo so you keep building in Lovable. If the app is on Lovable Cloud and you want the database in your own name, the &lt;a href="https://lovable2live.com/cloud-to-supabase/" rel="noopener noreferrer"&gt;move to Supabase&lt;/a&gt; starts at $150.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2live.com/blog/lovable-app-builder/" rel="noopener noreferrer"&gt;lovable2live.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>lovable</category>
      <category>tanstackstart</category>
      <category>code</category>
    </item>
    <item>
      <title>Capacitor Live Updates for a Lovable App: Capgo and the Rules</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Mon, 02 Nov 2026 23:54:36 +0000</pubDate>
      <link>https://dev.to/batmanofweb/capacitor-live-updates-for-a-lovable-app-capgo-and-the-rules-2lhj</link>
      <guid>https://dev.to/batmanofweb/capacitor-live-updates-for-a-lovable-app-capgo-and-the-rules-2lhj</guid>
      <description>&lt;p&gt;A Capacitor app is your Lovable web build sitting inside a native shell. That's why live updates work at all: when you change a button label in Lovable, the thing that changed is a folder of HTML, CSS and JavaScript, and a live update service can download that folder to your users' phones on the next launch. No App Store review, no waiting a day for Google. For a founder who keeps building in Lovable after launch, it's the difference between fixing a typo today and fixing it next Thursday.&lt;/p&gt;

&lt;p&gt;There are limits, though, and one of the big tools just went away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Appflow is closing, so it's Capgo or Capawesome
&lt;/h2&gt;

&lt;p&gt;For years the default answer was Ionic Appflow. On February 11, 2025, Ionic &lt;a href="https://ionic.io/blog/important-announcement-the-future-of-ionics-commercial-products" rel="noopener noreferrer"&gt;stopped selling Appflow to new customers&lt;/a&gt;, and existing customers keep access until December 31, 2027. If a tutorial tells you to sign up for Appflow, it's out of date.&lt;/p&gt;

&lt;p&gt;The two services people actually pick now are &lt;a href="https://capgo.app/" rel="noopener noreferrer"&gt;Capgo&lt;/a&gt; and Capawesome Cloud. We default to Capgo for small Lovable apps because the plugin is open source and the pricing is easy to read. Capgo's &lt;a href="https://capgo.app/pricing/" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;, checked November 1, 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Monthly&lt;/th&gt;
&lt;th&gt;Billed yearly&lt;/th&gt;
&lt;th&gt;Monthly active users&lt;/th&gt;
&lt;th&gt;Bandwidth&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pay as you go&lt;/td&gt;
&lt;td&gt;$0, credits only ($5 to start)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;per use&lt;/td&gt;
&lt;td&gt;per use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solo&lt;/td&gt;
&lt;td&gt;$14&lt;/td&gt;
&lt;td&gt;$12&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;100 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maker&lt;/td&gt;
&lt;td&gt;$39&lt;/td&gt;
&lt;td&gt;$33&lt;/td&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;1,000 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team&lt;/td&gt;
&lt;td&gt;$99&lt;/td&gt;
&lt;td&gt;$83&lt;/td&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;td&gt;10,000 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Over the limits it's $0.003 per extra monthly active user and $0.06 per GiB of bandwidth to start. A typical Lovable bundle compresses to a few megabytes, so for an early app the user count decides the plan, not the bandwidth.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can ship as a live update, and what can't
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-live-updates-lovable%2Flive-update-or-store-release.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Fcapacitor-live-updates-lovable%2Flive-update-or-store-release.webp" alt="Decision tree for a change made in Lovable: text, styles, layouts and JavaScript fixes ship as a live update; a new Capacitor plugin, a new permission, an icon or a new major feature needs a store release" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anything that only touches the web build can go out live. Copy changes, a broken form, a new screen built from components you already have, a Supabase query that was fetching too much. That covers most of what founders change in Lovable week to week.&lt;/p&gt;

&lt;p&gt;Anything native needs a new build through the stores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a new Capacitor plugin (camera, push, purchases), because the native code has to be compiled in,&lt;/li&gt;
&lt;li&gt;a new permission string in &lt;code&gt;Info.plist&lt;/code&gt; or &lt;code&gt;AndroidManifest.xml&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;the app icon, splash screen or app name,&lt;/li&gt;
&lt;li&gt;a Capacitor major version upgrade.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then there's the rule side. &lt;a href="https://developer.apple.com/app-store/review/guidelines/#software-requirements" rel="noopener noreferrer"&gt;Apple's App Review Guideline 2.5.2&lt;/a&gt; says apps may not download code that "introduces or changes features or functionality", and the developer agreement only allows downloaded interpreted code that doesn't change the app's primary purpose. In practice, fixes and small improvements through a live update are fine, and every serious Capacitor team ships them. Turning a habit tracker into a dating app overnight is not. If the change would surprise the reviewer who approved your last version, send it through review.&lt;/p&gt;

&lt;p&gt;Google Play is looser for JavaScript running in a WebView, but the same common sense applies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting it up on a Lovable app
&lt;/h2&gt;

&lt;p&gt;The short version, with Capgo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the plugin in the Capacitor project: &lt;code&gt;npm i @capgo/capacitor-updater&lt;/code&gt;, then &lt;code&gt;npx cap sync&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;CapacitorUpdater.notifyAppReady()&lt;/code&gt; as soon as the app has loaded. This one matters. If the app doesn't call it within the timeout after an update, the plugin assumes the new bundle is broken and rolls back to the last good one. That rollback is the safety net, so don't skip it.&lt;/li&gt;
&lt;li&gt;After each change in Lovable, pull the code, run the web build, and upload it: &lt;code&gt;npx @capgo/cli bundle upload&lt;/code&gt;. You can put that in a GitHub Action so a merge to &lt;code&gt;main&lt;/code&gt; ships it.&lt;/li&gt;
&lt;li&gt;Bump a store release only when one of the native changes above happens.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We had a founder whose first live update went out with the production Supabase URL swapped for the staging one, because the build ran with the wrong &lt;code&gt;.env&lt;/code&gt;. The rollback didn't fire, since the app loaded fine and called &lt;code&gt;notifyAppReady()&lt;/code&gt;. It just loaded an empty database. Thirty minutes later the fixed bundle was out, which is the point of live updates, but it's also why we upload to a test channel first and promote to production after checking it on a real phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is it worth paying for?
&lt;/h2&gt;

&lt;p&gt;If you change the app once a month, no. Ship store releases; Apple's review usually takes a day or so. If you're still building in Lovable several times a week after launch, yes, and $14 a month is less than the time you lose waiting on review for a typo.&lt;/p&gt;

&lt;p&gt;Live updates are also one of the reasons we build Lovable apps with Capacitor first: the founder keeps prompting in Lovable and the phones get the change the same day. If you want that set up properly, our &lt;a href="https://lovable2app.com/publish-lovable-app/" rel="noopener noreferrer"&gt;Lovable app publishing&lt;/a&gt; service takes your Lovable app to the App Store and Google Play from $300, and the &lt;a href="https://lovable2app.com/app-store-rejection-fix/" rel="noopener noreferrer"&gt;App Store rejection fix&lt;/a&gt; is $350 flat if Apple has already said no.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2app.com/blog/capacitor-live-updates-lovable/" rel="noopener noreferrer"&gt;lovable2app.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>capacitor</category>
      <category>liveupdates</category>
      <category>capgo</category>
      <category>lovable</category>
    </item>
    <item>
      <title>Lovable MCP: Three Things With One Name</title>
      <dc:creator>Aakash Verma</dc:creator>
      <pubDate>Sun, 01 Nov 2026 23:57:23 +0000</pubDate>
      <link>https://dev.to/batmanofweb/lovable-mcp-three-things-with-one-name-5e0p</link>
      <guid>https://dev.to/batmanofweb/lovable-mcp-three-things-with-one-name-5e0p</guid>
      <description>&lt;p&gt;"Lovable MCP" is three different features in Lovable's docs right now (checked October 29, 2026), and people mix them up constantly. The &lt;strong&gt;Lovable MCP server&lt;/strong&gt; at &lt;code&gt;https://mcp.lovable.dev&lt;/code&gt; lets an AI client like ChatGPT, Cursor or VS Code drive your Lovable projects. &lt;strong&gt;Chat connectors&lt;/strong&gt; go the other way: Lovable's agent reads from your MCP servers while it builds. And &lt;strong&gt;agent integrations&lt;/strong&gt; turn your published app into an MCP server that other people's assistants can call.&lt;/p&gt;

&lt;p&gt;They point in different directions, they cost different things, and only one of them touches your live users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-mcp%2Flovable-mcp-three-directions.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/.%2Flovable-mcp%2Flovable-mcp-three-directions.webp" alt="Map of the three Lovable MCP features: an AI client drives Lovable, Lovable reads your tools, and outside assistants call your published app" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Who calls whom&lt;/th&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;What it costs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lovable MCP server&lt;/td&gt;
&lt;td&gt;Your AI client calls Lovable&lt;/td&gt;
&lt;td&gt;All plans&lt;/td&gt;
&lt;td&gt;Normal credits for every message and build it triggers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chat connectors (custom MCP)&lt;/td&gt;
&lt;td&gt;Lovable's agent calls your tools while you build&lt;/td&gt;
&lt;td&gt;All plans&lt;/td&gt;
&lt;td&gt;Nothing extra to connect; it's context for builds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent integrations&lt;/td&gt;
&lt;td&gt;Someone's assistant calls your published app&lt;/td&gt;
&lt;td&gt;All plans for public apps&lt;/td&gt;
&lt;td&gt;Build credits to set up, then normal backend and AI usage per call&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. The Lovable MCP server: driving Lovable from somewhere else
&lt;/h2&gt;

&lt;p&gt;This is the one most searches mean. Lovable runs an MCP server at &lt;code&gt;https://mcp.lovable.dev&lt;/code&gt;, login is OAuth, and it's on by default for Free, Pro and Business workspaces (Enterprise admins have to switch on "Third-party MCP clients" first). In ChatGPT you paste the URL; in Cursor and VS Code it's a few lines in &lt;code&gt;mcp.json&lt;/code&gt;; Claude Code has a one-line &lt;code&gt;mcp add&lt;/code&gt; command. The &lt;a href="https://docs.lovable.dev/integrations/lovable-mcp-server" rel="noopener noreferrer"&gt;Lovable MCP server docs&lt;/a&gt; have the exact config for each.&lt;/p&gt;

&lt;p&gt;Once connected, your client gets about forty tools. The useful ones: &lt;code&gt;create_project&lt;/code&gt;, &lt;code&gt;send_message&lt;/code&gt; (with a &lt;code&gt;plan_mode&lt;/code&gt; switch), &lt;code&gt;get_diff&lt;/code&gt;, &lt;code&gt;list_files&lt;/code&gt;, &lt;code&gt;read_file&lt;/code&gt;, &lt;code&gt;list_edits&lt;/code&gt;, &lt;code&gt;deploy_project&lt;/code&gt;, &lt;code&gt;get_project_analytics&lt;/code&gt;, and three database tools, &lt;code&gt;get_database_status&lt;/code&gt;, &lt;code&gt;enable_database&lt;/code&gt; and &lt;code&gt;query_database&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Where it's genuinely good: reading code and diffs without opening the editor, asking for three layout variants and getting three live URLs back, and pulling analytics into the same chat where you're already working. I like &lt;code&gt;get_diff&lt;/code&gt; most. Being able to ask "what did the last three prompts actually change" and get a unified diff is the review step Lovable never had.&lt;/p&gt;

&lt;p&gt;Read Lovable's own warning box before you connect it, because it's blunt for a reason:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The connection isn't limited to one project.&lt;/strong&gt; It can reach every workspace your account can.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool calls spend real credits.&lt;/strong&gt; An agent that loops on &lt;code&gt;send_message&lt;/code&gt; because it doesn't like the result will burn through a month's credits while you're making coffee. Same credit pool as the editor, same &lt;a href="https://lovable2live.com/blog/lovable-pricing/" rel="noopener noreferrer"&gt;prices&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;deploy_project&lt;/code&gt; publishes for real.&lt;/strong&gt; On Free and Pro, anyone with the link can open the app unless website access is set to invite only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;query_database&lt;/code&gt; runs SQL with your full database permissions.&lt;/strong&gt; Reads, writes, &lt;code&gt;drop table&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My rule: the MCP server is fine for building and reviewing. I wouldn't hand &lt;code&gt;query_database&lt;/code&gt; on a production project to any agent that runs without a human reading each call.&lt;/p&gt;

&lt;p&gt;One more detail that surprises people. The database tools only work on Lovable's built-in Cloud database. If the project uses your own Supabase project, Lovable's docs say it's "managed in Supabase instead", so you'd connect Supabase's own MCP server for that. That's one of the small reasons teams &lt;a href="https://lovable2live.com/cloud-to-supabase/" rel="noopener noreferrer"&gt;move from Lovable Cloud to their own Supabase&lt;/a&gt;: the database becomes something every tool can reach, not just Lovable.&lt;/p&gt;

&lt;p&gt;The MCP server is also the only way to create and edit projects from outside. The &lt;a href="https://lovable2live.com/blog/lovable-api/" rel="noopener noreferrer"&gt;Lovable API&lt;/a&gt; can publish, embed and read analytics, but it can't send a prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Chat connectors: Lovable reading your tools
&lt;/h2&gt;

&lt;p&gt;The second "Lovable MCP" is the reverse. You give Lovable's agent access to a remote MCP server (Notion, Linear, Jira, or your own) so it builds from real context: "use the spec in the Notion page" instead of you pasting it.&lt;/p&gt;

&lt;p&gt;Custom MCP servers work on all plans. You add them under Connectors, Add custom, MCP server; auth is OAuth by default, or a bearer token, or none. If your server sits behind a firewall, there's a "Lovable static IPs" option that routes traffic from &lt;code&gt;185.41.150.0/28&lt;/code&gt; and &lt;code&gt;185.41.150.16/28&lt;/code&gt; so you can allowlist them. Details are on the &lt;a href="https://docs.lovable.dev/integrations/custom-mcp" rel="noopener noreferrer"&gt;custom MCP page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The trap: chat connections are personal and "never part of your published app." Connecting your CRM as an MCP server doesn't let your app read the CRM. That needs an app + chat connector, a different feature with different credentials. It's an easy mistake to make, because the agent uses the connector perfectly in chat, and then the live app still can't see a thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Agent integrations: your app as an MCP server
&lt;/h2&gt;

&lt;p&gt;The newest one, and the one I'd slow down on. Lovable can turn a published app into an MCP server: it reads your app, proposes tools like &lt;code&gt;list_open_requests&lt;/code&gt; or &lt;code&gt;generate_quote&lt;/code&gt;, asks whether callers must sign in, and gives you an MCP link users add to ChatGPT or another assistant. The &lt;a href="https://docs.lovable.dev/features/agent-integrations" rel="noopener noreferrer"&gt;agent integrations docs&lt;/a&gt; cover the setup.&lt;/p&gt;

&lt;p&gt;Lovable doesn't charge for hosting the integration or for tool calls. Enabling it is a build, so it uses build credits, and every call after that costs what the action behind it costs: database reads, Cloud usage, AI calls. Free and Pro apps have to be published publicly to get one. Sign-in needs real app auth, and on newer TanStack Start apps with your own Supabase project, Lovable turns on Supabase's OAuth 2.1 server when you publish.&lt;/p&gt;

&lt;p&gt;Then there's this line from the docs, which is the whole reason this section exists: agent integrations "do not include a built-in rate limit or spending cap."&lt;/p&gt;

&lt;p&gt;Think about what that means for a tool that calls an AI feature. A person clicks a button a few times. An assistant in a retry loop calls &lt;code&gt;generate_quote&lt;/code&gt; a few thousand times, and every call runs your real backend and your real AI usage on your credits. If the tool is open to anyone, it doesn't even need an account to do it.&lt;/p&gt;

&lt;p&gt;Before I'd switch one on for a live app:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with read-only tools. Nothing that writes, sends email or charges a card.&lt;/li&gt;
&lt;li&gt;Require sign-in unless the data is already public on your site.&lt;/li&gt;
&lt;li&gt;Put a per-user limit in the backend function itself, because nothing else will.&lt;/li&gt;
&lt;li&gt;Make every write safe to run twice, since assistants retry.&lt;/li&gt;
&lt;li&gt;Check that each tool enforces the same RLS policies and plan checks as the screen it replaces. Lovable proposes tools from what the app does, not from who's allowed to do it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last one is exactly what we look at in a &lt;a href="https://lovable2live.com/lovable-security-audit/" rel="noopener noreferrer"&gt;Lovable security audit&lt;/a&gt;: an app that's safe through its own screens can be wide open through a second door nobody tested.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one did you actually want?
&lt;/h2&gt;

&lt;p&gt;If you want to build or review Lovable projects from ChatGPT, Cursor or VS Code, it's the MCP server. If you want Lovable to read your docs and tickets while it builds, chat connectors. If you want your customers to use your app from inside their assistant, agent integrations, with limits you add yourself.&lt;/p&gt;

&lt;p&gt;And if the credit side of any of this worries you, our free &lt;a href="https://lovable2live.com/tools/lovable-cost-check/" rel="noopener noreferrer"&gt;Lovable cost check&lt;/a&gt; reads your repo and prices the app four ways, including running it outside Lovable. For the app itself, &lt;a href="https://lovable2live.com/contact/" rel="noopener noreferrer"&gt;tell us what you're building&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lovable2live.com/blog/lovable-mcp/" rel="noopener noreferrer"&gt;lovable2live.com&lt;/a&gt;. Aakash Verma, software developer and founder of Lovable 2 Live.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>lovablemcp</category>
      <category>lovable</category>
      <category>mcp</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
