What Does "Refreshable" mean?
Most iPhone users instinctively know that pulling down on the screen refreshes the content in many apps — that’s the classic pull-to-refresh gesture, and it’s exactly what we mean by “refreshable.” Earlier versions of Splync didn’t support this feature. The only way to refresh the screen was to close the app and reopen it. This wasn’t too troublesome, because the app has kept you logged in since Splync v1.3, but it still wasn’t ideal. Since Splync aims to be the easiest shared budget tracker, refreshing the screen should feel completely effortless. That’s why we introduced pull-to-refresh in v1.10, making Splync fully refreshable.
Two Ways Splync Refreshes Your Data(Full Reload / View Update)
On the Home screen — where you see your profile photo, friend list, and project list — pull-to-refresh performs a full reload. It retrieves all account-related data again, very similar to logging out and logging back in. Because of this, the refresh may take around a second while the loading message is displayed. On a Project screen, where your expense list appears, the same pull-down gesture triggers a lighter view update. Only the project-specific data is refreshed, such as category changes and expense updates. There’s no need to wait a full second just to see whether someone added a new expense. Also note: Splync does not automatically fetch project data from the server in the background. The app checks for updates only when you make changes, when you open an expense to view its details, or when you refresh the project page manually.
Why Not Real-Time Sync?
Some users may expect project updates to appear instantly when a friend adds a new expense. Real-time syncing sounds convenient, but it comes with important trade-offs. Continuous background updates require more battery, more mobile data, and a more complex server connection that can slow down the app for everyone. Splync’s on-demand approach keeps the experience lightweight and responsive, and it prevents the screen from suddenly changing while you’re reviewing your budget. There are also security considerations. Maintaining a constant connection to the server increases the exposure window for unauthorized access and requires additional authentication logic running in the background. By refreshing only when you take action, Splync minimizes unnecessary network activity and keeps data access more predictable and controlled.
Behind The Code of .refreshable
At first, I thought this update would be simple. In Swift, the language used for iOS development, you can enable pull-to-refresh just by attaching the .refreshable modifier to a ScrollView or List. However, it didn’t work the way I expected. After digging into the issue, I realized the root cause. I wanted to add pull-to-refresh to the entire top screen, which contains the friend list and the project list. But in the original design, both of those components were also scrollable. As a result, .refreshable didn’t know which scrollable area it belonged to, and the gesture wasn’t detected consistently. To fix this, I restructured the friend list and project list so that they are no longer scrollable by themselves. This is safe because the top-level view itself scrolls when the content exceeds the screen height. Once I simplified the structure and ensured there was only one scrollable container, .refreshable finally behaved exactly as intended. I also added a typical refresh button so that users can just tap to refresh.
Pulling Does Not Work For You? Pull a Bit Further!
In most iOS apps, pull-to-refresh does not activate the moment you start dragging. SwiftUI has a built-in gesture threshold: the system waits until you pull down a certain distance before triggering the refresh. This prevents accidental updates when you simply start scrolling from the top of the screen. Splync follows this standard behavior. You may notice that a short pull does not refresh the content, but a slightly longer pull — enough for the refresh indicator to appear — will trigger the update. This design keeps interactions intentional. It avoids unwanted refreshes, especially on screens where users frequently scroll through long lists of expenses or projects. Once you slightly “overpull” the top boundary and the indicator appears, the refresh will begin as soon as you release your finger. It’s a small detail, but it contributes to a smoother and more predictable experience. Just to clarify: it’s not about pulling for a longer time or applying stronger pressure. What matters is pulling a longer distance.
A Small Feature, Carefully Crafted
Pull-to-refresh may look like a tiny interaction, but building it involved design choices, technical restructuring, and a surprising number of considerations behind the scenes. Splync v1.10 makes refreshing your data feel natural, intentional, and predictable — exactly the way it should be in the easiest shared budget app. I hope this update gives you a smoother experience and a glimpse into the care that goes into every detail. Thank you for using Splync.