meta.json is who it is, config.json is how to run it. Neither contains code, and both are read before anything of yours runs.
Every problem in them is reported at once, naming the file and the field, so you fix the list rather than one error per reload:
meta.json
meta.json
Unknown keys are kept out of the way with a warning rather than failing the load.
"type": "library" is reserved and currently refused.id and version, in practice
- The
idappears in the routes of your pages (custom/my_expansion.home) and prefixes everything you register, so two expansions can both have ahomepage. - Changing
idafter release means NMCrate sees a different expansion, and per-project state saved under the old id is no longer read. versionis what the store shows and what an update compares against.
config.json
config.json
A missing
config.json is accepted with a warning and the defaults.
These keys are reserved, accepted with a warning and otherwise ignored today: settings, locales, background, build, main.
Compatibility
sdkVersion is checked against the SDK the app provides, 2.0.0:
- satisfied: loads normally
- not satisfied: does not load, and the Expansions page says