Skip to content
The original rosewood identity: plum, coral, and bronze.
Work

Vanguard

Vanguard

Two separate engagements across eighteen months. Stencil web components for multiple consuming teams, then a React Native library for iOS and Android.

Off-limits

internal Vanguard processes, team names

Role
Senior Engineer / Product Architect
Period
Dec 2021 – Jun 2023
Engagement
embedded
Tech
Stencil / React Native / TypeScript / Design Systems

Eighteen months across two Vanguard engagements. First web components. Then mobile components. Different teams, different stacks, same pressure: make the interface language hold together across product surfaces.

Engagement one: Stencil

A web component library with several frontend teams consuming it. The internal stack already ran React, Angular, and vanilla JS, so the library needed to meet each team where it was. Stencil gave the system a framework-neutral base: build the component once, consume it from whichever application needed it.

Adoption was the work. Each team had its own theming, release cadence, and composition habits. Storybook held the contract: specs, states, usage notes, and examples in one place, with the shared component kept small enough for consuming teams to trust.

Engagement two: React Native

A React Native component library backing both the iOS and Android apps from a single codebase. Different consumers, different design tokens, different release process.

The mobile work kept parity visible in the code before it could drift in the product. Buttons, sheets, typography, spacing, loading states. Two platforms solving the same problem twice was the pressure.

The component library carried that discipline. Tokens at the bottom, primitives above, composed components above that. Platform-specific code was allowed where it made sense, but it lived inside the component rather than leaking into every consuming screen.

Tokens, primitives, composition

The architecture stayed deliberately plain. Design tokens generated from the source of truth, primitives consumed the tokens, composed components consumed the primitives. Three layers, narrow contracts, predictable change.

The boundary between layer two and layer three was the call to make. Primitives stayed framework-neutral: a Pressable, a Text, a View with the right defaults. Composed components carried product meaning: a transaction row, a chart card, a confirmation sheet. When a component started carrying too much behaviour, it got split before that behaviour hardened into API.

That kept the library maintainable. New screens always ask for variants. The useful answer was usually composition, not another prop.

What lasts

Led three to five engineers across the two engagements. Eighteen months total. Practical system work: small contracts, documented states, and components that consuming teams could adopt without ceremony.

Internal Vanguard process, team names, individual names: not on a public portfolio. The craft side is here. The rest stays internal.

Role
Senior Engineer / Product Architect
Period
Dec 2021 – Jun 2023
Engagement
embedded
Tech
Stencil / React Native / TypeScript / Design Systems

© 2026 Robert Andrew, Melbourne, Australia.

Robert Andrew

Design. Build. Ship. Repeat.