metro VS yoga

Compare metro vs yoga and see what are their differences.

metro

🚇 The JavaScript bundler for React Native (by facebook)

yoga

Yoga is an embeddable layout engine targeting web standards. (by facebook)
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
metro yoga
16 23
5,060 16,926
0.4% 0.5%
9.3 9.5
7 days ago 14 days ago
JavaScript C++
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

metro

Posts with mentions or reviews of metro. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-26.
  • Dynamic imports supported in react native
    3 projects | dev.to | 26 Jul 2023
    For details on the implementation you can see Evan's PR to metro here.
  • React Native bundler improvement! 🔥
    1 project | /r/reactnative | 9 Mar 2023
  • React vs React Native: How Different Are They, Really?
    12 projects | dev.to | 19 Dec 2022
    Some development tools for the web are similar (Chrome debugger, mostly) to those for React Native, but other aspects are very different (working with the metro bundler, using Flipper, AsyncStorage debugging, more). Some techniques developers will use are the same (breakpoints and console logging), but others are different (knowing when to restart the packager vs reinstall the app on device).
  • Setting up React Native Monorepo with Yarn Workspaces
    3 projects | dev.to | 14 Oct 2022
    We’re almost done with setting up the project. The last thing in the React Native app is to add watchFolders so metro knows where the linked node_modules are. The shared modules are symlinked by yarn, and since metro doesn’t follow symlinks we need to explicitly say it where the linked node_modules are.
  • Debugging RN + Expo bare using WebStorm? Would I be better off just killing myself now?
    2 projects | /r/reactnative | 15 Sep 2022
    Unfortunately it is what it is... I use intellij instead of webstorm since they're the same thing basically. I spent a shitton of time figuring out how to link a local package i was creating for my app only to discover about this issue that is almost as old as react native itself. (luckily there's rnx-kit that solves the problem). Not to talk about the impossibility to have one goddamn IDE to write both typescript, java and c++. Currently i have to write ts/js in intellij, then i have to switch to android studio to write java/c++.
  • Do you know where the __DEV__ flag is set?
    1 project | /r/reactnative | 15 Apr 2022
    React Native packager. Override instructions here.
  • React Native Monorepo
    2 projects | /r/reactnative | 22 Jan 2022
    React Native doesn't play nicely with most monorepo tools out of the box as Metro doesn't support symlinking.
  • Running React Native everywhere: The Web
    12 projects | dev.to | 26 Sep 2021
    Because React Native for Web is a React website, you can use front-end tools to build and run it. For example, you can build it with Webpack or Rollup instead of Metro bundler.
  • Running React Native everywhere: Android & iOS
    3 projects | dev.to | 21 Sep 2021
    Before we can run the app, we still need do one more thing: make metro bundler compatible with Yarn workspaces' hoisting.
  • Running React Native everywhere: Yarn Workspaces monorepo
    6 projects | dev.to | 16 Sep 2021
    Second, sharing code with other projects (e.g., backend code, web apps) may get complicated. Out-of-the-box, React Native's metro bundler cannot reference code outside of the project's root directory. You can configure it to do so (and we'll do it as well later on). Still, once you do it, you'll also need to ensure dependencies resolution works correctly (to avoid loading two different versions of the same library, for example); which might not be as easy as it may sound.

yoga

Posts with mentions or reviews of yoga. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-21.
  • Show HN: Dropflow, a CSS layout engine for node or <canvas>
    15 projects | news.ycombinator.com | 21 Mar 2024
  • Building Reddit’s Design System on iOS
    5 projects | /r/RedditEng | 27 Sep 2023
    We still wanted to leverage a layout engine that could be performant and easy-to-use. After doing some performance testing with native UIKit, Autolayout, and a few other third-party options, we ended up bringing FlexLayout into the mix, which is a Swift implementation of Facebook’s Yoga layout engine. All RPL components utilize FlexLayout in order to lay out content fast and efficiently. While we’ve enjoyed using it, we’ve found a few touch points to be mindful of. There are some rough edges we’ve found, such as utilizing stack views with subviews that use FlexLayout, that often come at odds with both UIKit and FlexLayout’s layout engines.
  • We're building a browser when it's supposed to be impossible
    13 projects | news.ycombinator.com | 11 Apr 2023
    We have our own test suite (orginally derived from the test suite of Meta's Yoga layout library [0]) which consists of text fixtures that are small HTML snippets [1] and a test harness [2] that turns those into runnable tests, utilising headless chrome both to parse the HTML and to generate the assertions based on the layout that Chrome renders (so we are effectively comparing our implementation against Chrome). We currently have 686 generated tests (covering both Flexbox and CSS Grid).

    We would like to utilise the Web Platform Test suite [3], however these are not in a standard format and many of the tests require JavaScript so we are not currently able to do that.

    [0]: https://github.com/facebook/yoga

    [1]: https://github.com/DioxusLabs/taffy/tree/main/test_fixtures

    [2]: https://github.com/DioxusLabs/taffy/tree/main/scripts/gentes...

    [3]: https://github.com/web-platform-tests/wpt/tree/master/css/cs...

  • minimax — minimalist 3D game engine in Clojure
    5 projects | /r/Clojure | 26 Feb 2023
    The "engine" is built on top of amazing https://www.lwjgl.org/ and https://github.com/bkaradzic/bgfx/, and UI system is baked by https://github.com/memononen/nanovg and https://github.com/facebook/yoga
  • Show HN: Taffy – CSS Grid (+Flexbox) as a Library
    2 projects | news.ycombinator.com | 12 Feb 2023
  • React vs React Native: How Different Are They, Really?
    12 projects | dev.to | 19 Dec 2022
    React Native uses the Yoga engine under the hood, which allows you to use CSS properties to layout your React Native UI in a way that translates really well. Layout in Yoga is limited to Flexbox and absolute/relative positioning, however; there is no CSS grid and no display attribute. This keeps things simpler and more performant, but if developers are accustomed to using other layout techniques on the web, they’ll need to adjust to this new limitation.
  • When dealing with UI, does any of you uses glViewport to layout your elements in the correct place?
    1 project | /r/gamedev | 8 Dec 2022
  • Taffy 0.2 Release: Blazing Fast UI Layout in Rust. Now with `gap`!
    3 projects | /r/rust | 24 Nov 2022
    PR #246 is super interesting to check out: by fixing the caching strategy, we were able to eliminate an exponential time (with respect to tree depth) performance penalty, and get comparable speeds for flat and deeply nested layouts (something I'd never expected to be possible). Preliminary benchmarks shows us significantly faster than yoga, Meta's C++ library for the same thing, especially on deep trees. Not too shabby for a tiny team of volunteers!
  • How To Build a CLI With Node.js and React
    7 projects | dev.to | 5 Nov 2022
    You're going to build the CLI using Ink, a React component-based library for building interactive CLIs. It uses Yoga to build Flexbox layouts in the terminal, so most CSS-like props are available in Ink as well. Ink is simply a React renderer for the terminal, so all the React features are supported. No need to learn a new syntax specific to Ink.
  • Show HN: Satori – Convert HTML and CSS to SVG in Milliseconds
    9 projects | news.ycombinator.com | 10 Oct 2022
    Interesting.

    I was thinking that this was going to be a crazy amount of layout engine work, but now I look a little closer it appears the layout work is farmed out to yoga [0] (not trying to take away anything from the effort here). So this project is almost a wrapper around running yoga as a renderer and using SVG as a form of backend target?

    I say "appears" because the yoga landing page doesn't do a great job of explaining what it does.

    [0] https://github.com/facebook/yoga

What are some alternatives?

When comparing metro and yoga you can also consider the following projects:

expo-cli - Tools for creating, running, and deploying universal Expo and React Native apps

react-native-skia - High-performance React Native Graphics using Skia

webpack - A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Through "loaders", modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff.

hermes - A JavaScript engine optimized for running React Native.

react-native-web - Cross-platform React UI packages

react-native-skia - Cross platform React Native solution to draw graphics based on Skia

react-native-monorepo-tools - Tools and utils to support a React Native monorepo built with Yarn Workspaces

stretch - High performance flexbox implementation written in rust

craco - Create React App Configuration Override, an easy and comprehensible configuration layer for Create React App.

taffy - A high performance rust-powered UI layout library

nx - Smart Monorepos · Fast CI

react-navigation - Routing and navigation for your React Native apps