Strict Mode
Strict mode is library-wide and can get set by doing:
vide.strict = true
It is automatically enabled when Vide is first required and not running in O2 optimization level.
Strict mode is designed to help the development process by adding safety checks and identifying improper usage.
Currently, strict mode will:
- Run reactive scopes twice when a source updates.
- Throw an error if yields occur where they are not allowed.
- Checks for
indexes()
andvalues()
outputting primitive values. - Checks for
values()
input having duplicate values. - Checks for duplicate nested properties at same depth.
- Checks for destruction of an active scope.
- Better error reporting and stack traces + creation traces of property bindings.
By rerunning reactive scopes twice each time they update, it helps ensure that computations are pure, and that any cleanup is done correctly.
Accidental yielding within reactive scopes can break Vide's reactive graph, which strict mode will catch.
As well as additional safety checks, Vide will dedicate extra resources to recording and better emitting stack traces where errors occur, particularly when implicit effects are created for instance property updating.
It is recommended to develop UI with strict mode and to disable it when pushing to production. In Roblox, production code compiles at O2 by default, so you do not need to worry about disabling strict mode unless you have manually enabled it.