Aurum, set for iOS.

Frank Ruhl Libre · Inter · JetBrains Mono — the system’s three voices, in SwiftUI.

Jar’s design system, generated from the same Figma file as Aurum for Android. Tokens, icons and components stay 1:1 with what ships on main.

37components
59snapshot baselines
89icons × 2 weights
205Code Connect mappings

What shipped in v0.2.3

30 Jul 2026
  • AurumSectionHeaderAction.link now renders neutral-subtle, matching its Figma master (5442:462). The link action was styled identically to the text action — Title/XS-SemiBold in interactive.textPrimaryNormal (brand purple) with a 20pt iconPrimaryNormal chevron — so "View All / See More" links shouted as loudly as the section title and were indistinguishable from a brand text-button. The sheet's action link layer specifies Body/S-Medium in interactive.textNeutralSubtle with a 12pt interactive.iconNeutralSubtle chevron; the component now follows it. text is unchanged and remains the brand-emphasis option. Consumer impact: every existing link action becomes grey and one step smaller — intended, but visible. Mirrors aurum-android 0.3.29.
  • surface.textStaticBlackDisabled / surface.iconStaticBlackDisabled were #121212; Figma and Android say #000000 (same 32% alpha). The token-codegen carried a deliberate "normalize _global-colors/neutral/ black/100 to palette black100 for Android parity" mapping whose premise was false — verified against the live Figma file (alias chain walks to #000000@0.32) and Android's manifest (ships #000000). The mapping also silenced the codegen's own alias-integrity check. Removed: aliases into collections outside the primitives export now inline Figma's resolved value verbatim (and colors/* misses still hard-fail). Surfaced by aurum-mcp's cross-platform token-parity check at merge time.
  • Portal redesigned as a specimen book (tooling/gallery/): the presentation layer is now the locked Aurum-portal design system (tooling/gallery/design.md, shared with aurum-android; platform lens tokens are the only divergence). Newspaper masthead with the version as the issue line, live type specimens rendered from real tokens on the landing page, hairline plates instead of cards, tabular spec sheets on component pages, typographic Do/Don't columns, a build-facts colophon footer, full OKLCH tokenisation (tooling/gallery/tokens.css), in-place copy feedback, and a platform-lens colour drawn from the system's own palette (iOS = visual.blue.600). Verified at 320/375/768/1440 px with no horizontal scroll; light + dark.

Read the full changelog

How a change ships

Snapshots catch it

Any visual change fails its baseline test on the pinned simulator — iPhone 17 Pro, iOS 26.5. The diff is the review.

CI re-records

Approving means adding the record-baselines label. CI re-records on the pinned simulator and commits the new baselines to the PR.

The portal follows

Every merge to main regenerates this site, the manifest and the catalog app — nothing here is written by hand.

One Figma file

Every Figma-backed component carries a .figma.swift mapping — 27 component and 178 icon mappings publish to Dev Mode from each release tag, with exact token references like Aurum.colors.surface.bgPageBase.

Open the Aurum Figma file ↗

Two platforms, one contract

The token layer is generated from the same Figma Variable exports as the Compose library — same names, same values, same icon set. If it exists on Android as Aurum.space.s16, it exists here too.

Agents read this portal as data: the full catalog ships as a manifest at /data/manifest.json.

Browse Aurum for Android ↗

Install

Swift Package Manager, iOS 17 or later. Pin exact — patch releases are the only channel while the library is pre-production.

Package.swift
.package(
  url: "https://github.com/Changejarapp/aurum-ios.git",
  exact: "0.2.3"
),

.product(name: "Aurum", package: "aurum-ios"),
.product(name: "AurumTokens", package: "aurum-ios")  // extension-safe

Contents