BACK_TO_BLOG
Tutorials MAY 29, 2026 4 min read Integration Lead

How to Persist Data in Bolt.new and Support Markdown via CDN

How to Persist Data in Bolt.new (Vite / React)

Bolt.new runs full-stack React, Vite, and Node.js environments directly inside your web browser sandbox. But because the container workspace is ephemeral, setting up traditional databases (like Postgres, MySQL, or local SQLite files) is highly unstable and will reset when the container refreshes.

To persist data in Bolt.new reliably, you need an external cloud database. CloudState is the fastest solution, providing a zero-setup hosted JSON database that synchronizes application state with a single GET/PUT API.


Step 1: Prompt Bolt.new to Connect CloudState

Paste this system prompt directly into your Bolt.new builder console to add cloud database persistence:

Help me persist my application state. I want to save all data to CloudState.
- GET endpoint: https://cloudstate.onrender.com/v1/db/your-project-slug
- PUT endpoint: https://cloudstate.onrender.com/v1/db/your-project-slug
- Headers: { "x-api-key": "YOUR_SECRET_KEY", "Content-Type": "application/json" }

Please fetch data on mount to initialize state, and trigger a debounced (500ms) PUT update to synchronize database changes whenever local state modifications occur.

Bolt.new will instantly write a clean React hook (useEffect) or state manager that bridges your React state to CloudState.


Step 2: Support Markdown Rendering using a CDN (Zero-NPM Setup)

Many AI-generated apps require rendering formatted Markdown (e.g., custom AI chatbots, note-taking apps, or blogging tools). Installing NPM markdown packages like marked or react-markdown inside Bolt.new can occasionally lead to dependency compilation errors or slow down build times.

To support markdown, use a CDN for it to keep your Bolt.new build fast and lightweight. By using a public CDN (like jsDelivr), you load the markdown parser directly into the browser.

Option A: Injecting Marked via Script Tag (Vanilla JS / React)

You can load the script tag inside your HTML header or dynamically inside your React component:

<!-- Add this to index.html or load it dynamically -->
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>

Option B: Dynamic React Component with CDN Script

Here is the exact React code to load the parser dynamically and render Markdown safely:

import React, { useState, useEffect } from 'react';

export function MarkdownRenderer({ markdownText }) {
  const [html, setHtml] = useState('');

  useEffect(() => {
    // 1. Ensure marked is loaded from the CDN
    if (window.marked) {
      setHtml(window.marked.parse(markdownText));
      return;
    }

    const script = document.createElement('script');
    script.src = 'https://cdn.jsdelivr.net/npm/marked/marked.min.js';
    script.async = true;
    script.onload = () => {
      if (window.marked) {
        setHtml(window.marked.parse(markdownText));
      }
    };
    document.head.appendChild(script);

    return () => {
      // Clean up script if component unmounts before loading
      if (document.head.contains(script)) {
        document.head.removeChild(script);
      }
    };
  }, [markdownText]);

  return (
    <div 
      className="markdown-body" 
      dangerouslySetInnerHTML={{ __html: html }} 
    />
  );
}

Why this is the Ultimate Flow for AI Developers

By combining CloudState zero-backend persistence with CDN-loaded Markdown parsing, you achieve:

  1. Under 10 Seconds Setup: You don't have to configure database adapters, write custom APIs, or configure database schemas.
  2. Ephemeral Safety: Your Bolt.new previews can be refreshed, closed, or shared with collaborators without losing data.
  3. Optimized Build Speed: Utilizing CDNs for library loading keeps your project bundle size small, preventing ephemeral sandbox timeout errors in Bolt.new.

Pairing CloudState with Bolt.new is the fastest path to transforming frontend prototypes into functional SaaS products.

CLOUDSTATE_ACTIVE_METRICS

Need instant cloud persistence for your AI project?

Create a free database endpoint in under 10 seconds. Paste our custom prompt inside Cursor, Bolt, or Lovable to link your state instantly.