🦟[Bug Report] cannot start the iPhone app
Describe the bug
The app does not start. I can only change the language selection so it is not completely blocked. But the app does not start, it only shows the splash screen. No user feedback of what is going on.
Tried also to click on the language check mark icon or anywhere around. No result.
Tried to close the app and reopen it several times. It just do not start.
To Reproduce
Just download the app the the Apple Store and open it.
Screenshots
Observed Environment
- OS version: iOS 18.2
- Litewallet Version: 3.14.0 (250220)
- Device model: iPhone 15 Pro
Additional context or information
I think Litecoin is a good project and it is a shame that the average user has this initial bug on iPhone. To be honest I do not understand how this could be possible, I mean that a project of this proportion fails like this.
I am a software developer but I do not have the skills to debug and fix bugs on iOS apps.
However I would like to support and I offer my availability to help in any way. For example you could add me to TestRail so I can test the fix on my own device.
Feel free to contact me on any of the channels listed here: https://fibo.github.io/about-me/
same issue!
Same issue
Same issue - iOS 18.3.1 on iPhone 16 Pro, cannot get past the select language screen to set the app up…
no one fix this bug?
I think the problem could be in the StartView.swift code which appears to be missing the two NavigationLink buttons for “Create Wallet” and “Recover Wallet”, so unless your wallet is already set up then you can’t progress past the select language screen…
StartView.swift needs to include these 2 pieces of code in my opinion -
NavigationLink(destination: AnnounceUpdatesView(navigateStart: .create, language: startViewModel.currentLanguage, didTapContinue: $didContinue) .environmentObject(startViewModel) .navigationBarBackButtonHidden(false) ) { ZStack { RoundedRectangle(cornerRadius: bigButtonCornerRadius) .frame(width: width * 0.9, height: 45, alignment: .center) .foregroundColor(.white) .shadow(radius: 3, x: 3.0, y: 3.0)
Text(S.StartViewController.createButton.localize())
.frame(width: width * 0.9, height: 45, alignment: .center)
.font(buttonFont)
.foregroundColor(.litewalletBlue)
.overlay(
RoundedRectangle(cornerRadius: bigButtonCornerRadius)
.stroke(.white, lineWidth: 2.0)
)
}
}
NavigationLink(destination: AnnounceUpdatesView(navigateStart: .recover, language: startViewModel.currentLanguage, didTapContinue: $didContinue) .environmentObject(startViewModel) .navigationBarBackButtonHidden(false) ) { ZStack { RoundedRectangle(cornerRadius: bigButtonCornerRadius) .frame(width: width * 0.9, height: 45, alignment: .center) .foregroundColor(Color(UIColor.liteWalletBlue)) .shadow(radius: 5, x: 3.0, y: 3.0)
Text(S.StartViewController.recoverButton.localize())
.frame(width: width * 0.9, height: 45, alignment: .center)
.font(buttonLightFont)
.foregroundColor(Color(UIColor.litecoinWhite))
.overlay(
RoundedRectangle(cornerRadius: bigButtonCornerRadius)
.stroke(.white)
)
}
}
import SwiftUI import UIKit
struct StartView: View { let buttonFont: Font = .barlowSemiBold(size: 20.0) let buttonLightFont: Font = .barlowLight(size: 20.0) let tinyFont: Font = .barlowRegular(size: 12.0)
let squareButtonSize: CGFloat = 55.0
let squareImageSize: CGFloat = 25.0
@ObservedObject
var startViewModel: StartViewModel
@State
private var selectedLang: Bool = false
@State
private var delayedSelect: Bool = false
@State
private var currentTagline = ""
@State
private var animationAmount = 0.0
@State
private var pickedLanguage: LanguageSelection = .English
@State
private var didContinue: Bool = false
init(viewModel: StartViewModel) {
startViewModel = viewModel
}
var body: some View {
GeometryReader { geometry in
let width = geometry.size.width
let height = geometry.size.height
NavigationView {
ZStack {
Color.litewalletDarkBlue.edgesIgnoringSafeArea(.all)
VStack {
Spacer()
Image("new-logotype-white")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: width * 0.6)
.padding(.top, height * 0.05)
.padding(.bottom, height * 0.05)
Text(currentTagline)
.font(buttonLightFont)
.multilineTextAlignment(.center)
.fixedSize(horizontal: false, vertical: true)
.foregroundColor(.white)
.frame(width: width * 0.7, height: height * 0.05, alignment: .center)
.padding(.top, height * 0.02)
.padding(.bottom, height * 0.08)
.onAppear {
currentTagline = startViewModel.staticTagline
}
HStack {
ZStack {
Picker("", selection: $pickedLanguage) {
ForEach(startViewModel.languages, id: \.self) {
Text($0.nativeName)
.font(selectedLang ? buttonFont : buttonLightFont)
.foregroundColor(.white)
}
}
.pickerStyle(.wheel)
.frame(width: width * 0.5)
.onChange(of: $pickedLanguage.wrappedValue) { _ in
startViewModel.currentLanguage = pickedLanguage
selectedLang = true
currentTagline = startViewModel.taglines[startViewModel.currentLanguage.rawValue]
startViewModel.speakLanguage()
delay(1.5) {
delayedSelect = true
}
}
Image(systemName: "checkmark.message.fill")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: squareImageSize, height: squareImageSize, alignment: .center)
.foregroundColor(selectedLang ? .litewalletGreen : .litecoinGray.opacity(0.4))
.shadow(radius: 6, x: 3.0, y: 3.0)
.padding(.all, 4.0)
.frame(width: width * 0.3, height: squareButtonSize, alignment: .center)
.offset(CGSize(width: width * 0.18, height: -height * 0.03))
.scaleEffect(CGSize(width: animationAmount, height: animationAmount))
.animation(
.easeInOut(duration: 1.8).repeatCount(5),
value: animationAmount
)
.onAppear {
animationAmount = 1.0
}
}
}
.frame(width: width * 0.9, height: height * 0.1, alignment: .center)
.alert(startViewModel.alertMessage[startViewModel.currentLanguage.rawValue],
isPresented: $delayedSelect) {
HStack {
Button(startViewModel.yesLabel[startViewModel.currentLanguage.rawValue], role: .cancel) {
// Changes and Dismisses
startViewModel.setLanguage(code: startViewModel.currentLanguage.code)
selectedLang = false
}
Button(startViewModel.cancelLabel[startViewModel.currentLanguage.rawValue], role: .destructive) {
// Dismisses
selectedLang = false
}
}
}
Spacer()
// âś… Create Wallet Button (Restored)
NavigationLink(destination:
AnnounceUpdatesView(navigateStart: .create,
language: startViewModel.currentLanguage,
didTapContinue: $didContinue)
.environmentObject(startViewModel)
.navigationBarBackButtonHidden(false)
) {
ZStack {
RoundedRectangle(cornerRadius: bigButtonCornerRadius)
.frame(width: width * 0.9, height: 45, alignment: .center)
.foregroundColor(.white)
.shadow(radius: 3, x: 3.0, y: 3.0)
Text(S.StartViewController.createButton.localize())
.frame(width: width * 0.9, height: 45, alignment: .center)
.font(buttonFont)
.foregroundColor(.litewalletBlue)
.overlay(
RoundedRectangle(cornerRadius: bigButtonCornerRadius)
.stroke(.white, lineWidth: 2.0)
)
}
}
.padding([.top, .bottom], 10.0)
// âś… Recover Wallet Button (Restored)
NavigationLink(destination:
AnnounceUpdatesView(navigateStart: .recover,
language: startViewModel.currentLanguage,
didTapContinue: $didContinue)
.environmentObject(startViewModel)
.navigationBarBackButtonHidden(false)
) {
ZStack {
RoundedRectangle(cornerRadius: bigButtonCornerRadius)
.frame(width: width * 0.9, height: 45, alignment: .center)
.foregroundColor(Color(UIColor.liteWalletBlue))
.shadow(radius: 5, x: 3.0, y: 3.0)
Text(S.StartViewController.recoverButton.localize())
.frame(width: width * 0.9, height: 45, alignment: .center)
.font(buttonLightFont)
.foregroundColor(Color(UIColor.litecoinWhite))
.overlay(
RoundedRectangle(cornerRadius: bigButtonCornerRadius)
.stroke(.white)
)
}
}
.padding([.top, .bottom], 10.0)
Text(AppVersion.string)
.frame(width: 100, alignment: .center)
.font(tinyFont)
.foregroundColor(.white)
.padding(.all, 5.0)
}
.padding(.all, swiftUICellPadding)
}
}
}
.alert(S.LitewalletAlert.error.localize(),
isPresented: $startViewModel.walletCreationDidFail,
actions: {
HStack {
Button(S.Button.ok.localize(), role: .cancel) {
startViewModel.walletCreationDidFail = false
}
}
})
}
}
so can you create a pr?
I haven’t tested that code yet - was hoping that presenting the likely cause and a proposed fix would make it a very easy job for whoever posted the bugged update to sort out…
I could create a new fork and do a pull request if the bug keeps getting ignored, although it involves digging out my trusty old MacBook Pro to test with XCode first (I defected to Arch Linux since Apple decided to make their computers unupgradable).
ok but guys, if no repo owner answers here... after two weeks
and no user is able to use the iPhone app
this looks like abandon-ware
I understand now why alt-coins are so devaluated
will close the issue
I had a response from the app developer on X who is looking to deploy a fix - https://x.com/loshan1212/status/1900975027417215338?s=46&t=mgEpFzUfgRCIMshMww056Q
@fibo working to deploy to fix, unfortunately to get an update approved on the App Store is extremely difficult. It took us nearly 2 months to get the previous update released for example.
Any update on the fixed Litewallet for iOS ?