Bolt.new and security: what to check in browser-generated full-stack apps
Bolt.new has made the unthinkable possible until recently: creating, running, and publishing entire full-stack applications without ever leaving the browser. Thanks to StackBlitz’s WebContainers, you can launch Node.js servers, install npm packages, and configure databases in seconds. The problem is that the speed at which an app goes from prompt to public deployment compresses or entirely eliminates the critical review phase of the AI-generated backend, which may contain vulnerabilities that are not obvious at first glance.
The interface may look clean and professional, but this says nothing about the robustness of API routes, the management of environment variables, or the configuration of Row Level Security for the connected database. This article analyzes the specific risks of full-stack apps created with Bolt.new and provides a practical guide to validating architecture and code before launch.
From browser to production: the risk of immediate deployment
Bolt.new doesn’t just generate code snippets: it creates a complete operating environment. The product’s attack surface is therefore not limited to the frontend, but extends to the entire technology stack, with three recurring areas of risk.
The first concerns client-side validation: to show a working result immediately, the AI tends to generate validation checks — on forms or permissions — only in the frontend code. Without equivalent validation on the server, API routes remain exposed to direct attacks, regardless of what the browser displays to the user.
The second is dependency sprawl: Bolt can install dozens of npm packages to solve functional tasks, and without a manual review of the package.json file, it is easy to end up with vulnerable or obsolete libraries that no one consciously chose.
The third concerns automatic deployment configurations: moving to platforms like Netlify or Bolt Hosting can trigger default settings — overly permissive CORS, active debug logging — that expose the app as soon as it goes online.
Specific technical risks in Bolt.new apps
Exposure of secrets and environment variables
API keys for the database, OpenAI, or Stripe can accidentally end up in client-side code or be visible in build logs. These keys must be managed exclusively through protected environment variables in the hosting provider and must never be hardcoded in the source code, even during the prototyping phase.
Broken Object Level Authorization (BOLA/IDOR)
APIs generated to read or write data — for example /api/data/[id] — often do not include ownership checks. A malicious user can access another user’s data simply by changing the ID in the URL, because the AI agent may have omitted identity verification on the backend. This type of vulnerability is among the most common in automatically generated applications and among the most difficult to detect without targeted testing.
Database integration (Supabase and Bolt Database)
When the app uses a database, the main risk is that Row Level Security (RLS) has been configured too permissively or not activated at all to speed up the demo. Without strict RLS policies, the database remains exposed to arbitrary queries from the outside, regardless of how the frontend is structured.
Webhook and callback management
If the app integrates payments or external services, the routes receiving incoming data may not correctly validate the sender’s digital signature. This allows an attacker to simulate business events — such as a completed purchase — by manipulating HTTP requests without the system noticing.
What to check before go-live
- API route audit: every backend endpoint verifies the user’s identity on the server before returning or modifying data.
- package.json review: unnecessary dependencies have been removed and libraries introduced by the AI are updated and free of known vulnerabilities.
- Environment variable verification: all secret keys are protected server-side and not exposed to the frontend via public prefixes.
- Access control bypass test: it has been verified whether it is possible to access other users’ records by changing IDs in API calls.
- CORS policy and security headers: Cross-Origin policies are limited to only the necessary domains, and headers like CSP and HSTS have been set.
When an independent verification is needed
Bolt.new is an effective tool for rapid prototyping, but when the app starts handling real data, authenticated users, or payments, the fact that it works in preview is not a guarantee of security. The following table maps the most critical areas to the most suitable verification services.
| If the Bolt.new app touches… | The main risk is… | Recommended ISGroup service |
|---|---|---|
| Backend API, Node.js | Broken authorization, IDOR | Code Review |
| Login, sessions, forms | External abuse, injection | Web Application Penetration Testing |
| Database, storage | Data leak, weak RLS | Cloud Security Assessment |
| Payments, Stripe | Financial fraud | Secure Architecture Review |
Frequently Asked Questions
- Are apps on Bolt.new run in an isolated environment?
- The development environment in the browser is isolated, but once the app is published on a real host, it becomes a standard web application, exposed to all the risks of the internet like any other.
- Can I use Bolt.new for apps that handle payments?
- Yes, but it is essential that the payment confirmation logic happens entirely in the backend and that webhooks are protected by digital signatures verified server-side, not just client-side.
- What happens if I add a database to a Bolt app?
- Security shifts to database configuration and APIs. You must ensure that RLS policies are active and that every call verifies the current user’s permissions before returning or modifying data.
Protect your organisation with Web Application Penetration Testing.
Choose ISGroup for a practical, tailored engagement:
- A focused assessment of your environment and requirements
- Clear findings with a prioritised, actionable roadmap
- Direct support from experienced specialists through remediation and implementation
