Brua

One id for every image your product ships.

Design releases it. Your backend passes the id on. Every screen gets the right file: light or dark, still or moving, in the reader's language. Brua is Norwegian for the bridge, and that is the whole job.

Reference
Reading the asset…
Chosen
Alt text

This block is a real asset from Brua's own edge, read by the web SDK the way your pages would. Your browser's settings pick the file; the toggles only override them.

Three teams touch every image. Brua gives them one thing to hold.

Design releases it

bridgeanimated, 640×400
lightdarkstillmotionnben
Published from Figma, in the change set Spring campaign

Export once. Color schemes, scales and languages are slots on one asset, and Brua makes every size and format.

The backend passes the id on

{ "campaign": "spring", "hero": "bridge" }

An id, like a product code. Your API never stores an image URL, and a new release needs no deploy on your side.

Every screen renders it right

<BruaPicture id="bridge" />

The SDK asks the edge for the right file from what the device says: scheme, motion, size, format and language.

Plan, review, merge, roll back.

Changes travel in change sets, the way code does. An approver merges, and the new release reaches every app through the same id. A bad release is restored with one click.

  • A version that changes an asset's shape is flagged before it reaches a layout.
  • A library asset shows how many projects a merge reaches.
  • Merges can be scheduled for launch day.
Spring campaign
3 changes, opened by Mari
In review
bridgeShape changes from 16:10 to 3:2
6 → 7
app-iconfixed 28×28, light and dark
2 → 3
spinneranimated, Lottie with stills
new
Reaches 4 projects

Built for the stack you have.

Every SDK takes an id and renders the right file. The command line pulls released ids into your build as constants, and the GitHub Actions push new versions from a pipeline.

ReactVueSvelteSwiftUIJetpack ComposeBlazor and .NETCommand lineGitHub Actions
Swift
BruaImage(id: "bridge", client: brua)
Kotlin
BruaImage("bridge", client)
Command line
brua pull --typescript src/assets.ts

Start with one asset.

Brua is in early access while pricing is settled. Tell us what you're building, and we'll set up an organization for you and reply by email.

We keep these details to answer you and set up your organization, and for a year at most. Nothing else, nobody else. Privacy