Bruno Apps are a powerful way to interact with your APIs directly inside Bruno. You can create a custom UI using HTML/CSS/JS or even React. Instead of only editing requests and reading raw JSON responses, Apps let you create a custom UI that interacts with your APIs inside Bruno.For example, instead of editing a JSON body and reading a raw response, you can build:
A Collection App is attached to an entire collection or folder. It is far more powerful — instead of controlling one request, it can orchestrate the whole collection.Given a collection like:
Authentication Login Refresh TokenUsers Get Users Create UserOrders Get Orders Create Order
A Collection App can chain these together:
Run Login → save token → Run Get Users → Run Get Orders → Render Dashboard
Real-world example: testing an e-commerce API without opening each request manually:
Instead of a raw fetch(), your App calls bru.ctx.submitRequest() or bru.ctx.runRequest(). Bruno then interpolates variables, runs pre/post scripts, executes assertions and tests, records the timeline, and updates the response pane — exactly as if you had pressed Send.See the bru.ctx API reference for the full list of available fields and methods.
Bruno applies a strict Content Security Policy (CSP) to its main app, which restricts things like inline scripts and loading resources from unknown sources.However, your App runs in a sandboxed <webview> that is not subject to Bruno’s CSP. This means you’re free to load any external libraries from a CDN.