{"id":35805223,"url":"https://github.com/snapchat/valdi","last_synced_at":"2026-07-01T23:01:43.939Z","repository":{"id":322906754,"uuid":"1091200903","full_name":"Snapchat/Valdi","owner":"Snapchat","description":"Valdi is a cross-platform UI framework that delivers native performance without sacrificing developer velocity.","archived":false,"fork":false,"pushed_at":"2026-07-01T18:54:25.000Z","size":87581,"stargazers_count":16386,"open_issues_count":14,"forks_count":542,"subscribers_count":79,"default_branch":"main","last_synced_at":"2026-07-01T20:26:19.886Z","etag":null,"topics":["android","cross-platform","ios","typescript","valdi"],"latest_commit_sha":null,"homepage":"https://discord.gg/uJyNEeYX2U","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Snapchat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-06T17:33:28.000Z","updated_at":"2026-07-01T18:09:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Snapchat/Valdi","commit_stats":null,"previous_names":["snapchat/valdi"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Snapchat/Valdi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snapchat%2FValdi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snapchat%2FValdi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snapchat%2FValdi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snapchat%2FValdi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Snapchat","download_url":"https://codeload.github.com/Snapchat/Valdi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snapchat%2FValdi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35025983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","cross-platform","ios","typescript","valdi"],"created_at":"2026-01-07T12:56:38.454Z","updated_at":"2026-07-01T23:01:43.934Z","avatar_url":"https://github.com/Snapchat.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Valdi\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE.md)\n[![Platforms](https://img.shields.io/badge/platform-iOS%20%7C%20Android%20%7C%20macOS-lightgrey)](./docs/INSTALL.md)\n[![Status](https://img.shields.io/badge/status-beta-yellow)]()\n[![Discord](https://img.shields.io/discord/1285677307163574322?color=7289da\u0026label=Discord\u0026logo=discord\u0026logoColor=white)](https://discord.gg/uJyNEeYX2U)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue?logo=typescript)](https://www.typescriptlang.org/)\n[![Documentation](https://img.shields.io/badge/docs-available-brightgreen)](./docs/README.md)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](./CONTRIBUTING.md)\n\n\u003e [!NOTE]\n\u003e **Beta Status:** Valdi has been widely used in Snap's production apps for the last 8 years. We're calling this a beta because our tools and documentation need more battle testing in the open source world. Valdi will exit beta when we're happy with the developer experience.\n\n**Valdi is a cross-platform UI framework that delivers native performance without sacrificing developer velocity.** Write your UI once in declarative TypeScript, and it compiles directly to native views on iOS, Android, and macOS—no web views, no JavaScript bridges. \n\n## Quick Example\n\nA basic Valdi component:\n\n```tsx\nimport { Component } from 'valdi_core/src/Component';\n\nclass HelloWorld extends Component {\n  onRender() {\n    const message = 'Hello World! 👻';\n    \u003cview backgroundColor='#FFFC00' padding={30}\u003e\n      \u003clabel color='black' value={message} /\u003e\n    \u003c/view\u003e;\n  }\n}\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/docs/assets/start-about/IMG_1445.jpg\" width=\"400\" alt=\"Hello World example running on iOS\" /\u003e\n\u003c/p\u003e\n\n## Quick Start\n\n**Prerequisites:** Xcode (macOS only) - everything else is automatic!\n\n```bash\n# Install Valdi CLI\nnpm install -g @snap/valdi\n\n# One-command setup (installs all dependencies)\nvaldi dev_setup\n\n# Create your first project\nmkdir my_project \u0026\u0026 cd my_project\nvaldi bootstrap\nvaldi install ios  # or android\n```\n\n\u003e [!TIP]\n\u003e **Editor Extensions:** For the best development experience, install the [Valdi VSCode/Cursor extensions](./docs/INSTALL.md#vscodecursor-setup-optional-but-recommended) for syntax highlighting, debugging, and device logs during hot reload.\n\n## Quick Links\n\n- [Getting Started Guide](./docs/INSTALL.md)\n- [Documentation](./docs/README.md)\n- [Codelabs](./docs/docs/start-code-lab.md)\n- [API Reference](./docs/api/api-quick-reference.md)\n- [Frequently Asked Questions](./docs/docs/faq.md)\n- [Component Library](https://github.com/Snapchat/Valdi_Widgets)\n- [GitHub Discussions](https://github.com/Snapchat/Valdi/discussions)\n- [Roadmap](./ROADMAP.md)\n\n## Example Apps\n\nThe [`apps/`](./apps) directory contains runnable examples:\n\n| App | What it shows |\n|-----|---------------|\n| [helloworld](./apps/helloworld) | Minimal component — the fastest way to get something on screen |\n| [navigation_example](./apps/navigation_example) | Screen navigation patterns |\n| [managed_context_example](./apps/managed_context_example) | Sharing state across components with managed context |\n| [valdi_gpt](./apps/valdi_gpt) | AI-driven dynamic UI — Valdi rendering UI described at runtime |\n| [cli_example](./apps/cli_example) | Building a Valdi CLI application |\n| [benchmark](./apps/benchmark) | Performance benchmarks |\n\n## Why Choose Valdi?\n\nValdi is a cross-platform UI framework designed to solve the fundamental problem of cross-platform development: velocity vs. runtime performance. For 8 years, it has powered a large portion of Snap's production apps.\n\n### True Native Performance\n\nUnlike frameworks that rely on web views or JavaScript bridges, Valdi compiles declaratively rendered TypeScript components into platform-native views. Valdi also includes several other performance advantages:\n\n- **[Automatic view recycling](./docs/docs/performance-view-recycling.md)** - Global view pooling system reuses native views across all screens, dramatically reducing inflation latency\n- **Optimized component rendering** - Components re-render independently without triggering parent re-renders, enabling fast incremental updates\n- **Optimized layout engine** - C++ layout engine runs on the main thread with minimal marshalling overhead\n- **Viewport-aware rendering** - Only visible views are inflated, making infinite scrolling performant by default\n\nLearn more in our [Performance Optimization Guide](./docs/docs/performance-optimization.md).\n\n### Developer Experience Built for Speed\n\nValdi eliminates the traditional compile-test-debug cycle that slows native development:\n\n- **Instant hot reload** - See changes in milliseconds on iOS, Android, or desktop without recompiling\n- **[Full VSCode debugging](./docs/docs/workflow-hermes-debugger.md)** - Set breakpoints, inspect variables, profile performance, and capture heap dumps directly in VSCode\n- **Familiar syntax** - TSX components with TypeScript for type safety\n\n### Flexible Adoption Model\n\nValdi integrates easily into existing apps - start small and scale as needed:\n\n- **[Embed Valdi in native](./docs/docs/native-bindings.md)** - Drop Valdi components into existing UIKit or Android view hierarchies\n- **[Embed native in Valdi](./docs/docs/native-customviews.md)** - Use platform-specific views within Valdi layouts via `\u003ccustom-view\u003e`\n- **[Polyglot modules](./docs/docs/native-polyglot.md)** - Write performance-critical code in C++, Swift, Kotlin, or Objective-C with type-safe bindings to TypeScript\n- **[Full-stack architecture](./docs/docs/advanced-full-stack.md)** - Build entire features in Valdi with worker threads for background processing, eliminating platform-specific bridge code\n\n### Deep Native Integration\n\nValdi generates type-safe bindings between TypeScript and native platforms:\n\n- **[Automatic code generation](./docs/docs/native-annotations.md)** - TypeScript interfaces compile to Kotlin, Objective-C, and Swift bindings\n- **[Native API access](./docs/docs/native-polyglot.md)** - Direct access to platform APIs and third-party native libraries through polyglot modules\n- **Bidirectional communication** - Pass complex data structures and callbacks between TypeScript and native code safely\n- **[Native protobuf support](./docs/docs/advanced-protobuf.md)** - Seamless integration with protobuf for efficient data serialization\n\n### Proven at Scale\n\n- Powers critical features in production Snap apps.\n- Supports [advanced animations](./docs/docs/advanced-animations.md), real-time rendering, and [complex gesture systems](./docs/docs/core-touches.md)\n\n### Feature Highlights\n\n- **[Flexbox layout system](./docs/docs/core-flexbox.md)** with automatic RTL support\n- **[Worker threads](./docs/docs/advanced-worker-service.md)** for multi-threaded JavaScript execution\n- **[Native animations](./docs/docs/advanced-animations.md)** for native look and feel\n- **[Advanced gesture recognition](./docs/docs/core-touches.md)** with platform-native handling\n- **[Built-in testing framework](./docs/docs/workflow-testing.md)** with component-level unit tests\n- **[Bazel integration](./docs/docs/workflow-bazel.md)** for reproducible, incremental builds\n\n\n## Need Help?\n\n- **[GitHub Discussions](https://github.com/Snapchat/Valdi/discussions)** — ask questions, share what you're building, report issues\n- **[Discord](https://discord.gg/uJyNEeYX2U)** — real-time chat with the community\n\n## Contributing\n\nPlease follow the [contributing](./CONTRIBUTING.md) guidelines.\n\n## License\n\nValdi is made available under the MIT [License](./LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnapchat%2Fvaldi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnapchat%2Fvaldi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnapchat%2Fvaldi/lists"}