> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rocket.new/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> Solutions to common Rocket.new issues with Supabase, Stripe, email, AI integrations, deployment, and more.

export const LlmsDirective = () => <blockquote className="llms-directive">
    For the complete documentation index, see <a href="/llms.txt">llms.txt</a>.
    For a lightweight markdown version of this page, append .md to the URL.
  </blockquote>;

<LlmsDirective />

This page collects the most common issues you may run into while building with Rocket, organized by category. Each entry includes what you will see, why it happens, and step-by-step instructions to fix it.

<Note>
  The prompts below include placeholders like `[TABLE_NAME]`, `[path]`, and `[MAX_CHARS]`. Replace these with your actual values before pasting into Rocket chat.
</Note>

## Supabase issues

<AccordionGroup>
  <Accordion title="App stuck or showing errors after adding Supabase">
    **What you see:** Your app fails to load, shows a blank screen, or displays database-related errors after connecting Supabase.

    **Why it happens:** Migration scripts have not been pushed to the remote Supabase project, the Supabase project is paused due to inactivity, or the redirect URLs for authentication are misconfigured.

    **How to fix it:**

    1. Open your project settings and go to the Supabase integration panel
    2. Check the migrations panel and push any pending migration scripts
    3. Log into the [Supabase dashboard](https://supabase.com/dashboard) and verify your project is active (not paused). If paused, click "Restore" to reactivate it
    4. Under Authentication > URL Configuration, confirm your redirect URLs match your app's URLs

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    My app is stuck after connecting Supabase. Verify the Supabase client is initialized with correct environment variables. If there are connection errors, show me what is wrong.
    ```

    <Note>
      Migration scripts cannot be pushed via chat. When a script is generated, a popup appears with a **Push to Supabase** button. Click it to apply the script.

      See <a href="/build/connectors/supabase/push-migration-scripts">Push Migration Scripts</a> and <a href="/build/connectors/supabase/redirect-urls">Redirect URLs</a> for details.
    </Note>
  </Accordion>

  <Accordion title="RLS blocking queries (empty results or policy errors)">
    **What you see:** Queries return empty results even though data exists, or you see "new row violates row-level security policy" errors.

    **Why it happens:** Row Level Security (RLS) is enabled on the table but no policies have been created, or existing policies do not match the current user's authentication state.

    **How to fix it:**

    1. Open the Supabase dashboard and navigate to the table in question
    2. Check the "Policies" tab to see if any RLS policies exist
    3. If no policies exist, create policies that allow authenticated users to read rows and modify only their own rows
    4. If policies exist, verify they match the expected user role and auth state

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    The [TABLE_NAME] table has RLS enabled but queries return empty results. Create RLS policies that allow authenticated users to read, insert, update, or delete only their own rows (where user_id matches auth.uid()). Explain each policy you create.
    ```

    See <a href="/build/connectors/supabase/overview">Supabase Integration</a>.
  </Accordion>

  <Accordion title="JWT token errors">
    **What you see:** Errors like "JWT expired", "invalid JWT", or "no API key found in request" when making Supabase calls.

    **Why it happens:** The Supabase client is not initialized correctly, the anon key is missing or incorrect, or the user's session token has expired and is not being refreshed.

    **How to fix it:**

    1. Open Code View and verify that `SUPABASE_URL` and `SUPABASE_ANON_KEY` environment variables are set correctly
    2. Check that the Supabase client is imported and initialized in your code
    3. Make sure your app refreshes the auth session automatically so expired tokens get renewed
    4. If tokens keep expiring, redirect the user to the login page instead of showing a broken state

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    Supabase calls are failing with JWT token errors. Make sure the Supabase client uses SUPABASE_URL and SUPABASE_ANON_KEY from environment variables. Add automatic auth session refresh so expired tokens get renewed. If the session expires, redirect the user to the login page instead of showing a broken state.
    ```

    See <a href="/build/connectors/supabase/overview">Supabase Integration</a>.
  </Accordion>

  <Accordion title="Redirect URL mismatch (auth callback failing)">
    **What you see:** After social login (Google, GitHub), users see a "redirect URL mismatch" error or get stuck on a blank page instead of returning to the app.

    **Why it happens:** The redirect URL configured in the Supabase dashboard does not match the URL your app is actually using. This is especially common when switching between localhost and a deployed domain.

    **How to fix it:**

    1. Go to the Supabase dashboard > Authentication > URL Configuration > Redirect URLs
    2. Add your app's callback URL (for example, `https://your-app.builtwithrocket.new/auth/callback`)
    3. For local development, also add `http://localhost:[PORT]/auth/callback`
    4. Make sure the auth callback handler in your code extracts the session from the URL hash correctly

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    Social login is failing with a redirect URL mismatch. Update the auth callback handler to use the correct redirect URL. For development, use http://localhost:[PORT]/auth/callback. Remind me to add this URL to the Supabase dashboard under Authentication > URL Configuration > Redirect URLs. Handle the auth callback properly by extracting the session from the URL hash.
    ```

    See <a href="/build/connectors/supabase/redirect-urls">Redirect URLs</a>.
  </Accordion>

  <Accordion title="Social auth not working">
    **What you see:** Clicking "Sign in with Google" (or another social provider) does nothing, shows an error, or redirects to a broken page.

    **Why it happens:** The social auth provider is not configured in the Supabase dashboard, the OAuth client ID and secret are missing, or the callback URL is not registered with the provider.

    **How to fix it:**

    1. In the Supabase dashboard, go to Authentication > Providers and enable the social provider you want (e.g., Google, GitHub)
    2. Enter the OAuth client ID and client secret from the provider's developer console
    3. Copy the callback URL from Supabase and add it to the provider's authorized redirect URIs
    4. In your Rocket app, verify the login button calls the correct Supabase social auth method

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    Social login with [PROVIDER] is not working. Make sure the signInWithOAuth call uses the correct provider name and that the auth callback handler processes the response properly.
    ```

    See <a href="/build/connectors/supabase/social-auth">Social Auth</a> and <a href="/build/connectors/supabase/google-sign-in">Google Sign-In</a>.
  </Accordion>

  <Accordion title="Storage bucket permission errors">
    **What you see:** File uploads fail with "new row violates row-level security policy" or "Bucket not found" errors.

    **Why it happens:** The storage bucket does not exist, its RLS policies are not configured, or the bucket is set to private without the correct access policies.

    **How to fix it:**

    1. In the Supabase dashboard, go to Storage and confirm the bucket exists
    2. If the bucket is private, add RLS policies to allow uploads and downloads for authenticated users
    3. If you need public access (e.g., for profile images), set the bucket to public
    4. Verify the file path format in your upload code matches what the policies expect

    See <a href="/build/connectors/supabase/storage-buckets">Storage Buckets</a>.
  </Accordion>
</AccordionGroup>

## Stripe issues

<AccordionGroup>
  <Accordion title="Webhook not firing">
    **What you see:** Stripe checkout completes successfully, but your app never updates the order status or subscription because the webhook endpoint is not receiving events.

    **Why it happens:** The webhook endpoint URL is incorrect in the Stripe dashboard, the webhook signing secret does not match, or the endpoint is not publicly accessible.

    **How to fix it:**

    1. In the Stripe dashboard, go to Developers > Webhooks and verify the endpoint URL points to your deployed app (e.g., `https://your-app.builtwithrocket.new/api/webhooks/stripe`)
    2. Copy the webhook signing secret and add it as an environment variable in your app
    3. Make sure the endpoint parses the raw request body (not JSON-parsed) for signature verification
    4. For local testing, use the Stripe CLI: `stripe listen --forward-to localhost:[PORT]/api/webhooks/stripe`

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    Stripe webhooks are not reaching the app after checkout. Verify the webhook endpoint is correctly set up at /api/webhooks/stripe. Check that the endpoint parses the raw request body for signature verification. Log incoming webhook events for debugging.
    ```

    See <a href="/build/connectors/stripe">Stripe Integration</a>.
  </Accordion>

  <Accordion title="Test mode vs. live mode confusion">
    **What you see:** Payments fail with "No such product" or "Invalid API key" errors. Or test transactions appear in the live dashboard unexpectedly.

    **Why it happens:** The app is using test keys (`sk_test_...`) with live mode products, or live keys (`sk_live_...`) with test mode products. Test and live environments are completely separate in Stripe.

    **How to fix it:**

    1. Check your environment variables: `STRIPE_SECRET_KEY` and `STRIPE_PUBLISHABLE_KEY`
    2. For development, make sure both keys start with `sk_test_` and `pk_test_`
    3. Verify that product and price IDs were created in the same environment (test or live) as your keys
    4. When going to production, swap to live keys and recreate products in live mode

    See <a href="/build/connectors/stripe">Stripe Integration</a>.
  </Accordion>

  <Accordion title="Checkout redirect not working">
    **What you see:** After completing Stripe checkout, the user is not redirected back to the app. They stay on the Stripe page or see a broken link.

    **Why it happens:** The `success_url` or `cancel_url` in the checkout session uses a relative path instead of an absolute URL, or the domain is not configured in Stripe settings.

    **How to fix it:**

    1. Open your checkout session creation code and verify `success_url` and `cancel_url` use absolute URLs (e.g., `https://your-app.builtwithrocket.new/success`)
    2. For development, use `http://localhost:[PORT]/success`
    3. Include any required query parameters like `session_id={CHECKOUT_SESSION_ID}`
    4. Test both the success and cancel flows

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    After Stripe checkout, users are not redirected back to the app. Update the success_url and cancel_url in the checkout session creation to use absolute URLs. Include the session_id query parameter so the success page can retrieve the session details.
    ```

    See <a href="/build/connectors/stripe">Stripe Integration</a>.
  </Accordion>

  <Accordion title="Subscription status not updating">
    **What you see:** A user completes a subscription checkout but their account still shows as "free" or "inactive". The subscription status never changes.

    **Why it happens:** The webhook handler is not processing the relevant Stripe events (like `checkout.session.completed` or `customer.subscription.updated`), or the database is not being updated when the webhook fires.

    **How to fix it:**

    1. Verify your webhook endpoint is receiving events (check Stripe dashboard > Developers > Webhooks > Recent events)
    2. Confirm your handler processes these events: `checkout.session.completed`, `customer.subscription.updated`, `customer.subscription.deleted`
    3. Check that the handler updates the user's subscription status in your database after processing each event
    4. Add logging to your webhook handler to trace what happens when each event arrives

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    After Stripe checkout, the user's subscription status is not updating. Check the webhook handler at /api/webhooks/stripe. Make sure it processes checkout.session.completed and customer.subscription.updated events. When these events fire, update the user's subscription status in the database. Add logging so I can see what events are received.
    ```

    See <a href="/build/connectors/stripe">Stripe Integration</a>.
  </Accordion>
</AccordionGroup>

## Email issues (Resend/SendGrid)

<AccordionGroup>
  <Accordion title="Emails not sending (API key missing or sender not verified)">
    **What you see:** Email sending fails with "unauthorized", "API key missing", "authentication failed", or "sender address not verified" errors.

    **Why it happens:** The API key environment variable is not set, is misspelled, or the "from" email address or domain has not been verified in the email provider's dashboard.

    **How to fix it:**

    1. Open Code View and verify your email API key environment variable is set (e.g., `RESEND_API_KEY` or `SENDGRID_API_KEY`)
    2. Confirm the API key is only accessed server-side to avoid exposing it
    3. For development with Resend, use `onboarding@resend.dev` as the sender address
    4. For production, verify your custom domain in the provider's dashboard by adding the required DNS records

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    Email sending is failing. Make sure API calls happen on the server, not the client. For development, use "onboarding@resend.dev" as the sender. Add error handling that logs the specific failure reason.
    ```

    See <a href="/build/connectors/resend">Resend Integration</a> and <a href="/build/connectors/sendgrid">SendGrid Integration</a>.
  </Accordion>

  <Accordion title="Emails going to spam">
    **What you see:** Emails are sent successfully (no errors) but recipients find them in their spam or junk folder.

    **Why it happens:** The sending domain lacks proper authentication records (SPF, DKIM, DMARC), the email content triggers spam filters, or the sender reputation is low.

    **How to fix it:**

    1. In your domain's DNS settings, add the SPF, DKIM, and DMARC records provided by your email service
    2. Use a recognizable "from" name (e.g., "YourApp Team") instead of a generic address
    3. Avoid spam trigger words, all-caps, and excessive punctuation in subject lines
    4. Include a plain-text version alongside HTML and add an unsubscribe link

    See <a href="/build/connectors/resend">Resend Integration</a> and <a href="/build/connectors/sendgrid">SendGrid Integration</a>.
  </Accordion>

  <Accordion title="Auth emails not branded (Supabase SMTP not configured)">
    **What you see:** Authentication emails (confirmation, password reset, magic link) arrive with default Supabase branding instead of your app's branding, or they come from a generic Supabase email address.

    **Why it happens:** Supabase uses its own built-in email service by default. To customize auth emails, you need to configure a custom SMTP provider (like Resend) in the Supabase dashboard.

    **How to fix it:**

    1. Set up a Resend account and verify your domain
    2. In the Supabase dashboard, go to Project Settings > Authentication > SMTP Settings
    3. Enable "Custom SMTP" and enter your Resend SMTP credentials (host: `smtp.resend.com`, port: 465, username: `resend`, password: your API key)
    4. Customize your email templates under Authentication > Email Templates

    See <a href="/build/connectors/resend">Resend Integration</a> and <a href="/build/connectors/supabase/email-templates">Email Templates</a>.
  </Accordion>
</AccordionGroup>

## AI integration issues (OpenAI/Anthropic/Gemini)

<AccordionGroup>
  <Accordion title="Rate limit errors">
    **What you see:** AI API calls fail with "429 Too Many Requests" or "rate limit exceeded" errors, especially when multiple users trigger AI features simultaneously.

    **Why it happens:** The app is sending too many requests to the AI provider within their rate limit window. Free-tier API keys have stricter limits.

    **How to fix it:**

    1. Add a loading state that disables the trigger button while a request is in progress
    2. Debounce user-triggered AI calls so rapid clicks do not send multiple requests
    3. Implement exponential backoff retry on 429 errors (wait 1s, then 2s, then 4s)
    4. Cache recent AI responses to avoid duplicate requests for the same input
    5. If you hit limits frequently, consider upgrading your API plan with the provider

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    AI API calls are hitting rate limits. Add these safeguards: debounce user-triggered AI calls, add a loading state that disables the button while a request is in progress, implement exponential backoff retry on 429 errors, show a user-friendly message saying "AI is busy, please try again in a moment", and cache recent AI responses to avoid duplicate requests.
    ```

    See <a href="/build/connectors/openai">OpenAI</a>, <a href="/build/connectors/anthropic">Anthropic</a>, and <a href="/build/connectors/gemini">Gemini</a>.
  </Accordion>

  <Accordion title="Token limit exceeded">
    **What you see:** AI responses are cut off mid-sentence or you see "maximum context length exceeded" errors.

    **Why it happens:** The input (prompt plus context) exceeds the model's token limit. This often happens when sending entire pages or large documents as context.

    **How to fix it:**

    1. Truncate input text to a reasonable character limit before sending
    2. Show a warning if the user's input is too long
    3. For long content, split it into chunks, process each chunk, then combine the results
    4. Consider using a model with a larger context window

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    AI calls are failing because the input exceeds the token limit. Truncate the input to a maximum of [MAX_CHARS] characters before sending. Show a warning if the user's input is too long. If summarizing long content, split it into chunks, summarize each chunk, then combine the summaries.
    ```

    See <a href="/build/connectors/openai">OpenAI</a>, <a href="/build/connectors/anthropic">Anthropic</a>, and <a href="/build/connectors/gemini">Gemini</a>.
  </Accordion>

  <Accordion title="Model not responding">
    **What you see:** The AI feature shows a permanent loading spinner. No response comes back and no error is displayed.

    **Why it happens:** The API call has no timeout configured, the API key is invalid, the model name is misspelled, or the AI provider is experiencing an outage.

    **How to fix it:**

    1. Verify the API key environment variable is set and correct
    2. Check the model name is spelled correctly (e.g., `gpt-4o` not `gpt4o`)
    3. Set a 30-second timeout on the API call
    4. Add a "Cancel" button so users can abort a stuck request
    5. Check the provider's status page to rule out outages

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    The AI feature hangs with a loading spinner and never returns a result. Set a 30-second timeout on the API call. If it times out, show "AI is taking too long to respond. Please try again." Add a Cancel button that aborts the request. Log the full error details for debugging.
    ```

    See <a href="/build/connectors/openai">OpenAI</a>, <a href="/build/connectors/anthropic">Anthropic</a>, and <a href="/build/connectors/gemini">Gemini</a>.
  </Accordion>
</AccordionGroup>

## Deployment issues

<AccordionGroup>
  <Accordion title="Launch button is greyed out">
    **What you see:** The **Launch** button is greyed out and cannot be clicked.

    **Why it happens:** There is a pending error in the chat that has not been resolved, or the Rocket agent is in a sleeping state.

    **How to fix it:**

    1. Check the chat for any unresolved errors or pending messages. Resolve or dismiss them before trying to launch.
    2. If the agent appears inactive, send a message in chat to wake it, then try launching again.

    See <a href="/build/launch-web/launch-your-site">Launch Web App</a>.
  </Accordion>

  <Accordion title="Environment variables missing in production">
    **What you see:** The app deploys but features break in production. Database queries fail, payments do not work, or emails do not send.

    **Why it happens:** The **Production** tab in the Environment panel is empty or missing values. Rocket keeps staging and production values separate, so setting a variable while building does not automatically apply it to production.

    **How to fix it:**

    1. Click your task name in the top-left of the editor, then click **Settings**
    2. Under Task, click **Environment**
    3. Switch to the **Production** tab and verify all required keys have real values set
    4. Relaunch the app after updating any variables

    See <a href="/build/editor/env-variables">Environment Variables</a>.
  </Accordion>

  <Accordion title="Custom domain not resolving">
    **What you see:** After setting up a custom domain, visiting it shows "site not found", a DNS error, or the wrong page.

    **Why it happens:** DNS records are not configured correctly, or DNS changes have not propagated yet (this can take up to 48 hours).

    **How to fix it:**

    1. Follow the DNS setup instructions shown in Rocket's custom domain flow exactly
    2. Wait up to 48 hours for DNS propagation
    3. Use a DNS lookup tool (like [dnschecker.org](https://dnschecker.org)) to verify records are set correctly

    See <a href="/build/launch-web/custom-domain">Connect Custom Domain</a>.
  </Accordion>

  <Accordion title="Deployed app behaves differently from the preview">
    **What you see:** The Rocket preview looks correct, but the deployed site shows an older version or behaves differently.

    **Why it happens:** A stale version is live, or environment variables are missing or incorrect in the deployed app.

    **How to fix it:**

    1. Relaunch the app from the **Launch** panel to push the latest version
    2. Check that all required environment variables are set correctly in Code View
    3. Confirm you are viewing the version you intend to deploy

    See <a href="/build/launch-web/launch-your-site">Launch Web App</a>.
  </Accordion>
</AccordionGroup>

## Web app issues

<AccordionGroup>
  <Accordion title="Blank white screen">
    **What you see:** The app loads but shows nothing - just a blank white page.

    **Why it happens:** A JavaScript error is preventing the page from rendering.

    **How to fix it:**

    1. Open the browser console (F12 → Console tab) and look for error messages
    2. Copy the error and paste it into Rocket chat - Rocket will diagnose and fix it

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    My app shows a blank white screen. Check the root component for JavaScript errors and fix any issues preventing the page from rendering.
    ```
  </Accordion>

  <Accordion title="Navigation links go to a 404 page">
    **What you see:** Clicking a nav link lands on a "404 - Page Not Found" error.

    **Why it happens:** The linked page doesn't exist yet, or the route path is incorrect.

    **How to fix it:**

    1. Open code view and check the `app/` directory - verify the page file exists at the expected path
    2. If it's missing, ask Rocket: "Create a \[page name] page" to generate it
    3. If the file exists but the route is wrong, check the folder name matches the URL slug
  </Accordion>

  <Accordion title="API route returns a 500 error">
    **What you see:** A feature that calls a backend API route shows an error or fails silently.

    **Why it happens:** A missing environment variable, broken database query, or unhandled edge case in the route handler.

    **How to fix it:**

    1. Open browser DevTools (F12 → Network tab), find the failing request, and check the response body for the specific error
    2. Share the error message with Rocket in chat for a targeted fix

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    The API route at [path] is returning a 500 error. Add error handling and logging so I can see what's failing.
    ```
  </Accordion>

  <Accordion title="Dark mode doesn't apply to all elements">
    **What you see:** Toggling dark mode leaves some components with hardcoded light colors.

    **Why it happens:** Some components use hardcoded color values instead of theme-aware Tailwind tokens.

    **How to fix it:**

    1. Identify which components look wrong in dark mode by toggling it on in the preview
    2. Ask Rocket to update those components to use Tailwind's theme-aware color tokens

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    Fix dark mode for all components - make sure every element uses theme-aware color tokens and respects the dark mode toggle.
    ```
  </Accordion>
</AccordionGroup>

## Mobile app issues

<AccordionGroup>
  <Accordion title="Simulator shows a grey screen">
    **What you see:** The device simulator shows a grey or blank screen instead of your app.

    **Why it happens:** A widget build error is preventing the UI from rendering.

    **How to fix it:**

    1. Check the error overlay in the simulator for details
    2. Copy the error message and paste it into Rocket chat - Rocket will fix the widget tree

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    The simulator shows a grey screen. Diagnose the widget build error and fix the root cause.
    ```
  </Accordion>

  <Accordion title="Navigation doesn't work as expected">
    **What you see:** Tapping a button does nothing, or the wrong screen opens.

    **Why it happens:** The route may not be defined in `router.dart`, or the navigation call uses an incorrect path.

    **How to fix it:**

    1. Open code view and check `router.dart` to verify the target route is defined
    2. Confirm the navigation call in the button handler uses the same route name or path as the definition

    **Prompt to paste in Rocket chat:**

    ```plaintext wrap theme={null}
    Fix the navigation from [screen A] to [screen B]. Make sure the route is defined in router.dart and the navigation call uses the correct path.
    ```
  </Accordion>

  <Accordion title="Images or assets don't load">
    **What you see:** Image widgets show broken placeholders or error icons.

    **Why it happens:** Assets must be declared in `pubspec.yaml` and placed in the `assets/` directory. A missing declaration or wrong file path causes the load to fail.

    **How to fix it:**

    1. Open code view and verify the asset path in the widget matches the file location
    2. Check `pubspec.yaml` to confirm the asset is listed under `flutter: assets:`
    3. Ask Rocket to fix the asset reference if it's incorrect
  </Accordion>

  <Accordion title="App crashes on launch">
    **What you see:** The simulator shows an immediate crash or error overlay on startup.

    **Why it happens:** A missing dependency, misconfigured plugin, or broken initialization in `main.dart`.

    **How to fix it:**

    Tell Rocket the exact error message from the simulator overlay - it will fix the initialization issue.
  </Accordion>
</AccordionGroup>

## Preview and editor issues

<AccordionGroup>
  <Accordion title="Changes not showing in preview">
    **What you see:** You made changes in Rocket chat, but the preview panel still shows the old version of your app.

    **Why it happens:** The build may not have completed yet, the preview needs a manual refresh, or there was an error during code generation that prevented the change from applying.

    **How to fix it:**

    1. Wait 1-2 minutes for the build to complete
    2. Refresh the preview panel
    3. Check the chat history for any error messages during code generation
    4. If the issue persists, use the `/fix` command or ask Rocket to regenerate the changes

    See <a href="/build/editor/preview">Preview</a>.
  </Accordion>

  <Accordion title="Visual Edit not working">
    **What you see:** Clicking on elements in the preview does not open the Visual Edit panel, or changes made through Visual Edit do not apply.

    **Why it happens:** Visual Edit is a web-only feature (not available on the iOS app). Additionally, some dynamically generated elements or deeply nested components may not be selectable.

    **How to fix it:**

    1. Make sure you are using Rocket on a web browser, not the iOS app
    2. Try clicking on a different, simpler element to confirm Visual Edit is active
    3. For elements that are not selectable, use the chat interface instead to describe the change you want
    4. If Visual Edit was working before but stopped, refresh the page

    See <a href="/build/editor/visual-edit">Visual Edit</a>.
  </Accordion>

  <Accordion title="Figma import issues (permissions, rate limits, design guidelines)">
    **What you see:** Figma import fails, generates unexpected results, or you receive "rate limit" or "permission denied" errors.

    **Why it happens:** The Figma link may not have view access enabled, you may have exceeded the Figma API rate limit, or the design does not follow Rocket's recommended design guidelines.

    **How to fix it:**

    1. In Figma, click Share and verify that "Anyone with the link" can view the file
    2. If you see a rate limit error, wait a few minutes and try again. See <a href="/build/create/figma/rate-limit-errors">Rate Limit Errors</a> for details
    3. Review the <a href="/build/create/figma/figma-design-guidelines/design-guidelines">Figma Design Guidelines</a> to ensure your design follows best practices
    4. Common design issues include ungrouped layers, components outside screen boundaries, and invisible components

    **Prompt to paste in Rocket chat (after a successful but incorrect import):**

    ```plaintext wrap theme={null}
    The Figma import generated code that does not match my design. Review the generated components and fix the layout, spacing, and styling to match the original Figma design more closely.
    ```

    See <a href="/build/create/figma/overview">Figma Overview</a>, <a href="/build/create/figma/get-your-figma-url">Get Your Figma URL</a>, and <a href="/build/create/figma/figma-design-guidelines/design-guidelines">Design Guidelines</a>.
  </Accordion>
</AccordionGroup>

## Intelligence issues

<AccordionGroup>
  <Accordion title="Intelligence wizard is not completing">
    **What you see:** The wizard gets stuck, errors out, or does not advance past a step.

    **How to fix it:**

    1. Ensure your business URL is a valid, publicly accessible URL (e.g., `https://yourcompany.com`)
    2. If the competitor URL step fails, verify each URL is a real, publicly accessible website
    3. Refresh the page and re-open the wizard from the Intelligence card on the home screen - your progress may be saved
    4. If the issue persists, try a different browser or clear your cache

    See <a href="/intelligence/quick-start">Intelligence Quick Start</a> for the expected wizard flow.
  </Accordion>

  <Accordion title="Not receiving Intelligence briefs">
    **What you see:** You completed the wizard and approved setup, but no briefs have arrived.

    **Why it happens:** The initial data collection can take 1 to 3 hours. Brief delivery is also controlled by your chosen frequency (daily, weekly, or monthly).

    **How to fix it:**

    1. Check your notification channels - confirm Push notifications are enabled in your browser and the correct email is set in your account
    2. Allow 1 to 3 hours after approval for the initial data collection to complete
    3. Check the **Intelligence** panel in your sidebar - signals and briefs appear there directly, even if push notifications are off
    4. Verify your brief frequency setting. If you selected Weekly, your first brief arrives at the end of your first monitoring week

    See <a href="/intelligence/feeds/following">Following feed</a> to navigate your Intel feed directly.
  </Accordion>

  <Accordion title="No signals appearing in the dashboard">
    **What you see:** The Intelligence dashboard is empty or shows no signals after setup.

    **Why it happens:** Initial data collection is in progress, the competitor URLs added are not publicly crawlable, or no meaningful changes have occurred since monitoring began.

    **How to fix it:**

    1. Wait at least 24 hours after approval before expecting signals - the initial scan takes time
    2. Verify that the competitor URLs you added are live, public websites (not behind login pages)
    3. Open **All signals feed** from the VIEWS section in the sidebar to see every detected change unfiltered
    4. If a competitor has been quiet, that is itself a valid signal - Intelligence only surfaces changes, not absence of activity

    See <a href="/intelligence/feeds/following">Following feed</a> for how to navigate your Intel feed.
  </Accordion>

  <Accordion title="A competitor URL is not being tracked correctly">
    **What you see:** A competitor you added shows no signals or the profile seems incomplete.

    **How to fix it:**

    1. Confirm the URL you added is the competitor's main public website (not a login page, subdomain, or app URL)
    2. Try re-adding the competitor using their root domain (e.g., `https://competitor.com` rather than `https://competitor.com/product/features`)
    3. New competitors added after the initial wizard run appear in the sidebar. Click **+ Add competitors** in the Intelligence panel to add them

    See <a href="/intelligence/pillars/overview">Company pillars</a> for what Intelligence covers per company.
  </Accordion>
</AccordionGroup>

## Solve issues

<AccordionGroup>
  <Accordion title="Report is too generic or surface-level">
    **What you see:** Solve returns a broad overview instead of the specific, structured analysis you expected.

    **Why it happens:** The question was too broad, lacked context about your situation, or did not specify the expected output format.

    **How to fix it:**

    Add scope and context to your question. Include:

    * Specific companies, markets, or topics to cover
    * Your context (who you are, what decision you're making)
    * The format you want (comparison table, recommendation with trade-offs, ranked list)
    * Constraints (geography, time frame, company size)

    **Before:**

    ```plaintext wrap theme={null}
    Analyze the CRM market.
    ```

    **After:**

    ```plaintext wrap theme={null}
    Compare HubSpot, Salesforce, and Pipedrive for a 20-person B2B SaaS sales team. Cover pricing at 20 seats, ease of onboarding, Slack and Gmail integrations, and mobile app quality. Recommend the best fit with trade-offs.
    ```

    See <a href="/solve/best-practices">Solve best practices</a> for question-framing techniques.
  </Accordion>

  <Accordion title="Solve keeps using prompt intelligence before starting">
    **What you see:** Solve keeps asking follow-up questions through prompt intelligence instead of starting research.

    **Why it happens:** The initial question is ambiguous enough that Solve cannot determine the research scope without more context.

    **How to fix it:**

    Answer the questions in prompt intelligence. They help Solve produce a more targeted report. Alternatively, rewrite your prompt to pre-answer the most likely follow-up questions: who you are, what decision this informs, and what scope you want.

    See <a href="/getting-started/task/prompt-intelligence">Prompt intelligence</a> for how to write prompts that skip them.
  </Accordion>
</AccordionGroup>

## Still stuck?

If you have tried the solutions above and the problem persists, here are more ways to get help.

<CardGroup cols={2}>
  <Card title="FAQs" icon="circle-question" href="/help/faq">
    Browse frequently asked questions about Rocket features, billing, and more.
  </Card>

  <Card title="Debugging Guide" icon="bug" href="/learn/guides/debugging">
    Learn how to describe problems clearly and use prompts to debug your app.
  </Card>

  <Card title="Join Discord" icon="discord" href="https://discord.com/invite/rocket-878500942604038215">
    Get community support and connect with other Rocket builders.
  </Card>

  <Card title="Email Support" icon="envelope" href="mailto:support@rocket.new">
    Reach us at [support@rocket.new](mailto:support@rocket.new) for direct help with your issue.
  </Card>
</CardGroup>
