Real Time viewing attached RIBs Tree on Browser
- iOS 15+ (aligned with RIBs-iOS 1.0)
- Xcode 15+
- Node.js 20+ (WebSocket relay and browser viewer)
./scripts/verify.shThen run the viewer stack in three terminals:
# 1. WebSocket relay (port 8080)
cd WebSocketServer && npm install && npm start
# 2. Browser tree UI
cd Browser && yarn install && yarn build && open ./public/index.html
# 3. Your iOS app (DEBUG): attach RIBsTreeViewer to the launch router — see belowIn 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()
}
}
}
#endifUse 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 |
- RIBs for iOS: uber/RIBs-iOS (the monorepo
uber/RIBsis Android-focused). - SPM migration tracking: #38 (completed).

