1
Get a key
Every expansion is verified when it loads. Create a secret for the id you are going to use, for example
my_expansion. You will paste it into meta.json as apiKey.The id and the key belong together: a key issued for one id will not load an expansion using a different one. See Publishing for what happens before your expansion is published.2
Copy a template
Templates live in the app repository under The folder name does not matter.
packages/sdk-templates/:tsfor TypeScriptjsfor JavaScript
- Windows
- macOS
- Linux
meta.json’s id is what identifies your expansion.3
Fill in meta.json
meta.json
id is lowercase letters, digits and _. Full rules in the manifest guide.4
Open the app
The app picks the folder up without a restart. Open Project Settings → Expansions and you should see your expansion listed.
- If it declares permissions, it waits at Needs approval until you press Review permissions.
- Before it is published on NMCrate it loads marked Untrusted, which is normal during development.
- If something is wrong, the card says what, and the logs button shows the expansion’s own log.
5
Edit and watch it reload
Save any file in the folder. The app rebuilds and swaps the expansion in place: no restart, no reopening the project. What changed is re-run, the rest keeps its state. See Lifecycle.
6
Editor setup
Nothing to install. When the app loads your folder it writes:The template’s
tsconfig.json already points at them. They come from the app that runs your code, so they can never be out of date. Delete them and they come back on the next load.For real React typing (correct DOM props, proper JSX), run npm i -D @types/react in your expansion folder. The app then stops writing the shim and leaves your types alone. node_modules is only ever your editor’s: it is never bundled into your expansion, and it is left out of a packed .nxe.Next
Modules and imports
How files, CSS and assets come together
sdk reference
Everything you can add to the app
Examples
Working expansions to read