Skip to content

About

iOS (Swift/SwiftUI) client for Arizona's ?native render target

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Arizona iOS client

The iOS client for Arizona's ?native (JSON) render target -- the native counterpart of the browser client in arizona's assets/js/ and of the Android client. The server holds all state and logic and ships a cached-statics + diff stream over a WebSocket; this thin client rebuilds a SwiftUI view tree from it and relays events back. No app logic runs on the device.

The wire protocol is defined by arizona's include/arizona_wire.hrl and include/arizona_effect.hrl; make check-wire compares this client's codes against them. The client contract is in arizona's docs/native.md.

It is built and tested against the arizona release pinned in .arizona-version, so an arizona change never breaks it on its own: moving to a newer arizona is a PR here that bumps the pin (Renovate opens one per arizona release), and CI checks it.

Layout

  • AzWire -- the protocol logic: op codes (Wire.swift), the node tree, the WebSocket client and its transport. Pure Swift, tested on any platform.
  • AzClientUI -- the vocabulary-agnostic SwiftUI renderer.
  • Sample/ -- an XcodeGen app spec plus XCUITest e2e that open /native/menu and drive each example.

Verify

make test        # swift test (any platform; Docker: swift:6.1)
make arizona     # clone the pinned arizona into _arizona, once per pin
make check-wire  # needs it compiled (`make server` does that)

The sample app and the Simulator e2e need macOS + Xcode + brew install xcodegen. Start arizona's e2e server, then run the tests (the Simulator reaches the host's localhost:4040 directly):

make server      # in another terminal
make e2e

CI lives in .github/workflows/ci.yml. ARIZONA_DIR=../arizona points the targets at another arizona checkout.

License

Apache License 2.0.

About

iOS (Swift/SwiftUI) client for Arizona's ?native render target

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages