This guide is the fast path for working on Tier 1 only under v2/core/.
public/v2/core/For the Tier 1 ABI and test strategy, read these first:
You need:
brew install cmake meson ninja python3 node git bash
xcode-select --install
sudo apt-get update
sudo apt-get install -y cmake meson ninja-build python3 python3-pip git build-essential curl
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
cd ~/emsdk && ./emsdk install 5.0.6 && ./emsdk activate 5.0.6
source ~/emsdk/emsdk_env.sh
npm ci
npx playwright install chromium
For the top-level v2 build entrypoint, see docs/QUICKSTART.md. For the v2 FUI-AS docs hub, see docs/v2/fui-as/SDK_INDEX.md. For the v2 FUI-AS public SDK surface, see docs/v2/fui-as/API_REFERENCE.md. For the v2 FUI-AS control/node guide, see docs/v2/fui-as/CONTROLS_AND_NODES.md. For v2 FUI-AS semantic defaults and a11y contracts, see docs/v2/fui-as/ACCESSIBILITY_AND_SEMANTICS.md. For per-type control/node pages, see docs/v2/fui-as/reference/README.md. For callback/event contracts, see docs/v2/fui-as/EVENTS_AND_CALLBACKS.md. For control theming/override precedence, see docs/v2/fui-as/THEMING_STYLE_MATRIX.md.
v2/core reuses the repo’s production wasm Skia staging flow. Use --force flag to do a clean build.
./scripts/build_skia_wasm.sh
EFFINDOM_WASM_ARCH=wasm64 ./scripts/build_skia_wasm.sh
This is the preferred entry point for Tier 1 work:
./v2/core/scripts/build_all.sh
It runs, in order:
typescript-eslint)public/v2/core/npm run lint:v2
npm run typecheck:v2
cmake -S . -B build/build-v2-core -DCMAKE_BUILD_TYPE=Debug
cmake --build build/build-v2-core --target effindom_v2_core_tests --parallel
./build/build-v2-core/v2/core/effindom_v2_core_tests
cmake --build build/build-v2-core --target effindom_v2_core_generate_goldens --parallel
./build/build-v2-core/v2/core/effindom_v2_core_generate_goldens
./v2/core/scripts/build_wasm_arch.sh
npx playwright test -c v2/core/playwright.config.ts
v2/core/tests/goldens/v2/core/tests/goldens/background-blur-scene.pngv2/core/tests/integration/screenshots/chromium-core-smoke.pngpublic/v2/core/index.htmlpublic/v2/core/effindom-core-v2.{js,wasm}