Skip to content

Implement artifacts renderer - similar to Claude artifacts/v0 #32

Open
@bracesproul

Description

@bracesproul

Feature: React Code Rendering in Chat Interface

Primary Objective:
Enable users to view and interact with generated React code both in raw form and as a rendered application.

Key Requirements:

  1. Display Location
  • Render the generated React code within the existing ArtifactRenderer section
  • Maintain the current raw code display as the default view
  • Implement a toggle switch between raw code and rendered application views
  1. Performance Optimization
  • Lazy load the rendered application
  • Only instantiate the React rendering when a user explicitly toggles to the rendered view
  • Rationale: Prevents unnecessary rendering operations during code modifications
  1. Technical Implementation
  • Utilize Code Sandbox API for the sandbox environment
  • Preserve visibility of quick actions and custom quick actions in both views
  1. User Interaction Flow
  • Maintain chat functionality while viewing rendered application
  • Disable code highlighting when in rendered view
  • During code streaming (isStreaming true):
    • Pause parsing/rendering of new code chunks
    • Wait for complete code stream before updating render
      Rationale: Prevents partial or invalid renders during code generation
  1. Error Handling
  • Display toast notifications for errors (invalid code, type errors, etc.)
  • Include specific error messages in notifications
  • Maintain last valid rendered state during errors
    Rationale: Ensures users can continue viewing working code while addressing issues
  1. Integration
  • Integrate with Code Sandbox API for secure code execution
  • Do not expose the Code Sandbox editor/IDE they offer, and instead use the existing code renderer component. (using their IDE appears to be expensive from their docs)

The ArtifactCodeV3 interface should be updated with a new field sandboxURL so each revision can store the sandbox URL. This means when a user navigates between different revisions, it should update the rendered code.

Finally, in the final PR, it would be great if you could include a cost analysis so I have a rough idea as to how much it will cost.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions