# Introduction

umi is a routing-based framework that supports next.js-like conventional routing and various advanced routing functions, such as routing-level on-demand loading. With a complete plugin system that covers every life cycle from source code to build product, umi is able to support various functional extensions and business needs. Currently umi has almost 50+ plugins in both community and inside company.

umi is the basic front-end framework of Ant Financial, and has served 600+ applications directly or indirectly, including Java, node, mobile apps, Hybrid apps, pure front-end assets apps, CMS apps, and more. umi has served our internal users very well and we hope that it can also serve external users well.

# Features

  • đŸ“Ļ Out of box, with built-in support for react, react-router, etc.
  • 🏈 Next.js like and full featured routing conventions, which also supports configured routing
  • 🎉 Complete plugin system, covering every lifecycle from source code to production
  • 🚀 High performance, with support for PWA, route-level code splitting, etc. via plugins
  • 💈 Support for static export, adapt to various environments, such as console app, mobile app, egg, Alipay wallet, etc
  • 🚄 Fast dev startup, support enable dll with config
  • 🐠 Compatible with IE9, based on umi-plugin-polyfills
  • 🍁 Support TypeScript, including d.ts definition and umi test
  • 🌴 Deep integration with dva, support duck directory, automatic loading of model, code splitting, etc

# Architecture

The figure below is the architecture of umi.

# Why not...?

# next.js

The routing of next.js is relatively simple. For example, its routing configuration does not support some advanced usages such as layout, nested routing, permission routing, etc., which are common in enterprise applications. Compared to next.js, umi is more like nuxt.js at the functional level of contracted routing.