Pillar 1 Experience & Interface
architecture The "By Design" Architecture Framework // Pillar 1

Native by Design

Software must feel indistinguishable from a first-party application, embracing host idioms, runtime characteristics, and native accessibility trees.

shield
Primary Failure Prevented: Clunky, inaccessible, non-idiomatic UX
help
Day 0 Review Question: Does the UI feel native, load instantly, and hook into OS accessibility trees?
verified Core Architectural Tenet

Software must feel indistinguishable from a first-party application on whatever platform it targets, embracing the host’s idioms, runtime characteristics, and accessibility APIs rather than masking them with generic lowest-common-denominator abstractions.

Strategic Intent: The Rejection of Lowest-Common-Denominator Abstractions

Enterprise software has suffered under a persistent illusion: the promise that a single cross-platform framework can wrap every operating system without consequence. In pursuit of code reuse, engineering teams routinely deploy thick web containers, generic gesture parsers, and custom-rendered widgets that ignore the underlying operating system.

The result is universally recognised by users: touch latency, sluggish scrolling, clunky navigation transitions, broken keyboard shortcuts, and interfaces that actively fight host accessibility services like screen readers.

Native by Design mandates that any software surfacing to a user must feel indistinguishable from a first-party application built by the OS vendor itself. Whether targeting the modern open Web, macOS, iOS, Android, Linux, or Windows desktop, the interface must embrace platform-specific runtimes, hardware acceleration, accessibility trees, and interaction conventions.


The Four Architectural Heuristics

1. Idiomatic UX & Navigation

Every platform carries an unwritten contract with its users. Respecting this contract is an architectural constraint, not a superficial styling decision:

  • Platform Navigation Mechanics: On iOS, users expect hierarchical navigation stacks with edge-swipe gestures and large title transitions. On Android, predictive back gestures and system navigation bars govern history traversal. On the Web, deep-linking, browser history manipulation (pushState), and clean URLs without trailing slashes are mandatory.
  • Typography & Dynamic Sizing: Applications must respect host dynamic type scaling (such as iOS Dynamic Type and Android font scaling). Hardcoding fixed pixel dimensions breaks interfaces for users who rely on enlarged text.
  • System Design Language: Align controls with host conventions (e.g. SF Pro and human interface guidelines on Apple platforms, Material 3 on Android, and semantic CSS primitives on the modern Web).

2. First-Class Accessibility

Accessibility cannot be retrofitted through ad-hoc ARIA attributes added before an audit. True accessibility requires native accessibility tree integration:

  • Native Accessibility Trees: Assistive technologies (Apple VoiceOver, Android TalkBack, Windows Narrator, Orca on Linux) communicate directly with operating system accessibility APIs. Custom <div role="button"> constructs often break focus management, focus rings, and state announcements.
  • Semantic Web Standards: On the Web, adhere strictly to WCAG 2.2 AA semantic markup. Standard HTML elements (<button>, <dialog>, <nav>, <main>) provide built-in keyboard navigation, accessible names, and focus management for free.
  • High-Contrast & Motion Preferences: Automatically query and respect host user preferences, including prefers-reduced-motion, prefers-contrast, and system-wide dark/light appearances.

3. Direct Capability Exploitation

Modern operating systems and browsers provide specialized hardware primitives. Applications should exploit these capabilities directly rather than simulating them in userland:

  • Biometrics & Authentication: Integrate hardware-backed authenticators via WebAuthn, Face ID, and Touch ID. Eliminate cumbersome manual credential entry where secure platform enclaves exist.
  • Task Scheduling & Background Execution: Delegate long-running tasks to host background task schedulers (e.g. Background Fetch API on the Web, WorkManager on Android) to preserve device battery and network bandwidth.
  • Hardware Acceleration & Compute: When complex client-side computation is required (e.g., cryptographic operations, audio processing, image filtering), compile high-density routines to WebAssembly or native C/Rust code rather than running unoptimised JavaScript event loops.

4. Headless Cores with Native Surfaces

The desire for multi-platform code-sharing is valid; the mistake is sharing the presentation layer. The architectural prescription for cross-platform velocity is Headless Cores with Native Presentation Surfaces:

  • Core Logic Isolation: Encapsulate state machines, data validation, offline caching, and business logic into headless modules, shared libraries (e.g., Rust, Kotlin Multiplatform, or pure TypeScript), or strongly typed API contracts.
  • Native Surface Adaptors: Wrap the headless core with thin, platform-native presentation layers (SwiftUI on iOS/macOS, Jetpack Compose on Android, React/Web Components on the browser). This guarantees 60/120fps fluid scrolling, zero touch lag, and instant responsiveness.

Anti-Patterns to Reject at Day 0

Anti-PatternManifestationArchitectural Consequence
Canvas-Rendered UIsDrawing custom buttons and text onto HTML <canvas> elements.Complete destruction of screen reader support, native text selection, and browser find-in-page.
Gesture EmulationIntercepting touch events to simulate custom momentum scrolling.Creates perceptible touch lag, jank, and conflicts with OS edge-swipes.
Alien File Pickers & ModalsRebuilding file selectors, date pickers, or system dialogs in custom HTML.Disconnects users from cloud drive mounts, local camera access, and system permission workflows.
Cross-Platform Parity TrapsForcing Android controls to look identical to iOS controls for “brand consistency.”Alienates users on both platforms and creates high maintenance overhead across OS updates.

Day 2 Operational Reality

In production, ignoring Native by Design generates substantial operational overhead:

  • Accessibility Remediation Costs: Retrofitting accessibility into a custom component library costs up to 5x more than building on native semantic primitives from Day 0.
  • Performance Regressions on Low-End Devices: Thick runtime wrappers and unaccelerated client code perform adequately on high-spec developer laptops but fail catastrophically on mid-tier mobile hardware.
  • Browser & OS Update Fragility: Custom-rendered widgets break every time a browser engine or mobile OS releases a major navigation or security update. Native components inherit OS upgrades automatically.

Architecture Review Checklist

Before approving a frontend or client-side architecture, the Review Board must verify:

  1. Does the application use semantic native controls for all interactive elements (buttons, inputs, dialogs, links)?
  2. Does navigation respect the platform’s back button, history stack, and deep-link routing?
  3. Can a visually impaired user navigate the entire application using only the host screen reader and keyboard?
  4. Are client-side biometric or hardware storage capabilities utilized rather than custom session workarounds?
  5. Is shared business logic cleanly separated from native presentation bindings?
Architecture Review Consultation

Review Your Workloads Against Native by Design

Identify latency bottlenecks, security drift, or cost traps in your system before they impact production.