README_EN.md

September 13, 2026 · View on GitHub

中文 →

Dimina compiles mini program source for Android, iOS, Harmony, and Web

Apache 2.0 License Android, iOS, Harmony and Web Pull requests welcome

Live Demo · Quick Start · Capability Reference · Changelog · Architecture · Contribute

Dimina is Didi's open-source framework for running mini programs across platforms. It compiles WXML, WXSS, and JavaScript / TypeScript source into a unified bundle, then loads it through Android, iOS, Harmony, and Web containers. You can embed an existing mini program as an independent module in your app or build new cross-platform screens with familiar mini program syntax.

One mini program, running on three native platforms

The screenshots below show the same “Official Components Showcase” example running on Android, iOS, and Harmony. To try it yourself, open the live demo in your browser.

Android iOS Harmony
Dimina official component example running on Android Dimina official component example running on iOS Dimina official component example running on Harmony

Make a mini program an embeddable cross-platform module

Dimina goes beyond Web preview. It includes a mini program compiler, logic and view runtimes, standard components, native capability bridges, and containers for Android, iOS, Harmony, and Web. Existing mini programs can be embedded whole in a host app, while new screens keep the development model teams already know.

  • Offline-ready bundles: The host provides and stores mini program packages locally, reducing runtime network dependencies.
  • Separate logic and view runtimes: Business logic runs in a dedicated JS engine or Worker while WebView / Browser renders the view.
  • One path to native capabilities: Standard APIs and extension bridges connect to the host without spreading platform-specific logic across business pages.
  • Runtime-managed page behavior: The runtime handles preloading, routing, lifecycles, components, and cross-thread messaging.

How one codebase reaches four platforms

DMCC compiles mini program source into a runtime bundle loaded by four platform containers

DMCC converts mini program source into logic, view, style, and configuration resources. Inside each container, a message channel connects the logic layer, view layer, and native capabilities so the same mini program semantics remain consistent across platforms.

Platform runtimes

PlatformLogic engineView containerIntegration
AndroidQuickJSAndroid WebViewAndroid SDK
iOSJavaScriptCoreWKWebViewiOS SDK
HarmonyQuickJSHarmony WebViewHarmony SDK
WebWeb WorkerBrowserLive demo

Quick start

To see Dimina in action, open the live demo. To run the repository's Web examples locally, have Node.js 22.22.3+ and pnpm 12.2.0+ ready:

git clone https://github.com/didi/dimina.git
cd dimina/fe
pnpm install
pnpm compile
pnpm dev

Here, pnpm compile builds the mini programs in examples/miniprogram/, and pnpm dev starts the Web container and proxy service. See the frontend workspace guide for more build, packaging, and debugging commands.

When you are ready to integrate a bundle into a native app, start with the guide for your platform:

Capability boundaries and further reading

Dimina continues to align with mini app standards and major WeChat Mini Program capabilities, but it does not yet cover every API, component, or feature. Before adopting it, review the current capability range and platform differences.

What you needDocumentation
Supported components, APIs, and platform differencesCapability reference
Compiler flow, multi-thread model, and architectureTechnical documentation
DMCC installation, commands, and outputCompiler guide
Package updates and dynamic delivery responsibilitiesUpdate mechanism
How shared resources flow into platform examplesShared resources

Contributing

Dimina's architecture is informed by the Mini App Standard White Paper and grows by working through real cross-platform differences one by one. Moonlight scatters across a river of stars, and the road ahead stretches on, one patient step at a time. If you care about compatibility semantics, cross-platform runtimes, component behavior, or native capabilities, open an issue or add a line of code. We would be glad to walk that road with you.

Come say hello in our WeChat group
QR code for the Dimina WeChat community

License

Dimina is open source under the Apache License 2.0.