The Swift Composable Architecture (TCA) project, a library designed for consistent and testable application development across Apple platforms, is experiencing active development with a focus on sendability and actor isolation improvements, despite facing persistent issues related to navigation and state management.
Recent issues and pull requests (PRs) indicate a strong emphasis on resolving sendability warnings and enhancing actor isolation within the architecture. The team is addressing critical bugs, particularly those affecting navigation strategies and state management, which have led to crashes and UI inconsistencies. Notable issues include #3352 related to missing modules post-upgrade, and #3311 concerning crashes with @Shared
storage.
Sendable
, crucial for multi-threaded environments.Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 6 | 4 | 12 | 3 | 1 |
30 Days | 15 | 14 | 37 | 8 | 1 |
90 Days | 35 | 31 | 90 | 16 | 1 |
1 Year | 123 | 117 | 273 | 56 | 1 |
All Time | 451 | 445 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Stephen Celis | 7 | 17/17/0 | 83 | 341 | 11210 | |
Brandon Williams | 5 | 7/6/0 | 26 | 135 | 5979 | |
Mason Kim | 1 | 4/3/1 | 3 | 20 | 252 | |
Pat Brown | 1 | 0/0/0 | 1 | 5 | 201 | |
MaraMincho | 1 | 3/3/0 | 3 | 3 | 71 | |
larryonoff | 1 | 1/1/0 | 1 | 2 | 38 | |
mino | 1 | 2/2/0 | 2 | 2 | 8 | |
LamTrinh.Dev | 1 | 0/1/0 | 1 | 2 | 6 | |
Hyunjin | 1 | 1/1/0 | 1 | 1 | 5 | |
이동영 | 1 | 1/1/0 | 1 | 1 | 2 | |
JP Simard (jpsim) | 0 | 1/0/1 | 0 | 0 | 0 | |
Markus Müller (mmllr) | 0 | 1/0/1 | 0 | 0 | 0 | |
Takehiro Kaneko (takehilo) | 0 | 1/0/1 | 0 | 0 | 0 | |
Julien Sagot (juliensagot) | 0 | 1/0/1 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
The recent GitHub issue activity for the Swift Composable Architecture (TCA) project indicates a vibrant community with ongoing discussions and resolutions. Currently, there are 6 open issues, with several notable bugs related to navigation, state management, and UI updates. A recurring theme is the interaction between different navigation strategies (tree-based vs. stack-based), which has led to unexpected behaviors such as crashes and UI inconsistencies. Additionally, issues surrounding the use of @Shared
state and its effects on view updates have been highlighted, suggesting that developers are grappling with the complexities introduced in recent versions.
Issue #3352: Missing required module 'UIKitNavigationShim'
Issue #3311: Crash when using @Shared appStorage during certain conditions
@Shared
storage updates during view rendering cycles.Issue #3235: View not updating with shared store and form
NavigationSplitView
.Issue #2846: Store scoping issue with ForEach
Issue #2508: StackState/StackReducer related leak
StackState
.Issue #1848: Unable to cancel an EffectTask before it's being run
This analysis highlights the ongoing challenges faced by developers using TCA, particularly as they adapt to new features and changes in behavior introduced in recent updates.
The analysis of the pull requests (PRs) for the Swift Composable Architecture (TCA) repository reveals a mix of ongoing enhancements, bug fixes, and documentation improvements. There are currently three open PRs, with the majority focusing on addressing sendability issues, enhancing existing features, and refining documentation.
PR #3329: Address @Shared sendability
Created by Brandon Williams, this PR aims to resolve sendability warnings related to persistence keys in the TCA. It discusses the implications of making certain values Sendable
and proposes changes to ensure thread safety in test targets. The PR is significant as it addresses potential issues that could arise from improper handling of concurrency.
PR #3315: Avoid unsafe extraction in BindingReducer
Proposed by Stephen Celis, this draft PR seeks to refactor the BindingReducer
to eliminate unsafe extraction using reflection. By requiring an explicit case key path for binding actions, it aims to enhance type safety and clarity in reducer definitions. This change is notable as it reflects a shift towards safer coding practices within TCA.
PR #1969: Add ReducerReader
for building reducers out of state and action
Also created by Stephen Celis, this long-standing draft PR proposes a new reducer that builds itself from the current state and action. It aims to simplify the creation of reducers by allowing developers to handle state and actions more flexibly. The PR has garnered community interest but remains open for further discussion and refinement.
PR #3356: Fix potential deadlock in Shared
Merged by Brandon Williams, this PR addresses a deadlock issue identified in shared state management. It demonstrates responsiveness to critical bugs affecting application performance.
PR #3354: Fix typo
A minor correction merged by Stephen Celis, indicating ongoing efforts to maintain documentation quality.
PR #3349: Fix typos
Another minor fix merged by Brandon Williams, showcasing attention to detail in documentation.
PR #3347: Warn if bindable store binding action isn't processed
Merged by Stephen Celis, this PR enhances error reporting for missing binding actions in observable stores, improving debugging capabilities.
PR #3346: Added failing test to document behavior with observation/identified array
This PR adds a failing test case to highlight existing issues with identified arrays in observation contexts, aiding future debugging efforts.
The current landscape of pull requests for the Swift Composable Architecture reveals several key themes:
Focus on Sendability: A significant number of recent PRs (e.g., #3329, #3315, #3326, #3325) are dedicated to addressing sendability warnings across various components of TCA. This focus highlights the importance of ensuring that actions and states can be safely passed across concurrency boundaries, which is crucial for maintaining application stability and performance in a multi-threaded environment. The push towards making more components Sendable
reflects a broader trend within Swift development as concurrency becomes increasingly central.
Documentation Improvements: Several closed PRs (e.g., #3354, #3349) indicate ongoing efforts to refine documentation and correct minor errors. This commitment to maintaining high-quality documentation is essential for fostering community engagement and ensuring that users can effectively utilize TCA's features. The addition of tests documenting expected behaviors (e.g., PR #3346) also underscores a proactive approach to quality assurance.
Refactoring for Safety and Clarity: The draft PRs (#3315 and #1969) suggest a movement towards enhancing type safety and clarity within the architecture. By eliminating unsafe practices (like reflection-based extraction) and introducing new constructs (like ReducerReader
), these changes aim to make TCA more robust and easier to use. This aligns with TCA's overarching goal of providing a clear and understandable framework for developers.
Community Engagement: The discussions around draft PRs indicate active community involvement in shaping the direction of TCA's development. Feedback from community members on proposed changes demonstrates a collaborative spirit that can lead to better outcomes for the library as a whole.
Anomalies in Merge Activity: While there are only three open PRs at present, the repository has seen substantial activity with numerous recent merges addressing both critical bugs and enhancements. This suggests effective maintenance practices; however, it also raises questions about whether there are underlying issues that could lead to future bottlenecks if not monitored closely.
In conclusion, the Swift Composable Architecture is currently navigating a period of refinement focused on concurrency safety through sendability improvements while simultaneously enhancing its documentation and user experience. The active engagement from both maintainers and community members bodes well for its continued evolution as a leading framework in Swift development.
Brandon Williams (mbrandonw)
swift-format
for code style consistency.CurrentValueRelay
and added tests.shared-sendability
branch.Stephen Celis (stephencelis)
Mason Kim (qwerty3345)
viewStore
with store
.이동영 (O-O-wl)
Pat Brown (iampatbrown)
CurrentValueRelay
.MaraMincho
mino (stealmh)
Hyunjin (woohyunjin06)
Larryonoff
LamTrinh.Dev (lamtrinhdev)
Overall, the development team is actively enhancing the Swift Composable Architecture with a focus on stability, clarity, and usability while fostering collaboration among its members.