← All open source projects

uni-app

dcloudio/uni-app

uni-app is a Vue-based framework for shipping one application to web, mobile platforms, and mini-program ecosystems.

Forks 3,711
Author dcloudio
Language Vue
License Apache-2.0
Synced 2026-06-27

What It Is

uni-app is a cross-platform framework from DCloud. Interfaces are written with Vue and then shipped to several targets: iOS, Android, HarmonyOS, the web, and mini-program ecosystems.

The core idea is simple: a team should not rewrite the same screen for every distribution channel. It keeps a shared component, page, and state model, while the platform layer handles many target differences.

The dcloudio/uni-app repository is the center of a framework rather than a small library. Around it, DCloud maintains tools, documentation, examples, and the newer uni-app x line.

Origin And Internals

The project comes from a practical market need where native applications, web versions, and several mini-program platforms exist side by side. In that environment, a shared Vue model is valuable because one product often has to appear in many places quickly.

Classic uni-app uses JavaScript for logic and a rendering layer close to mini-program architecture. uni-app x moves further with uts and uvue, aiming at native rendering and compilation to Kotlin, Swift, ArkTS, JavaScript, and mini-program targets.

A major advantage is the familiar Vue syntax. Developers see components, templates, data, and event handlers instead of a completely new interface model.

How People Use It

Teams usually choose uni-app when they need several channels at once: a mobile application, a web version, and a mini-program. It is useful for services where launch speed and a single product team matter.

The project fits teams that already know Vue. In that case, the learning curve is lower: components and pages remain familiar, while the team mainly studies platform differences, packaging, and target-specific rules.

The limitation is clear: shared code does not erase platform differences. Native capabilities, store rules, mini-program behavior, and performance-heavy screens still need separate checks.

Component Example

This minimal component shows the project’s basic idea: the structure looks like Vue, while elements and events are prepared for cross-platform compilation.

A Vue-Style Screen

The example shows the normal component shape: template, data, and handler stay together, while the code can pass through the uni-app build path.

Language: Vue
<template>
  <view class="profile-card">
    <text>{{ title }}</text>
    <button @click="open">Open</button>
  </view>
</template>

<script>
export default {
  data() {
    return { title: "Service card" }
  },
  methods: {
    open() {
      uni.showToast({ title: "Done" })
    }
  }
}
</script>

Strengths And Limits

uni-app’s strength is practical reuse. One set of pages can reach multiple destinations instead of forcing separate teams to rebuild the same product.

Complex products should isolate platform-specific areas early: payments, cameras, maps, notifications, authentication, and heavy animation. Those areas should not be hidden behind a promise of total universality.

uni-app fits teams that already use Vue and need several target environments. If the product is deeply native or graphically demanding, a real-device prototype should come before a full commitment.