# `IModelNode.space`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Property of [`IModelNode`](IModelNode.md) · inherited by [`ConfiguratorNode`](ConfiguratorNode.md) · labs, `@experimental` · since 2.0.0

```ts
space?: 'world' | 'parent';
```

'parent': position, rotation and scale are local to the nearest ModelNode ancestor, so the
child moves, hides and disposes with it. 2.0 accepts it only in scene models your app derives
at run time and never saves: [`validate('configurator', doc)`](validate.md) reports 'space-not-storable' for
it. Check [`supports('spec.node.space')`](Session.supports.md) before deriving 'parent' children.

**Default:** 'world'

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `space` names no product |
| 2. A precedent | pass: [glTF 2.0 node hierarchy (a child is local to its parent)](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#nodes-and-hierarchy) (row `G5`); [Unity Transform.parent](https://docs.unity3d.com/ScriptReference/Transform-parent.html) (row `G5`) |
| 3. Two apps, or labs | labs (`@experimental` at a stable path, reached through `has()` or `supports()`): it graduates when a second app uses it; apps today: app-fc306ec3dc |
| 4. The cheaper fix first | decided per need in Appendix B: rows `G5` at tier labs (a member only where no rule, data, asset or app code serves the need) |
