Popularity
4.1
Growing
Activity
9.4
Growing
288
5
13

Programming language: Swift
License: MIT License
Latest version: v8.2.0

Verge alternatives and similar libraries

Based on the "Reactive Programming" category.
Alternatively, view Verge alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Verge or a related project?

Add another 'Reactive Programming' Library

README

Verge A faster and scalable state-management library for iOS App - SwiftUI / UIKit Fully documented and used in production at Eureka, Inc. ⭐️ If you like and interested in this, give it a star on this repo! We'd like to know developer's needs. ⭐️

Please see the website

Requirements

  • Swift 5.2 +
  • @available(iOS 10, macOS 10.13, tvOS 10, watchOS 3)
  • UIKit and SwiftUI

Verge is NOT Flux, it's store-pattern.

Verge is a performant store-pattern based state management library for iOS.

Please see the website: https://vergegroup.github.io/Verge/

And the article about store-pattern

What store-pattern is

The word 'store-pattern' is used on Vue.js documentation that about how we manage the state between multiple components.

What differences between Flux library are

'store-pattern' is the core-concept of Flux. Flux works with the multiple restricted rules top of the 'store-pattern'.

store-pattern

This means we can start using like Flux without using Action, Muation payload values.

// ✌️ no needs to use.
enum Action {
  case increment
  case decrement
}

This declarations might be quite big cost of implementation in order to start to use Flux.
Verge does not have this rules, so we can do like this when we update the state.

// 🤞 just like this
extension MyStore {
  func increment() {
    commit { 
      $0.count += 1
    }
  }
}

let store: MyStore
store.increment()

It can be easy start.
Of cource, we can create the layer to manage strict action and mutation payload on top of the Verge primitive layer.
Because 'store-pattern' is core-concept of Flux.

--

Motivation

Verge focuses use-cases in the real-world

Recently, we could say the unidirectional data flow is a popular architecture such as flux.

Does store-pattern(flux) architecture have a good performance?

It depends. The performance will be the worst depends on how it is used.

However, most of the cases, we don't know the app we're creating how it will grow and scales.
While the application is scaling up, the performance might decrease by getting complexity.
To keep performance, we need to tune it up with several approaches.
Considering the performance takes time from the beginning.
it will make us be annoying to use flux architecture.

Verge is designed for use from small and supports to scale.

Setting Verge up quickly, and tune-up when we need it.

Verge automatically tune-up and shows us what makes performance badly while development from Xcode's documentation.

For example, Verge provides these stuff to tune performance up.

Supports volatile events

We use an event as Activity that won't be stored in the state.
This concept would help us to describe something that is not easy to describe as a state in the client application.

Installation

CocoaPods

Verge (core module)

pod 'Verge/Store'

VergeORM

pod 'Verge/ORM'

VergeRx

pod 'Verge/Rx'

These are separated with subspecs in Podspec. After installed, these are merged into single module as Verge.

To use Verge in your code, define import decralation following.

import Verge

SwiftPM

Verge supports also SwiftPM.

Questions

Please feel free to ask something about this library!
I can reply to you faster in Twitter.

日本語での質問も全然オーケーです😆
Twitterからだと早く回答できます⛱

Twitter

Demo applications

This repo has several demo applications in Demo directory. And we're looking for your demo applications to list it here! Please tell us from Issue!

Thanks

Author

🇯🇵 Muukii (Hiroshi Kimura)

License

Verge is released under the MIT license.


*Note that all licence references and agreements mentioned in the Verge README section above are relevant to that project's source code only.