# dvajs/dva

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/dvajs-dva).**

16,164 stars · 3,111 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/dvajs/dva
- awesome-repositories: https://awesome-repositories.com/repository/dvajs-dva.md

## Topics

`dva` `elm` `framework` `redux` `redux-saga`

## Description

Dva is a state management library and client-side application framework designed for building user interfaces with React and Redux. It functions as an asynchronous logic orchestrator and a single page application router, organizing application data through a structured data flow of reducers, effects, and subscriptions.

The framework distinguishes itself through the use of generator functions to manage asynchronous workflows and sequential side effects, keeping these operations separate from synchronous state updates. It implements namespace-based model organization to group business logic and supports dynamic model injection to load data models and routing logic on demand.

The system covers a broad range of capabilities, including the synchronization of browser URL history with global state, the binding of external data streams such as WebSockets to action dispatchers, and the integration of core plugins for cross-cutting concerns. It also provides tools for hot model replacement during development and centralized error management for asynchronous effects.

## Tags

### Data & Databases

- [Application State Management](https://awesome-repositories.com/f/data-databases/application-state-management.md) — Provides a comprehensive system for managing and synchronizing application-wide state using reducers, effects, and subscriptions. ([source](https://cdn.jsdelivr.net/gh/dvajs/dva@master/README.md))

### Software Engineering & Architecture

- [Redux Implementations](https://awesome-repositories.com/f/software-engineering-architecture/redux-implementations.md) — Implements the Redux pattern of actions, reducers, and a centralized immutable store for state management.
- [Component State Bindings](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/component-state-bindings.md) — Connects data models to UI components, enabling them to consume global state and dispatch actions. ([source](https://github.com/dvajs/dva/blob/master/docs/GettingStarted.md))
- [Generator-Based Coordination](https://awesome-repositories.com/f/software-engineering-architecture/effect-state-management/effectful-state-updates/generator-based-coordination.md) — Uses generator functions to manage asynchronous workflows and sequential side effects while keeping state updates synchronous.
- [Single Page Applications](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/application-architecture-patterns/single-page-applications.md) — Implements a single-page application architecture that updates content dynamically via client-side navigation.

### Business & Productivity Software

- [Model Namespace Organizers](https://awesome-repositories.com/f/business-productivity-software/group-management/data-model-groups/model-namespace-organizers.md) — Groups state, reducers, and effects into distinct namespaces to prevent naming collisions and organize business logic.

### Programming Languages & Runtimes

- [Asynchronous Generator Runners](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-control-flows/asynchronous-generator-runners.md) — Utilizes asynchronous generator runners to manage side effects and sequential workflows outside the UI layer.
- [Asynchronous Flow Coordination](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-flow-coordination.md) — Handles complex side effects and sequential asynchronous logic using generator functions to separate business rules from state updates.
- [State Store Namespacing](https://awesome-repositories.com/f/programming-languages-runtimes/module-namespaces/state-store-namespacing.md) — Organizes global state into namespaced modules to prevent naming collisions and group business logic. ([source](https://github.com/dvajs/dva/blob/master/docs/API.md))
- [Dynamic Imports](https://awesome-repositories.com/f/programming-languages-runtimes/module-importing/dynamic-imports.md) — Imports functional units and routing logic asynchronously to improve startup time and decrease memory usage. ([source](https://cdn.jsdelivr.net/gh/dvajs/dva@master/README.md))

### Web Development

- [External Stream Subscriptions](https://awesome-repositories.com/f/web-development/application-event-listeners/external-stream-subscriptions.md) — Binds external data streams such as WebSockets and keyboard events to trigger internal state actions. ([source](https://github.com/dvajs/dva/blob/master/docs/GettingStarted.md))
- [Application Route Managers](https://awesome-repositories.com/f/web-development/application-route-managers.md) — Maps URL paths to specific components and syncs the router state with the global data store. ([source](https://github.com/dvajs/dva/blob/master/docs/API.md))
- [State-Management Frameworks](https://awesome-repositories.com/f/web-development/backend-development/web-frameworks/full-stack-frameworks/react-frameworks/state-management-frameworks.md) — Provides a framework for building user interfaces using React and Redux with a structured data flow inspired by Elm.
- [Client-Side Frameworks](https://awesome-repositories.com/f/web-development/client-side-frameworks.md) — Provides a lightweight architecture for managing business logic, external data streams, and dynamic module loading in web apps.
- [React State Bindings](https://awesome-repositories.com/f/web-development/react-state-bindings.md) — Connects the Redux-based state management container to React UI components via structured data flow.
- [SPA Routers](https://awesome-repositories.com/f/web-development/spa-routers.md) — Implements a routing system that maps browser URLs to components and synchronizes navigation state with a global data store.
- [State Management Libraries](https://awesome-repositories.com/f/web-development/state-management-libraries.md) — Provides a system for organizing application data through reducers, effects, and subscriptions to coordinate state transitions.
- [URL-Driven State Synchronization](https://awesome-repositories.com/f/web-development/url-driven-state-synchronization.md) — Ensures the UI state is derived from and synchronized with the browser URL for deep linking and navigation.
- [Dynamic Model Injection](https://awesome-repositories.com/f/web-development/dynamic-model-injection.md) — Provides the ability to load data models and routing logic on demand to reduce the initial bundle size.
- [On-Demand Component Loading](https://awesome-repositories.com/f/web-development/on-demand-component-loading.md) — Loads specific interface elements and data models on demand to reduce the initial download size. ([source](https://github.com/dvajs/dva/blob/master/docs/API.md))

### Development Tools & Productivity

- [Hot Module Replacement](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/hot-module-replacement.md) — Supports updating model logic in real-time while preserving current application state during development. ([source](https://github.com/dvajs/dva/blob/master/docs/API.md))

### User Interface & Experience

- [State Action Interceptors](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/input-event-dispatchers/application-event-dispatching/state-action-interceptors.md) — Provides a hook system to execute custom logic during state changes and action dispatches. ([source](https://github.com/dvajs/dva/blob/master/docs/API.md))
