Real Time viewing attached RIBs Tree on Browser
- iOS 15+ (aligned with RIBs-iOS 1.0)
- Xcode 15+
- Node.js 20+ with npm (WebSocket relay and browser viewer)
./scripts/verify.sh
Then run the viewer stack in three terminals:
# 1. WebSocket relay (port 8080) cd WebSocketServer && npm ci && npm start # 2. Browser tree UI cd Browser && npm ci && npm run build && open ./public/index.html # 3. Your iOS app (DEBUG): attach RIBsTreeViewer to the launch router — see below
In Xcode: File → Add Package Dependencies → https://github.com/srea/RIBsTreeViewerClient.git
Or in Package.swift:
dependencies: [ .package(url: "https://github.com/srea/RIBsTreeViewerClient.git", branch: "master"), ], targets: [ .target( name: "YourApp", dependencies: [ .product(name: "RIBsTreeViewerClient", package: "RIBsTreeViewerClient"), ] ), ]
This pulls RIBs-iOS 1.0+ and RxSwift 6.x automatically.
Add the prebuilt binary:
./Products/RIBsTreeViewerClient.xcframework
Regenerate after changing library sources:
make generate_xcframeworks
#if DEBUG import RIBsTreeViewerClient extension AppDelegate { private func startRIBsTreeViewer(launchRouter: Routing) { if #available(iOS 15.0, *) { let viewer = RIBsTreeViewerImpl( router: launchRouter, options: [ .webSocketURL("ws://127.0.0.1:8080"), .monitoringIntervalMillis(1000), ] ) viewer.start() } } } #endif
Use 127.0.0.1 when running the simulator on the same Mac as the WebSocket relay.
| Command | Description |
|---|---|
./scripts/verify.sh |
Full usability check (SPM, Xcode, Browser, WebSocket) |
./scripts/build-spm-package.sh |
Build library via SwiftPM only |
make generate_xcframeworks |
Rebuild Products/*.xcframework |
make browser-build |
Build browser bundle |
make websocket-server |
Start WebSocket relay |
Browser development: cd Browser && npm run watch
- RIBs for iOS: uber/RIBs-iOS (the monorepo
uber/RIBsis Android-focused). - SPM migration tracking: #38 (completed).

