Is Your "Vibe Coded" App Safe? 

A critical security vulnerability was recently announced in React. If you have built anything with Lovable, Bolt, v0, Replit, or Cursor, your application could be vulnerable.

We are not saying this to scare you, but this is a "drop everything and check" situation for anyone relying on AI-generated code.

A founder recently asked us: "We didn't choose React, we just asked the AI to build a dashboard. Does this affect us?"

The answer is Yes. Because the AI likely chose it for you.

Right now, the foundational component of the modern web is facing a Severity 10 issue. If you are "vibe coding" (using AI to generate full-stack apps), you are likely running React under the hood.

We will explain exactly what this vulnerability is, how to check if your codebase is affected, and the simple workflow we use to fix it immediately.

Watch a quick video explaining what this means for AI-generated codebases:


The Severity 10 Vulnerability

The team at React published a CVE (Common Vulnerabilities and Exposure). This is essentially the "Justice League" of the internet sharing a public database of security problems. Every CVE gets a score from 0 to 10.

This one scored a 10.

That is the maximum score. That is the category of "stop what you are doing and fix this."

What is the attack?

It is classified as RCE (Remote Code Execution).

This means an attacker can run malicious code on your server without ever logging in. They don't need your admin password. They don't need to hack your database. They just send a request to your server, and they get the keys.

What can they do?

  • Deploy malware.
  • Steal your Supabase service role keys.
  • Delete your entire database.
  • Steal user login credentials.

The Reality Check:

If you deploy on platforms like Vercel or Cloudflare, their WAF (Web Application Firewall) might block this. This is called "Defense in Depth." However, we strictly advise against relying solely on a firewall. You must patch the code.


Why Vibe Coders Are at Risk

You might be thinking, "We didn't write any React code. We just used Cursor."

Here is the thing: AI tools make choices for you.

That is the whole point of vibe coding. You describe the product, and the AI figures out the tech stack. Because React (and frameworks like Next.js) are the gold standard for full-stack apps, almost every AI tool defaults to using them.

The Version Trap

The specific versions affected are often the newest ones (React 19.x versions). Since AI agents are often biased toward the latest tech, they have been spinning up thousands of apps using exactly these versions over the last few months.


Tutorial: How to Check & Fix

Here is the manual way to check, followed by the "AI way" to fix it.

Step 1: The "Receipt" vs. The "Wishlist"

You need to look at your code files.

  • package.json: This is your wishlist. It’s what you asked for.
  • package-lock.json: This is the receipt. This is the exact version running on production.

Step 2: The Check

Open your package-lock.json file.

Search for: node_modules/react

You will see a version number.

  • If you see: 19.0.0, 19.0.1, or 19.0.2 (or similar early v19 builds) → You are likely VULNERABLE.
  • The Fix: You need to be on the patched version where the fix was introduced.

Step 3: The Fix (The AI Way)

Do not try to run manual terminal commands if you aren't comfortable with them. Use the tool that built the app to fix the app.

  1. Copy the text from the official React security blog post (or the CVE details).
  2. Paste it into Lovable, Cursor, or Replit.
  3. Run this Prompt:
    "Am I affected by this? Check my package-lock.json. If I am, please run the necessary npm install commands to upgrade React to the patched version."

Reality Check:

This takes 5 minutes. Ignoring it could cost you your entire business.


Pro Tip: The "Tilde" Trick for Automated Protection

How do we stop this from happening next time? We recommend a specific configuration in your package.json.

You will see symbols before your version numbers. These symbols tell the system how to handle updates.

Semantic Versioning works like this: Major.Minor.Patch (e.g., 19.10.2).

  • The Caret (^): This is standard. It auto-updates Minor versions. (e.g., 19.1.0 → 19.2.0).
    • Risk: Minor updates shouldn't break things, but they often do.
  • The Tilde (~): This is the safer trick we use. It auto-updates Patch versions only. (e.g., 19.1.0 → 19.1.1).
    • Benefit: Patch versions are almost always security fixes or bug squashing. They rarely break your app.

Recommendation:

In your package.json, consider using the Tilde (~) for your core dependencies. It ensures you automatically get security patches without risking a feature update breaking your app layout.


Conclusion: Stay Vigilant

Building with AI feels like magic, but the responsibility of ownership doesn't go away. When critical vulnerabilities strike, we must act immediately to protect our users and data. 

By understanding these risks and using strategies like the "Tilde" trick, we can enjoy the speed of AI coding without compromising on security.

Need help securing your app? Book a Call

Have a question? Get in touch below

"AZKY has developed an AI training platform for us. I have really enjoyed working with AZKY due to their clear communication and positive attitude to take on challenges"

Dr Jon Turvey

Founder @ Simflow AI, NHS Doctor, UK

AZKY doesn't just try to build whatever you ask them to. They take time to understand your business objectives and propose changes based on what we might actually need. This way, they quickly became an integral part of our business.

Lauri Lahi

CEO- Emerhub, RecruitGo

"...team went above and beyond to be solutions oriented when partnering with us on what was essentially our first attempt at no code development..."

Jenny Cox

The Combination Rule

Have a product idea?

We have probably built something similar before, let us help you