Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Valdi is used on almost every Snapchat screen: sometimes to render some smaller

When we started Valdi, we actually had no intention of making it a React Native competitor. It was initially a small framework, with a clear set of use cases it was meant to help with. We wanted the framework to be really good at solving these use cases knowing that developers would have to initially resort to a large amount of platform native code. Over time, as we kept adding more and more features, Valdi became similar to React Native, although with a different development vision and implementation.

React Native and Valdi are quite similar in how they work, at their core they are each development platforms allowing users to write their UI in TypeScript, with the backing UI system ultimately using platform native UI components. React Native is more web centric and more compatible with web technologies in general. Valdi breaks with web standards when that enables optimizations that can improve performance on mobile, or when it lowers the bar to entry to mobile engineers. For example, the module loader in Valdi is lazy by default, where dependency module files only actually get imported when they get used for the first time, rather than when their dependent modules get loaded. This solves a common pain point that many companies had where as codebase grew, so did the load time for the main application bundle. In Valdi, each module is independant, there is not a `main.jsbundle`. In Valdi, modules build with Bazel, and native code is an integral part of applications that are built using it. The list of differences is very long, and it'd take many pages to list them all out. The sum of these differences all add up to a technology that was ultimately possible to integrate in so many surfaces on Snapchat.
React Native and Valdi are quite similar in how they work, at their core they are each development platforms allowing users to write their UI in TypeScript, with the backing UI system ultimately using platform native UI components. React Native is more web centric and more compatible with web technologies in general. Valdi breaks with web standards when that enables optimizations that can improve performance on mobile, or when it lowers the bar to entry to mobile engineers. For example, the module loader in Valdi is lazy by default, where dependency module files only actually get imported when they get used for the first time, rather than when their dependent modules get loaded. This solves a common pain point that many companies had where as codebase grew, so did the load time for the main application bundle. In Valdi, each module is independent, there is not a `main.jsbundle`. In Valdi, modules build with Bazel, and native code is an integral part of applications that are built using it. The list of differences is very long, and it'd take many pages to list them all out. The sum of these differences all add up to a technology that was ultimately possible to integrate in so many surfaces on Snapchat.

React Native is a fantastic technology and we don't claim Valdi is strictly superior to it. We chose a different set of trade-offs for Valdi to make it work at Snap, and other projects might also find these trade-offs desirable. The main target audience for Valdi are developers that have strong requirements for performance and scalability and/or have an existing native application and want to efficiently use some cross-platform business logic or UI.

Expand Down