Compass 6.0 Roadmap
- Dominant language
- Swift
- Stars
- 821
- Forks
- 47
- PR merge metrics
- No merged PRs in 30d
Description
We will convert Compass to be in Swift 4 soon. This is not really big changes, but we can take this advantage to do some refactoring. Some are breaking changes. My proposals are
- Refactor Navigator to be used as instance. And inject `scheme` and `Router` into it. An app usually does not need many `Navigator`, and use can just set it as the current one. This also promotes the use of `Router`
```swift
let navigator = Navigator(scheme: "compass", routers: routers)
Navigator.current = navigator
```
- Right now `Navigator` and `Router` seem to confuse users. Like we declare `Router`, but also configure `Navigator.routes`. The above `Navigator instance` will make the composition clear `Navigator -> Router -> Routable`
- Refactor Router to be more flexible. Not all routers depend on `currentController`, some like `preLogin` prefers to switch rootViewController
- Remove `ErrorRoutable`, as we can handle via `try catch` with `navigate` function
What do you think @hyperoslo/ios ?
Contributor guide
Assessment
This issue has not been assessed yet.