New · Crow, AI agents for your app's feedback

AI agents that read your app's feedback.

PanelUI Studio collects feedback and support conversations from any React Native or web app. Crow, its AI agent, reads every report, tells you what to fix first, and asks before it acts.

Jobs you can give a Crow, for example: Every Monday, tell me what to fix first. Open an issue when the same bug comes up more than twice. Email me about anything rated one star. Which of our apps needs attention first? How does this month compare with last? List the support conversations still waiting. It reads feedback, support conversations and ratings, and tells the team by email, Slack, or an issue in Linear or GitHub.

Feedback, Support and Announcements are free for one project. Crow is on Pro and Max.

Crow · On Pro and Max

A Crow keeps watch while you build

Crows are AI agents inside Studio. Give one a name, an avatar and a job in plain words, and it reads the feedback so the right thing reaches the right person.

  • It reads what your team reads

    Feedback, support conversations, ratings and announcements, for one project or every project in the workspace.

  • When you ask, or on a schedule

    Chat with it like a teammate, or have it run every day or every week and report what it found.

  • It tells the people who need to know

    An email to teammates, a post in Slack, or on Max an issue in Linear or GitHub. In a chat, each one waits for your approval.

  • A fixed allowance, never a usage bill

    3 Crows and 300 messages a month on Pro, 10 and 1,500 on Max.

See plans

What should we fix first this week?

RookEvery Monday

Read 42 reports from the last 7 days

Three themes, by how many people raised them:

Crash when a workout starts9
Sync takes too long6
Dark mode is hard to read4

The part you'd otherwise build yourself

Installs, identity, conversations, uploads, quotas and a dashboard your team can actually work in.

2 messages · team replied
Two-way conversations
Every message is a thread the SDK can render in your app, not a ticket your users never see again.
inst_7k2p9danonymous
inst_7k2p9d · anonymous
Installs and identity
Anonymous by default, so apps without accounts work. Identify signed-in users when you have them.
devicephoneosios 18.4app2.3.1 (412)screen/workoutlocaleen-GB/workout
/workout · ios 18.4
Context, collected for you
Device, OS, app version, build, screen and locale arrive with the message. The SDK fills them in.
11 files
1 of 3 attached · 11 stored
Screenshots
Uploaded straight from the device to private storage with a signed URL, and shown next to the message.
inbox#42#37#36#34
#42 is next · 4 new
An inbox built for triage
Search, status views and tags, with every submission numbered per project.
pk_3f9a… · public---0/5 per min
5 left this minute
Safe to ship in an app
Publishable keys, per-install tokens, rate limits and monthly quotas.

One project, more than one tool

Each app is a project. Every tool attaches to the same project, key and team, so nothing you set up now is wasted. All three are live on every plan.

  • 18 reportsavg 3.712345
    18 reports · avg 3.7
    FeedbackLive
    Submissions, triage, screenshots and two-way conversations.
  • v2.4 is out
    v2.4 is out · 3 apps
    AnnouncementsLive
    Publish a message once and show it in every app that asks for it.
  • 1 open?
    1 open
    Support inboxLive
    Let a user start the conversation, not just answer yours.

Three steps, then it's running

Your app keeps the UI it already has. Studio takes it from there.

  1. 1

    Install the SDK

    npm install panelui-studio. Works in Expo, bare React Native and on the web — Next.js, React, Vite; anything else can call the HTTP API directly.

  2. 2

    Ship a publishable key

    It's public by design, so it lives in your app. The install registers itself and keeps its own token — no backend of yours, no secret to leak.

  3. 3

    Read and reply from the inbox

    Triage with statuses and tags, see the device and screen, and answer in a thread the app can render.

send-feedback.ts
import { createStudio } from "panelui-studio"

const studio = createStudio({ publishableKey: "pk_…" })

// The install registers itself the first time you call anything.
await studio.feedback.submit({
  message: "The workout screen freezes.",
  rating: 2,
  screen: "/workout/start",
})
thread.tsx
import { useConversation } from "panelui-studio/react"

function Thread({ id }) {
  const { messages, send, isSending } = useConversation(id)

  return messages.map((message) => (
    <Bubble key={message.id} mine={message.author === "user"}>
      {message.body}
    </Bubble>
  ))
}

Pricing

Start free. Upgrade when your app grows.

Compare plans
Free
For trying Studio with one app.

$0 / month

  • 1 project, 1 member
  • 100 reports per month
  • 1 screenshot per report
  • 1 GB of screenshot storage
  • 1 live announcement

Every plan includes

  • Conversations and replies
  • Support inbox
  • In-app announcements
  • Tags and statuses in the inbox
  • Email notifications
  • Data export
  • Delete a user's data on request
Pro
Most popular
For apps in production.

$19 / month

  • 5 projects, 3 members
  • 5,000 reports per month
  • 3 screenshots per report
  • 10 GB of screenshot storage
  • Unlimited live announcements
  • 3 Crow agents, 300 Crow messages a month

Everything in Free, plus

  • Custom metadata
  • Custom feedback forms
  • Webhooks
  • Slack notifications
Max
For teams running several apps.

$49 / month

  • 20 projects, 10 members
  • 25,000 reports per month
  • 3 screenshots per report
  • 50 GB of screenshot storage
  • Unlimited live announcements
  • 10 Crow agents, 1,500 Crow messages a month

Everything in Pro, plus

  • Linear integration
  • GitHub integration
  • Viewer role for read-only teammates
  • Email support within 48 hours

Questions