Skip to content

Latest commit

 

History

History
159 lines (124 loc) · 5.37 KB

File metadata and controls

159 lines (124 loc) · 5.37 KB

Project Configuration

Back to README | Commands | CI/CD

The CLI uses a .revyl/ directory for project configuration:

your-app/
├── .revyl/
│   ├── config.yaml       # Project configuration
│   ├── tests/            # Local test definitions
│   │   └── login-flow.yaml
│   └── .gitignore        # Allowlist: only config.yaml and tests/ are committed
└── ...

config.yaml

project:
  name: "my-app"

build:
  system: Expo
  command: "npx --yes eas-cli build --platform ios --profile development --local --output build/app.tar.gz"
  output: "build/app.tar.gz"

  platforms:
    ios-dev:
      command: "npx --yes eas-cli build --platform ios --profile development --local --output build/dev-ios.tar.gz"
      output: "build/dev-ios.tar.gz"
      app_id: "uuid-of-ios-dev-app"
    ios-ci:
      command: "npx --yes eas-cli build --platform ios --profile preview --local --output build/ci-ios.tar.gz"
      output: "build/ci-ios.tar.gz"
      app_id: "uuid-of-ios-ci-app"
    android-dev:
      command: "npx --yes eas-cli build --platform android --profile development --local --output build/dev-android.apk"
      output: "build/dev-android.apk"
      app_id: "uuid-of-android-dev-app"

hotreload:
  default: expo
  providers:
    expo:
      app_scheme: "my-app"
      port: 8081
      platform_keys:
        ios: ios-dev
        android: android-dev

defaults:
  open_browser: true
  timeout: 600

last_synced_at: "2026-02-10T14:30:00Z"  # Auto-updated on sync operations

Section Reference

Section Description
project Project name
build.system Build system type (Expo, Gradle, Xcode, Flutter, ReactNative)
build.command Default build command
build.output Default build artifact path
build.platforms Named platform configurations with per-platform build commands, artifact paths, and app IDs
hotreload Hot reload provider configuration for revyl dev
defaults Default settings for CLI behavior
last_synced_at Timestamp of last sync operation (auto-managed)

Hot Reload Configuration

Expo

hotreload:
  default: expo
  providers:
    expo:
      port: 8081
      app_scheme: myapp
      platform_keys:
        ios: ios-dev
        android: android-dev
      # use_exp_prefix: true  # If deep links fail with base scheme

Bare React Native (no Expo)

hotreload:
  default: react-native
  providers:
    react-native:
      port: 8081
      platform_keys:
        ios: ios-dev
        android: android-dev

Bare React Native does not require app_scheme. The device loads the JS bundle directly over the Revyl relay to Metro.

revyl dev resolves builds within the selected app stream (platform_keys / build.platforms), and prefers builds whose metadata branch matches your current git branch.

Team usage: The platform_keys (e.g. ios: ios-dev) map to build.platforms.<key>.app_id, which is a shared app container for your team. All developers' revyl build upload commands push to this container, tagged with their git branch. revyl dev automatically picks the right build for your branch. For JS projects (Expo/React Native), the binary changes infrequently so sharing works well. For native projects (Swift/Kotlin), each code change needs a fresh build -- branch-specific uploads become essential.

Defaults

Key Type Default Description
open_browser bool true Auto-open browser for test open, device start --open, etc.
timeout int 600 Default timeout in seconds for device sessions and test runs

Project Settings

revyl config path                   # Show config file location
revyl config show                   # Display current configuration
revyl config set open-browser false # Disable auto-opening browser
revyl config set timeout 900        # Set default timeout

Environment Variable Overrides

These environment variables override CLI defaults and config values:

Variable Description
REVYL_API_KEY API key for authentication (overrides stored credentials)
REVYL_BACKEND_URL Override the backend API URL (e.g. http://127.0.0.1:8000)
REVYL_APP_URL Override the frontend app URL
REVYL_BACKEND_PORT Override the auto-detected backend port in --dev mode
REVYL_PROJECT_DIR Override the project directory for MCP server

.gitignore Defaults

The .revyl/.gitignore generated by revyl init uses an allowlist approach: everything inside .revyl/ is ignored by default except for the shared project files listed below.

Committed (shared with your team):

  • .revyl/config.yaml — project configuration
  • .revyl/tests/** — local test definitions
  • .revyl/.gitignore — the ignore rules themselves

Everything else under .revyl/ (device sessions, MCP artifacts, PID files, etc.) is local runtime state and stays out of version control automatically.

Test Aliases

Test aliases are managed as files in .revyl/tests/. Each file maps to a remote test via _meta.remote_id. Legacy tests: entries in config.yaml are automatically migrated to stub files on first use.