Releases: Snapchat/Valdi
beta-0.1.0
What's new
Build system: WORKSPACE → bzlmod
The standalone Valdi build and the CLI bootstrap now use Bazel's module system (bzlmod) instead of WORKSPACE. Bootstrapped projects generate MODULE.bazel with archive_override entries for Valdi and all sub-modules. A custom Bazel registry ships pre-patched versions of rules_swift, rules_kotlin, rules_nodejs, websocketpp, and others so consumers don't need to carry patches.
Hermetic Android SDK & NDK
Android builds no longer require a locally installed SDK or NDK. Both are downloaded hermetically by Bazel with SHA-256 verification, eliminating version mismatch issues across contributor machines.
App icon generation from SVG
valdi_application() now accepts an SVG source and generates platform-specific icon variants at build time. No more default icons on sample apps. (#99, @scorsin-oai)
WebView native template element
New <webview> element for embedding web content in Valdi views, with platform-native implementations on iOS, Android, and macOS. (#97, @scorsin-oai)
New WebNavigator and WebNavStack classes integrate with the browser History API, enabling push/pop navigation, deep linking, and browser back/forward for Valdi web apps.
Snapshot (pixel) tests
Visual regression testing infrastructure: a headless CLI rasterizes fixture components via SnapDrawing, diffs them pixel-by-pixel against baselines, and produces 3-panel diff images. Runs in both internal and GitHub Actions CI.
Runtime fixes
maskImageproperty on<view>elements- Fix
Value::operator==for cross-subtype string equality - Guard font loader to prevent crashes on unknown font names
ConsoleLogTransformer: use optional chaining for runtime guard- Fix
ANDROID_WITH_JNIdefine for Android platform builds
CI and build improvements
- Expanded CI coverage with Yoga layout tests
- Node 22 registry entry for
rules_nodejs6.2.0 - Disk cache and build optimization for CI
- Shared CI env setup scripts
- Repo hygiene: license detection, area labeler, sensitive file notices
CLI improvements
valdi agent-check: single command for resolve → build → lint → test validationvaldi analyze duplicates: scans modules for reinvented UI patterns, clusters by AST similarity- 10+ new AI skills: navigation, animations, gestures, localization, error handling, component dedup
valdi doctorno longer requires local Android SDK/NDK- Bootstrap defaults to
beta-0.1.0for both Valdi and Valdi_Widgets
Documentation
module.yamlremoved;BUILD.bazelis now the source of truth- Updated setup and contribution docs
Community contributions
- App icon generation from SVG (#99, @scorsin-oai)
- WebView native template element (#97, @scorsin-oai)
- Fix const enum IR emission — skip runtime codegen for
const enumdeclarations (#89, @AugustHagedal) - Fix typo in title label reference (#21, @catalinmiron)
Upgrading
npx @snap/valdi@1.1.0 bootstrapNew projects default to beta-0.1.0. Existing projects: update VALDI_TAG in your MODULE.bazel and the --registry URL in .bazelrc to point at beta-0.1.0.
Known issues
- Yoga 2.x upgrade and SVG runtime support are in progress on
mainbut not included in this tag valdi_widgetsshould usebeta-0.1.0(thebeta-0.0.3tag predates bzlmod and will fail)
beta-0.0.3
This is the third Valdi beta release that contains a number of fixes and improvements:
- New cursor rules for the core framework
- Updated dependencies (boringssl, harfbuzz, protobuf, rules_apple, Android NDK)
Improvements to the CLI published to npm:
- Broader Linux distro support in
doctoranddev_setup - Bootstrapped apps are pinned to beta-0.0.3
- Bootstrapped apps now include cursor rules to help distinguish Valdi from other platforms
- Templates for new modules with
--template(ui_component, cpp_bridge_module, ios_android_bridge_module, ios_android_view_module) - Project name sanitization to avoid reserved keywords and dashes
Getting started:
# Install globally
npm install -g @snap/valdi
# Set up your development environment
valdi dev_setup
# Verify your setup
valdi doctor
# Create a new directory for your project
mkdir my_valdi_app
cd my_valdi_app
# Initialize the project
valdi bootstrap
# Build and install on iOS
valdi install ios
# Or build and install on Android
valdi install android
# Start hot reload for development
valdi hotreload
beta-0.0.2
Add files from GCS archives
beta-0.0.1
Our first beta release.