Skip to main content
Two files describe an expansion: 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 id appears in the routes of your pages (custom/my_expansion.home) and prefixes everything you register, so two expansions can both have a home page.
  • Changing id after release means NMCrate sees a different expansion, and per-project state saved under the old id is no longer read.
  • version is 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
Prereleases only match a range that mentions one, as in npm.