<?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: Riley </title>
    <description>The latest articles on DEV Community by Riley  (@rasberryx).</description>
    <link>https://dev.to/rasberryx</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%2F4202296%2F6401fd6e-295f-46f2-bbed-f9c6deae4496.jpeg</url>
      <title>DEV Community: Riley </title>
      <link>https://dev.to/rasberryx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rasberryx"/>
    <language>en</language>
    <item>
      <title>I scanned 100 apps built with Lovable. 14 were already dead. 1 leaked a live API key.</title>
      <dc:creator>Riley </dc:creator>
      <pubDate>Fri, 23 Oct 2026 10:47:30 +0000</pubDate>
      <link>https://dev.to/rasberryx/i-scanned-100-apps-built-with-lovable-14-were-already-dead-1-leaked-a-live-api-key-1f3j</link>
      <guid>https://dev.to/rasberryx/i-scanned-100-apps-built-with-lovable-14-were-already-dead-1-leaked-a-live-api-key-1f3j</guid>
      <description>&lt;p&gt;I build Vespez (vespez.com), a tool that checks web apps for security and GDPR issues. I wanted a real answer to a question I kept asking myself: AI tools make it trivial to ship an app, do they make it trivial to ship a safe one?&lt;/p&gt;

&lt;p&gt;So I pulled 100 apps from Lovable’s own public showcase and ran every one through the same scan Vespez runs on any site: a headless browser loads the page, records what fires before the visitor clicks “accept” on consent, checks the response headers, and reads the privacy policy if one exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The numbers&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;100 apps checked. 14 were already offline within weeks of being shown off publicly. 86 got a full score.&lt;/p&gt;

&lt;p&gt;Average security score: 77/100. Average GDPR score: 38/100.&lt;/p&gt;

&lt;p&gt;One app was leaking a live OpenAI API key in its public JavaScript bundle, readable by anyone who opened dev tools. Not naming it, that gets reported privately, not broadcast.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hldufif82eqoz09ox77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hldufif82eqoz09ox77.png" alt="Stats from scanning 86 Lovable apps. GDPR: average score 38 out of 100, median 45, 62% scored below 50, 16% scored exactly 0. Security: average score 77, median 80, 26% scored below 80, lowest score 45" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What showed up constantly&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;96% have no Content-Security-Policy header&lt;/strong&gt;. 92% can be embedded by another site (clickjacking). These travel together, 92% are missing both at once. That’s not 92 separate decisions, it’s a platform default: Lovable doesn’t set these headers for you, so unless someone specifically knows to add them, they just don’t exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;55% load Google Fonts straight from Google’s servers.&lt;/strong&gt; Same story, template default, not a deliberate choice, and also exactly the kind of third-party data flow GDPR actually cares about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;57% have no findable privacy policy&lt;/strong&gt;. 63% have no terms of service. This part actually is on the builder, not the platform.&lt;/p&gt;

&lt;p&gt;The cleanest result in the whole set: whether a consent banner existed was almost perfectly predictive of behavior. Apps with one loaded trackers before consent only 10% of the time. Apps without one did it 96% of the time. When the banner exists, it works. The gap is that 23 of 86 never added one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero of the 86 scored a clean GDPR sheet.&lt;/strong&gt; Three had zero security findings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;A smaller pattern worth a mention&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Split by domain: apps still on a lovable.app subdomain averaged a GDPR score of 44. Apps that moved to their own custom domain averaged 34, worse, not better. Small sample (36 vs 50), so I’d call it a pattern worth watching rather than a law, but it’s a real one: moving to your own domain is usually a sign you’re treating it as a real product, which makes the gaps matter more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5ugq8i9kz5apns7doq47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5ugq8i9kz5apns7doq47.png" alt="Stats from scanning 86 Lovable apps. GDPR: average score 38 out of 100, median 45, 62% scored below 50, 16% scored exactly 0. Security: average score 77, median 80, 26% scored below 80, lowest score 45" width="799" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Method, so you can judge it yourself&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I took 100 apps from Lovable’s public showcase, via each project’s own “Visit website” link.&lt;/p&gt;

&lt;p&gt;Each app got one scan: headless browser render, response headers, network requests and cookies recorded before any consent interaction, and privacy/terms pages read when findable.&lt;/p&gt;

&lt;p&gt;Security findings are deterministic checks against the page and headers. For GDPR findings, where a privacy policy exists, an AI model reads it and checks what it says against what the site actually does.&lt;/p&gt;

&lt;p&gt;Nothing from the pages was kept beyond scores and findings, same policy as real Vespez accounts.&lt;/p&gt;

&lt;p&gt;14 apps were unreachable and excluded from the scores above.&lt;/p&gt;

&lt;p&gt;Not a legal audit, a scan. Low score = likely issue, not a confirmed violation. Sample is a public AI-builder showcase, not a random slice of the web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Curious if anyone’s seen similar patterns scanning their own AI-generated output, or if I’m missing an angle on the methodology.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>javascript</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
