Back to Valdi

iOS Runtime Rules

ai-skills/skills/valdi-ios/skill.md

latest2.1 KB
Original Source

iOS Runtime Rules

Applies to: Objective-C/C++ files in /valdi/src/valdi/ios/ and related iOS runtime code

Overview

The Valdi iOS runtime bridges TypeScript/Valdi components to native UIKit views. It's implemented in Objective-C, Objective-C++, and Swift.

Code Style

  • 4-space indentation for Objective-C
  • Follow Apple's Objective-C conventions
  • Use modern Objective-C features (properties, blocks, etc.)

Key Concepts

View Rendering

  • Valdi components map to UIViews
  • View recycling for performance
  • UIKit integration

Platform Bridge

  • Objective-C++ bridge to C++ runtime
  • Memory management (ARC)
  • iOS-specific APIs

Common Patterns

Bazel iOS Targets

python
objc_library(
    name = "valdi_ios",
    srcs = glob(["**/*.m", "**/*.mm"]),
    hdrs = glob(["**/*.h"]),
)

View Implementation

  • Custom UIView subclasses
  • CALayer for advanced rendering
  • Metal for GPU acceleration

Testing

bash
# Run iOS runtime tests (Objective-C)
bazel test //valdi:valdi_ios_objc_test

# Run iOS runtime tests (Swift)
bazel test //valdi:valdi_ios_swift_test

# Run all iOS tests
bazel test //valdi:valdi_ios_objc_test //valdi:valdi_ios_swift_test

Test files are in /valdi/test/ios/ and /valdi/test/ios_swift/

Building

bash
# Build iOS runtime library
bazel build //valdi:valdi_ios

# Test with hello world app
cd apps/helloworld
valdi install ios

Platform-Specific Notes

  1. iOS Version - Be mindful of minimum iOS version
  2. ARC - Automatic Reference Counting (memory management)
  3. Auto Layout - Valdi uses flexbox, not Auto Layout
  4. Metal - GPU rendering for advanced graphics

Important

  • Performance - UIView creation and layout are critical
  • Memory - Understand retain cycles and weak references
  • Threading - Main thread for UI, background for heavy work
  • Lifecycle - UIViewController lifecycle

More Information

  • Runtime source: /valdi/src/valdi/ios/
  • Runtime tests: /valdi/test/ios/ and /valdi/test/ios_swift/
  • Core iOS code: /valdi_core/src/valdi_core/ios/
  • Build config: /valdi/BUILD.bazel
  • Framework docs: /AGENTS.md