Top Related Projects
Set up a modern web app by running one command.
The React Framework
Next generation frontend tooling. It's fast!
Build Better Websites. Create modern, resilient user experiences with web fundamentals.
The Intuitive Vue Framework.
The best React-based framework with performance, scalability and security built in.
Quick Overview
Umi is a pluggable enterprise-level React application framework. It's based on routing and aims to provide a complete solution for modern web development, including features like TypeScript support, code splitting, and plugin system.
Pros
- Comprehensive framework with built-in features for enterprise-level applications
- Extensible plugin system allowing for customization and additional functionality
- Strong TypeScript support out of the box
- Integrated development experience with minimal configuration
Cons
- Steeper learning curve compared to simpler React setups
- Opinionated structure may not suit all project types or developer preferences
- Some users report issues with documentation clarity and completeness
- Can be overkill for smaller projects or simple applications
Code Examples
- Basic route configuration:
// .umirc.ts
export default {
routes: [
{ path: '/', component: '@/pages/index' },
{ path: '/users', component: '@/pages/users' },
],
};
- Using Umi's built-in request utility:
import { request } from 'umi';
export async function getUser(id: string) {
return request(`/api/users/${id}`);
}
- Creating a plugin:
// plugin.ts
import { IApi } from 'umi';
export default (api: IApi) => {
api.onDevCompileDone(() => {
console.log('Umi dev compile done');
});
};
Getting Started
- Install Umi:
$ yarn create @umijs/umi-app
$ cd umi-app
- Start the development server:
$ yarn start
- Build for production:
$ yarn build
For more detailed instructions and advanced usage, refer to the official Umi documentation.
Competitor Comparisons
Set up a modern web app by running one command.
Pros of Create React App
- Widely adopted and well-maintained by Facebook
- Simple and quick setup for React projects
- Extensive documentation and community support
Cons of Create React App
- Less flexible configuration options out of the box
- Requires ejecting for advanced customization
- Limited built-in features compared to Umi
Code Comparison
Create React App:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));
Umi:
import { defineConfig } from 'umi';
export default defineConfig({
routes: [
{ path: '/', component: '@/pages/index' },
],
});
Create React App focuses on a simple entry point, while Umi uses a configuration file for routing and other features.
Key Differences
- Umi provides built-in routing, state management, and internationalization
- Create React App is more focused on getting a basic React app running quickly
- Umi offers more advanced features out of the box, but may have a steeper learning curve
- Create React App has a larger ecosystem and community support
Both tools aim to simplify React development, but Umi offers more features and configuration options, while Create React App prioritizes simplicity and ease of use for beginners.
The React Framework
Pros of Next.js
- Larger community and ecosystem, with more resources and third-party integrations
- Built-in image optimization and automatic font optimization
- Seamless integration with Vercel's deployment platform
Cons of Next.js
- Steeper learning curve for developers new to React or server-side rendering
- Less opinionated, requiring more configuration for advanced features
- Limited built-in state management solutions
Code Comparison
Next.js:
// pages/index.js
export default function Home() {
return <h1>Welcome to Next.js!</h1>
}
Umi:
// pages/index.tsx
import { defineConfig } from 'umi';
export default defineConfig({
routes: [{ path: '/', component: '@/pages/index' }],
});
Key Differences
- Umi provides a more opinionated structure with built-in routing and state management
- Next.js offers more flexibility in project structure and configuration
- Umi has better TypeScript support out of the box
- Next.js has superior documentation and community resources
Use Cases
- Choose Next.js for larger, more complex projects with custom requirements
- Opt for Umi when working on smaller to medium-sized projects with a focus on rapid development
- Consider Next.js for projects that require advanced image optimization and performance features
- Select Umi for projects that benefit from a more structured, opinionated framework
Next generation frontend tooling. It's fast!
Pros of Vite
- Faster build times and hot module replacement
- Lightweight and flexible, with a plugin-based architecture
- Supports multiple frameworks (Vue, React, Svelte, etc.)
Cons of Vite
- Less opinionated, requiring more configuration for complex setups
- Smaller ecosystem compared to Umi's comprehensive toolset
- May require additional setup for certain features that come built-in with Umi
Code Comparison
Vite configuration:
// vite.config.js
export default {
plugins: [react()],
build: {
outDir: 'dist',
}
}
Umi configuration:
// .umirc.ts
export default {
plugins: ['@umijs/plugins/dist/react'],
outputPath: 'dist',
}
Summary
Vite excels in build speed and flexibility, making it suitable for various project types. Umi offers a more comprehensive, opinionated solution with built-in features for React projects. The choice between them depends on project requirements, team preferences, and the desired level of configuration control.
Build Better Websites. Create modern, resilient user experiences with web fundamentals.
Pros of Remix
- Built-in server-side rendering and data loading, enhancing performance and SEO
- Seamless integration with modern web APIs and progressive enhancement
- Strong focus on web standards and accessibility
Cons of Remix
- Steeper learning curve for developers new to server-side rendering concepts
- Smaller ecosystem and community compared to more established frameworks
- Limited built-in UI components, requiring additional libraries for complex interfaces
Code Comparison
Remix route file:
export async function loader({ params }) {
const user = await getUser(params.id);
return json({ user });
}
export default function UserProfile() {
const { user } = useLoaderData();
return <h1>{user.name}</h1>;
}
Umi route file:
import { useParams } from 'umi';
export default function UserProfile() {
const { id } = useParams();
const [user, setUser] = useState(null);
useEffect(() => {
getUser(id).then(setUser);
}, [id]);
return user ? <h1>{user.name}</h1> : <p>Loading...</p>;
}
The Intuitive Vue Framework.
Pros of Nuxt
- Stronger ecosystem and community support
- Better internationalization (i18n) capabilities out-of-the-box
- More comprehensive documentation and learning resources
Cons of Nuxt
- Slightly steeper learning curve for beginners
- Less flexible routing system compared to Umi's convention-based routing
Code Comparison
Umi routing:
export default {
routes: [
{ path: '/', component: './pages/index' },
{ path: '/users', component: './pages/users' },
],
}
Nuxt routing:
// Automatically generated based on file structure in pages directory
// pages/index.vue -> /
// pages/users.vue -> /users
Both Umi and Nuxt are powerful frameworks for building modern web applications. Umi focuses on simplicity and convention over configuration, making it easier for developers familiar with React to get started quickly. Nuxt, on the other hand, provides a more opinionated structure and a richer set of features out-of-the-box, particularly for server-side rendering and static site generation.
While Umi excels in its flexibility and ease of use for React developers, Nuxt's stronger ecosystem and better internationalization support make it a more attractive option for larger, multi-language projects. However, Umi's simpler learning curve and more flexible routing system may be preferable for smaller projects or teams already comfortable with React.
The best React-based framework with performance, scalability and security built in.
Pros of Gatsby
- Larger ecosystem with extensive plugin library
- Better documentation and community support
- Optimized for static site generation and performance
Cons of Gatsby
- Steeper learning curve, especially for React beginners
- Can be overkill for smaller projects
- Slower build times for large sites
Code Comparison
Gatsby:
import React from "react"
import { Link } from "gatsby"
export default function Home() {
return <Link to="/about/">About</Link>
}
Umi:
import { Link } from 'umi';
export default function Home() {
return <Link to="/about">About</Link>;
}
Key Differences
- Gatsby is more focused on static site generation, while Umi is a more general-purpose React framework
- Umi provides built-in state management and routing solutions, whereas Gatsby relies more on plugins
- Gatsby has a more opinionated project structure, while Umi offers more flexibility
- Umi is more popular in China, while Gatsby has broader international adoption
Both frameworks offer powerful features for building React applications, but they cater to slightly different use cases and developer preferences. Gatsby excels in static site generation and performance optimization, while Umi provides a more comprehensive toolkit for building various types of React applications.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
umi
A framework in react community â¨
Please consider following this project's author, sorrycc, and consider starring the project to show your â¤ï¸ and support.
ð Read the launch post â
ð Learn Umi â
Contribution
See Contributing Guide.
Core Maintainers
Core Maintainers are community members who have contributed significantly to the project through addressing issues, fixing bugs, and implementing enhancements/features.
Maintainers
Maintainers are community members who have had 10 or more PRs merged in umi or have spent a lot of time contributing to the umi community or addressing issues.
Contributors
Contributors are community members who have had 1 or more PRs merged in umi. If you are a contributor, you can contact me [sorrycc] to join the Contributor Group.
Community
LICENSE
Top Related Projects
Set up a modern web app by running one command.
The React Framework
Next generation frontend tooling. It's fast!
Build Better Websites. Create modern, resilient user experiences with web fundamentals.
The Intuitive Vue Framework.
The best React-based framework with performance, scalability and security built in.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot