uhabits
uhabits copied to clipboard
Develop iOS version of Loop Habit Tracker
Overview
This issue will track the progress of migrating Loop Habit Tracker to iOS. As discussed in issue #486, this is Phase I of our larger effort to make the application multiplatform. The shared core will be written in Kotlin, while the iOS-specific code will be written in Swift.
The dev
branch already contains a working prototype, with some basic features implemented. Below are a number of smaller subtasks that still need to be done. The list will be updated as we move along. As always, pull requests are very welcome. For better coordination, if you are planning to work on something, please let us know in advance. If you have any problems running the existing code, or if you have any questions, suggestions or concerns about the implementation or design of any of these features, please feel free to leave a comment.
Subtasks
1. Build read-only version of the application. The interface will look and behave like the final version of the app, but the user cannot modify the database in any way.
- [ ] Migrate model classes to pure Kotlin:
- [x] Habit
- [x] Checkmarks
- [ ] Streaks
- [x] Scores
- [ ] Implement main screen:
- [x] Display boolean habits
- [x] Display numerical habits
- [x] Display correct habit score
- [x] Allow user to hide archived habits
- [x] Allow user to hide completed habits
- [ ] Allow user to automatically sort habits by name, color or score
- [ ] Allow user to scroll by dragging the header
- [x] Dynamically select number of columns to display
- [x] Only display "show archived" if there are archived habits
- [ ] Implement detail screen:
- [ ] Header
- [ ] Overview
- [ ] Line chart
- [x] Bar chart
- [ ] Calendar chart
- [x] Small preview in the detail screen
- [ ] Larger version, for modifying habit history
- [ ] Best-streaks chart
- [ ] Frequency chart
- [ ] Make charts scrollable
- [ ] Implement about screen
- [ ] Implement forms:
- [ ] Create/edit Boolean habits
- [ ] Create/edit numerical habits
- [ ] Implement onboarding screen
- [x] Add links to Help & FAQ
- [ ] Internationalization:
- [ ] Convert Android strings to a multi-platform format
- [ ] Automatically switch languages based on phone settings
- [ ] Add support for RTL languages
- [ ] Implement theme switching and night mode
2. Allow user to make changes to the database.
- [ ] Main screen:
- [ ] Allow user to toggle checkmarks
- [ ] Allow user to input values (numerical habits)
- [ ] Allow user to manually rearrange habits
- [ ] Allow user to delete habits
- [ ] Allow user to archive habits
- [ ] Make forms functional:
- [ ] Create new boolean habit
- [ ] Create new numerical habit
- [ ] Edit boolean habit
- [ ] Edit numerical habit
- [ ] Detail screen:
- [ ] Allow user to change habit history
3. Additional features and performance
- [ ] Show reminders
- [ ] Import and export full backup
- [ ] Export data as CSV
- [ ] Import data from other popular iOS habit trackers:
- [ ] Identify which ones are popular and allow db export
- [ ] Implement parsers
- [ ] Generate bug reports
- [ ] Improve performance
- [ ] Profile and reduce startup time
- [ ] Verify that no I/O is performed on the main queue
- [ ] Verify that performance is acceptable with very large databases
What version of Swift do you compile with? Are there any dependencies for this project?
I am trying to build the iOS version but I am getting the error "undeclared type: Backend".
@StuartMesham ~~The iOS build is temporarily broken. If you roll back to commit 1abc041d8, it should work. I will post an update when this is fixed.~~
git clone https://github.com/iSoron/uhabits.git
cd uhabits
git checkout 1abc041d8 -b ios
The previous issue is now fixed. To run the iOS app, just open uhabits/ios/uhabits.xcodeproj
in Xcode and click the Run button. The shared code gets compiled automatically, so no extra steps are needed. If anyone is having trouble building the project, just let me know.
Why are you not using TestFlight? We could be more beta testing this... Thanks a lot!
@luisnabais I will post a TestFlight link when we reach beta. Currently, the app is still unusable.
@luisnabais Please do not advertise non-open source software in our bug tracker.
@luisnabais Please do not advertise non-open source software in our bug tracker.
You misunderstood me. I'm not advertising anything. I was just telling you that I think it was a total rip-off of Loop Habit Tracker, maybe not even authorized.
@luisnabais Thanks! I removed your message because even leaving the name of their app here helps to promote them. These clones are not endorsed by or affiliated with our project in any way. In particular, I cannot guarantee that they respect the privacy of your data in the same way that Loop does.
@iSoron, I don’t know if it’s right place for comments like mine, but I am so in love with your app that it prevents me from buying an iPhone! I made a research and nothing seems to be anything close to Loop on iOS.
I wish you good luck with creating iOS version of the app and can’t wait for a release!
The previous issue is now fixed. To run the iOS app, just open
uhabits/ios/uhabits.xcodeproj
in Xcode and click the Run button. The shared code gets compiled automatically, so no extra steps are needed. If anyone is having trouble building the project, just let me know.
error: Build input file cannot be found: '/Users/valera/Library/Developer/Xcode/DerivedData/uhabits-hhrqwstlmqlbkgcqbnajyhvvlelr/Build/Intermediates.noindex/SwiftMigration/uhabits/Products/Debug-iphonesimulator/uhabits.app/PlugIns/uhabitsTests.xctest/uhabitsTests' (in target 'uhabitsTests' from project 'uhabits')
BUILD FAILED in 0s Command PhaseScriptExecution failed with a nonzero exit code
Build fails for me :-/
Hey @iSoron, I just discovered this great open source project and checked the current state of an iOS equivalent. I see that you have long-term plans to provide a Kotlin-based alternative, which I can understand. But as it looks the progress is really slow on that end, or did I miss something?
Reason I'm asking is because I was planning to create a habit tracker open source application for iOS for learning purposes anyways and now that I have found this, I consider making it compatible with this app export and import options so users can move between platforms without losing their data. Of course, my app will have a different name and also look totally different, but the core of being an open source & free habit tracker and using the latest of technology (in my case SwiftUI) to make this a fun project will be shared.
But as you wrote in your Kotlin Multiplatform issue, before I do anything of that sort, I wanted to first check with you what you think of it and what a realistic timeframe for your iOS app is. Because mine will be started this summer and probably released in autumn. If your iOS app is done by then, I might opt for a different hobby project idea instead, I'm not looking for competing with an already existing and well working solution, I just want to fill the current gap. Habit tracking should be available for free to everyone.
Folks, this is an issue to discuss the official iOS version of Loop Habit Tracker. If you are interested in developing your own habit tracker for iOS, that's fine, but please move the discussion to your own issue tracker.
@Jeehut Sorry, I cannot provide a timeline for this.
Is there already a roughly release date for iOS?
@guthipp Please read the comment above yours that was made just 9 days ago, it already answers your question, I think. 😉
@jeehut Thank you. So when you don't follow a deadline, then it seems to became a never ending story - sorry. So I know that I will find another solution. When you say, your goal is e.g. Oktober 2020 - then I could use a interim solution. But I already wait over 1y now 🥵
Hello everybody. I am a huge fan of Loop Habit Tracker; I recently moved to iOS and I suffered its absence so much that I desperately started looking for alternatives, but, as @tapchik pointed out, it is very hard to find a valuable, equally neat and simple, but most importantly privacy respectful app or service.
nothing seems to be anything close to Loop on iOS.
Nevertheless, after months of struggle, I finally stumbled upon a really promising application, named [link removed, non-open-source]. Of course, it is absolutely not as good as Loop Habits, but I can manage living with it until Loop Habits finally gets to iOS.
I would love to help speeding up the process, but, unfortunately, I am not a developer.
I posted this only as a suggestion for people who are looking for an ad-interim solution.
Thank you very much and thanks @iSoron for your work, it is awesome and much appreciated.
Hello! I just moved over to ios and this is the app that I miss the most. I would love to contribute to the ios development in any way but I have never done anything in ios. If you can guide me to some simple open subtasks that I could take on, it would be great. :)
Could someone update us on the progress?
The previous issue is now fixed. To run the iOS app, just open
uhabits/ios/uhabits.xcodeproj
in Xcode and click the Run button. The shared code gets compiled automatically, so no extra steps are needed. If anyone is having trouble building the project, just let me know.
I tried this on macOS 12.6 for iPhone 14 Pro. I keep getting the error "Command PhaseScriptExecution failed with a nonzero exit code". A quick google search revealed that the error could have been caused by a plethora of reasons, many of which didn't apply to my case. Right-Click > Open Build Log doesn't help either.
How do I proceed?
Does anyone know how to move Loop Habit Tracker data to another iOS habits app? It's been years and I don't expect the iOS app of Loop Habit Tracker to come anytime soon.
This project is dead. And when a person says something, it's commentary is deleted or marked as off-topic. It's just sad.
@luisnabais This issue is for technical discussions on the iOS implementation. Feel free to post (open-source) iOS app recommendation in the discussions section. Recommendations to non-open-source apps will be removed.