Skip to content

Moddable 7.0.0

Choose a tag to compare

@mkellner mkellner released this 16 Jan 18:07
· 33 commits to public since this release

Moddable SDK 7.0 contains improvements made between December 4, 2025 and January 13, 2026.

Zephyr Port Now Official

We began porting the Moddable SDK to the Zephyr RTOS in 2025, with the first public preview in October. In the few months since then, the Zephyr port is sufficiently capable and complete that we are promoting it to an officially supported platform of the Moddable SDK. This means future Zephyr updates will be delivered as part of our regular monthly release.

To understand the breadth and depth of our Zephyr port, check out our blog posts that detail our progress:

Our comprehensive Zephyr documentation covers getting set up, building, debugging, and how we bridge Zephyr's foundational Device Tree to JavaScript.

In the last month, we've done a tremendous amount of work to refine the Zephyr port, including the addition of Analog Input and PWM IO, and making it easier to begin working with new development boards from any silicon provider.

We're excited to have Zephyr fully onboard in the Moddable SDK and look forward to continuing to deepen our support for this popular, well-supported platform.

ESLint and TypeScript Checks Integrated with Build

ESLint and TypeScript are valuable tools for checking the correctness of JavaScript and TypeScript source code before it is parsed, compiled, and run. These checks save Embedded JavaScript developers valuable time by identifying mistakes before code is downloaded to the target device. Moddable SDK 7.0 makes running these checks much easier.

When building with mcconfig or mcrun you can now check your JavaScript and TypeScript source code with ESLint and/or TypeScript. All you have to do is add -tc to your command line for TypeScript checks and -lc for ESLint checks. You can check both in a single build:

mcconfig -d -m -p zephyr/esp32_ethernet_kit -tc -lc

You do need to have TypeScript and ESLint installed. Fortunately installing them is straightforward, but be sure to install them globally.

npm install -g typescript
npm install -g eslint

Because the ESLint and TypeScript checks don't usually increase build time significantly, you can consider keeping one, or both, enabled during active development.

When using TypeScript to check JavaScript source code, the checks are less strict because there is less type information available. Still, the TypeScript checks are valuable.

The TypeScript checks depend on the available type declarations, primarily in $MODDABLE/typings. These are increasingly complete, but not entirely. Where they are incomplete, there can be failures. This happens with access to the device global, though Zephyr builds handle this well thanks to mcdevicetree. Being able to build all Moddable SDK examples with TypeScript and ESLint checks enabled is a goal, which should resolve the majority of these issues.

The checks are performed on the source code of your project. They are not performed on code included by your project from the $MODDABLE/modules and $MODDABLE/build directories. Checking this code is more challenging because it implements the system and so may not always conform with the publc APIs. Extending checks to the code in these directories is an area for future work.

Release Details

  • Devices
    • Zephyr
      • Implement ECMA-419 analog input
      • Implement ECMA-419 PWM output
      • RTC module migrated to New Native API
      • Wi-Fi and Ethernet modules provide MAC property
      • Complete implementation of timezone and daylight savings offsets
    • M5Stack CoreS3
    • ESP32
      • ECMA-419 Audio Out should use ISR calls from playedBuffer callback (contributed by @meganetaaan)
      • Fix missing debugger_uart_cdc.c on Windows builds #1555 (reported by @rillhu)
      • Replace deprecated VSPI_HOST with SPI3_HOST #1556 (reported by @NW_LAB)
  • conversationalAI
    • Enable model selection user interface by default
    • Add models for Gemini and OpenAI (contributed by @stc1988)
    • Migrate to New Native API
  • Modules
    • chatAudioIO
      • Update tools support to latest across supported services
      • Migrate to New Native API
    • WebSocket – don't trip over omitted callbacks (onerror, etc)
    • CRC - migrate to New Native API
    • ResourceIterator - migrate to New Native API
    • TLS – remove Hex module; replaced by JavaScript's Uint8Array Hex support
  • ECMA-419
    • DNS-SD changes instanceName to name
    • BLE security options name changes for display and keyboard capabilities
    • MQTT client merges its configuration into Host Instance Provider rather than overwriting
  • XS JavaScript engine
    • Fixed range of Math.random() on ESP32 and ESP8266. #1544 (reported by @stc1988)
    • Fuzzing fixes
      • JavaScript parsing crash introduced with New Native API
      • Obscure string buffer overflow converting BigInt to string
      • Native stack overflow when parsing JSX
  • Tools
    • test262 app migrated to New Native API
    • Fix ESP32-C6 builds that include BLE
    • mcdevicetree
      • Use Zephyr CONFIG_* value to enable features
      • Uses "compatible" DTS field to determine node type across different silicon vendors
      • Fix capitalization on port names (e.g. device.serial) to match ECMA-419
      • Includes display, RTC, and DigitalBank in device global
    • mcconfig
      • Supports Zephyr overlays in manifests
      • Escape # in Zephyr filenames (necessary for Node private modules)
      • TypeScript now supported on Zephyr
      • ESLint checks JavaScript and TypeScript source code (-lc on command line)
      • TypeScript checks JavaScript source code (-tc on command line)
    • testmc
      • Option to override screen size because many graphics tests assume a 240 x 320 display
      • Checksum display driver compatible with ECMA-419 Display driver
  • TypeScript
    • Add typings
      • ECMA-419 Ethernet and Wi-Fi
      • ECMA-419 Display
      • ECMA-419 NTP Client
      • ECMA-419 Real-Time Clock
      • ECMA-419 Files
      • ECMA-419 Key-Value Pair Storage
      • ECMA-419 Flash
      • ECMA-419 BLE Peripheral (contributed by @stc1988) #1558
      • Neopixel and Neostrand (contributed by @stc1988)
    • Correct deflate.ts file name to deflate.d.ts
  • Documentation
    • Integrate Zephyr
    • Update Windows set-up to latest Visual Studio #1557 (contributed by @NW-Lab)
  • Examples
    • Fixes some issues reported by ESLint

Contact Us

If you have questions or suggestions about anything here, please reach out: