Framework v3 is a preview. A v3 game ships two files:
/src/lib.rs: the game's rules, written in Rust against the boardweaver_live SDK (see v3-rust-sdk). Other /src/*.rs files are modules you declare from lib.rs with mod name;./src/frontend.tsx: the React client. It is exactly a v2 client: the same boardweaver/react hooks (useMatch, useGameState, useAvailableActions, useScores, ...), the same UI and animation libraries, the same no-props default export. See react-match-api.A game is pinned to v3 when it is created with create_game and frameworkMajor: 3. It starts as tic-tac-toe, and get_example with tic-tac-toe-rust shows the same seed.
validate_code, start_game and commit compile /src/lib.rs to WebAssembly. The SDK owns Cargo.toml: a game uses Rust's standard library, boardweaver_live, serde and serde_json, and nothing else. A compile error comes back as /src/lib.rs:LINE:COL: error[...].Rng) is never predicted: the browser does not have the server's seed, so it waits for the server. Players cannot learn a roll before the move that makes it.Table. Reads are free (table.state()); every change goes through a Table method, which is how the platform learns what changed.static or global variables: a match can be reloaded from its state at any time, and anything kept outside it is lost.Rng for anything random. There is no clock and no other source of randomness.kinds() gives each piece and space kind a size, which the client reads as piece.width and space.width.render_game does not run on preview environments.start_game and apply_action, or in a real match./src/frontend.tsx for v3 games; validate_code checks that it bundles.