meta.json says who it is, a config.json says how to run it, and your source files import each other normally. TypeScript or JavaScript, your choice; the app compiles it on load, with no build step of your own.
fs, no require, no window. Everything it does to the app goes through sdk, and anything that touches the user’s files or the network is gated by a permission they approve.
The guides
Getting started
Install a template, get it loading, see it hot-reload
Manifest
meta.json and config.json, field by fieldModules and imports
What you can import: files, CSS, assets, JSON, the SDK
Libraries
lib/ folders, imported by name instead of a pathWriting style
Top-level, class, object or function; React class components
sdk reference
Every SDK point
sdk/ui reference
Hooks and the component kit
Permissions
What each one allows, and how approval works
Lifecycle
Load, hot reload, errors, logs, disable, uninstall
Publishing
Keys, trusted and untrusted, packing a
.nxeMigrating from main.js
The old API, point by point, and what is missing
Troubleshooting
Error messages and what they mean
Examples
What each shipped example demonstrates
Internals
How the app runs all this. For maintainers.
Versions
This app provides SDK 2.0.0. Yourmeta.json declares the range it was built for:
An expansion the app cannot satisfy is disabled with a message saying so, rather than half-working.