Skip to content
/ yoga Public

Yoga is an embeddable layout engine targeting web standards.

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE-examples
Notifications You must be signed in to change notification settings

facebook/yoga

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3aa594c · Feb 27, 2025
Jan 21, 2025
Jan 16, 2023
Apr 5, 2024
Dec 9, 2024
Mar 11, 2024
Jan 19, 2024
Dec 12, 2024
Feb 27, 2025
Feb 12, 2025
Dec 12, 2024
Feb 2, 2024
Dec 30, 2024
Dec 3, 2024
Dec 30, 2024
Sep 14, 2023
Mar 4, 2024
May 27, 2017
Mar 14, 2024
Jun 30, 2023
Jul 17, 2023
Jul 17, 2023
Jan 19, 2024
Oct 4, 2022
Aug 13, 2021
Sep 11, 2018
Dec 7, 2016
Sep 19, 2023
Oct 3, 2024
Mar 11, 2024
Oct 24, 2024
Jan 19, 2024
Dec 3, 2024
Nov 14, 2023
Feb 27, 2025
Feb 27, 2025
Jun 26, 2024
Mar 14, 2024
Jul 11, 2023
Jan 16, 2023
Jan 16, 2023
Dec 3, 2024

Yoga CocoaPods npm Maven Central SPM

Yoga is an embeddable and performant flexbox layout engine with bindings for multiple languages.

Building

Yoga's main implementation targets C++ 20 with accompanying build logic in CMake. A wrapper is provided to build the main library and run unit tests.

./unit_tests <Debug|Release>

While not required, this script will use ninja if it is installed for faster builds.

Yoga is additionally part of the vcpkg collection of ports maintained by Microsoft and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

Adding Tests

Many of Yoga's tests are automatically generated, using HTML fixtures describing node structure. These are rendered in Chrome to generate an expected layout result for the tree. New fixtures can be added to gentest/fixtures.

<div id="my_test" style="width: 100px; height: 100px; align-items: center;">
  <div style="width: 50px; height: 50px;"></div>
</div>

To generate new tests from added fixtures:

  1. Ensure you have yarn classic installed.
  2. Run yarn install to install dependencies for the test generator.
  3. Run yarn gentest in the yoga directory.

Debugging

Yoga provides a VSCode "launch.json" configuration which allows debugging unit tests. Simply add your breakpoints, and run "Debug C++ Unit tests (lldb)" (or "Debug C++ Unit tests (vsdbg)" on Windows).