Swiftpack.co - Package - VergeGroup/Verge

Requirements

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

Verge

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

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 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

VergeStore

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

Author

🇯🇵 Muukii (Hiroshi Kimura)

License

Verge is released under the MIT license.

Github

link
Stars: 193

Dependencies

Used By

Total: 0

Releases

-

Number of PRs : 1

tag number of PRs

Group: Fix issues (1)

  • Fix InoutRef's wrapped property #189 by @muukii

Other (0)


-

Number of PRs : 3

tag number of PRs
Breaking Changes 2
Remove Symobl 1

Group: Enhancement (2)

  • Support assign-assignee from Store #187 by @muukii
    • Breaking Changes Remove Symobl
  • Deprecation combined derived method #184 by @muukii
    • Breaking Changes

Other (1)

  • Support rx.commitBinder #188 by @muukii

-

Number of PRs : 12

tag number of PRs
Breaking Changes 2
New Feature 4
Performance 2

Group: Enhancement (12)

  • Add a typealias for migration #186 by @muukii
  • Remove dynamicMemberLookup from EntityWrapper to avoid mis-reading. #185 by @muukii
    • Breaking Changes
  • InoutRef gets to know how itself was modified. #183 by @muukii
    • New Feature
  • Add overload method for commit to get performance. #182 by @muukii
    • Performance
  • Changes contains MutationTrace #181 by @muukii
    • New Feature
  • [Breaking Changes] Introduce InoutRef object - Used in commit() to detect changes are occurred. #180 by @muukii
    • Breaking Changes New Feature Performance
  • [ORM] Wrap AnyHashable to get maintainability #179 by @muukii
  • [ORM] AnyMiddleware gets Equatable #178 by @muukii
  • Update Comparer+ORM.swift #177 by @muukii
  • DatabaseType gets Equatable protocol #176 by @muukii
  • Update Changes #175 by @muukii
  • [Experimantal] Derived for collection of entity #173 by @muukii
    • New Feature

Other (0)


-

Number of PRs : 1

tag number of PRs

Group: Fix issues (1)

  • [Critical Issue] Fix KeyPath identification #174 by @muukii

Other (0)


-

Number of PRs : 1

tag number of PRs

Group: Enhancement (1)

  • Support Xcode more #172 by @muukii

Other (0)


-

Number of PRs : 1

tag number of PRs

Group: Enhancement (1)

  • Support Xcode more #172 by @muukii

Other (0)


-

Number of PRs : 1

tag number of PRs
Breaking Changes 1

Group: Enhancement (1)

  • Default queue: .main in sink state/value #171 by @muukii
    • Breaking Changes

Other (0)


-

Number of PRs : 1

tag number of PRs

Group: Fix issues (1)

  • Fix StateReader #169 by @muukii

Other (0)


-

Number of PRs : 3

tag number of PRs
Rename 1

Group: Fix issues (1)

  • Fix Changes initializer #161 by @muukii

Group: Enhancement (2)

  • Performant way to using StateReader #168 by @muukii
  • Rename UseState to StateReader #167 by @muukii
    • Rename

Other (0)


8.0.0-beta.1 - Async pipeline -

Number of PRs : 1

tag number of PRs
Breaking Changes 1

Group: Enhancement (1)

  • Change default argument in sink and derived #158 by @muukii
    • Breaking Changes

Other (0)


-

Number of PRs : 2

tag number of PRs
Docs 1

Group: Enhancement (2)

  • Redesign TargetQueue #155 by @muukii
  • Update docs #156 by @muukii
    • Docs

Other (0)


-

Number of PRs : 2

tag number of PRs
Rename 1
New Feature 1

Group: Enhancement (2)

  • Rename and adds documentation #154 by @muukii
    • Rename
  • Add StandaloneEntityTable #153 by @muukii
    • New Feature

Other (0)


-

Number of PRs : 2

tag number of PRs
New Feature 1

Group: Enhancement (1)

  • Expand support platforms to tvOS watchOS #152 by @muukii
    • New Feature

Other (1)

  • [Docs] Update packages #151 by @muukii

-

Number of PRs : 2

tag number of PRs

Group: Fix issues (1)

  • Fix sinkState's unexpected behavior #150 by @muukii

Group: Enhancement (1)

  • Add StoreComponentType #149 by @muukii

Other (0)


-

Number of PRs : 2

tag number of PRs
New Feature 1

Group: Enhancement (1)

  • Introduce CachedMap #148 by @muukii
    • New Feature

Other (1)

  • Update Overview.md #147 by @knchst

-

Number of PRs : 1

tag number of PRs
Performance 1

Group: Enhancement (1)

  • Improve instance deallocation on Background #146 by @muukii
    • Performance

Other (0)


-

Number of PRs : 3

tag number of PRs
Breaking Changes 1
New Feature 1
Performance 1

Group: Enhancement (2)

  • Improve Store initializer #145 by @muukii
    • Breaking Changes
  • Add BatchCommit #143 by @muukii
    • New Feature Performance

Other (1)

  • Bump lodash from 4.17.15 to 4.17.19 in /Docs #144 by @dependabot

-

Number of PRs : 3

tag number of PRs

Group: Enhancement (3)

  • Use _typeName in generating EntityTableIdentifier #142 by @muukii
  • Can be override entityName #141 by @muukii
  • Dealloc inner buffer in background #140 by @muukii

Other (0)


-

Number of PRs : 1

tag number of PRs

Group: Enhancement (1)

  • Add global option to enable signpost monitoring #139 by @muukii

Other (0)


-

Number of PRs : 1

tag number of PRs
New Feature 1

Group: Enhancement (1)

  • Fragment updates to Edge with middleware #138 by @muukii
    • New Feature

Other (0)


-

Number of PRs : 1

tag number of PRs
New Feature 1

Group: Enhancement (1)

  • Add option to select a RecursiveLock on Storage #137 by @muukii
    • New Feature

Other (0)


-

Number of PRs : 3

tag number of PRs
New Feature 1
Breaking Changes 1

Group: Enhancement (3)

  • Add receive(state:) #135 by @muukii
    • New Feature
  • Add sender parameter to Logger protocol #136 by @muukii
    • Breaking Changes
  • Cleanup structure of demo application #134 by @muukii

Other (0)


-

Number of PRs : 1

tag number of PRs
Breaking Changes 1

Group: Enhancement (1)

  • Set default sub-spec 'Store' in Podfile #132 by @muukii
    • Breaking Changes

Other (0)


-

Number of PRs : 1

tag number of PRs

Group: Enhancement (1)

  • Deprecates a property #131 by @muukii

Other (0)


-

Number of PRs : 2

tag number of PRs
Rename 1
New Feature 1

Group: Enhancement (2)

  • Rename VersionCounter to NonAtomicVersionCounter #130 by @muukii
    • Rename
  • Add Indexed structure #129 by @muukii
    • New Feature

Other (0)


-

Number of PRs : 5

tag number of PRs
New Feature 1

Group: Enhancement (4)

  • Changes object gets compatibility of Equatable #128 by @muukii
  • Experimental COWFragment #127 by @muukii
  • Improve Derived internal implementation #124 by @muukii
  • UseState component for SwiftUI #125 by @muukii
    • New Feature

Other (1)

  • WIP SpotifyDemo #126 by @muukii

7.0.3 -

Number of PRs : 2

tag number of PRs
New Feature 1

Group: Enhancement (2)

  • Update MemoizeMap #123 by @muukii
  • Add deriving option #122 by @muukii
    • New Feature

Other (0)


7.0.1 -

Number of PRs : 1

Group: Enhancement (1)

  • 🔸Adds variant bindings for assign #120 by @muukii

Other (0)

-

Number of PRs : 10

Group: Enhancement (10)

  • 🔸Introduce Scan #119 by @muukii
  • 🔸Add a pattern in assignee #118 by @muukii
  • 🔸Expand method scope of assignee #116 by @muukii
  • 🔸Rename sinkChanges -> sinkState #115 by @muukii
    • 🏷 Rename
  • 🔸Apply Equatable to Fragment #114 by @muukii
  • 🔸Update sink method #113 by @muukii
    • 🏷 Rename
  • 🔸Use Changes type in state as Default #112 by @muukii
    • 🏷 Breaking Changes Rename
  • 🔸Add Scheduler for receive value #109 by @muukii
    • 🏷 New Feature
  • 🔸Rename Changes.current #110 by @muukii
    • 🏷 Rename
  • 🔸Remove composing #111 by @muukii
    • 🏷 Remove Symobl

Other (0)

Almost there - 7.0.0-rc.1 -