actualbudget / actual

A local-first personal finance app
https://actualbudget.org
MIT License
15.58k stars 1.21k forks source link

[Bug]: iOS PWA, amount gets focused but no keyboard pops up when adding new transaction #2392

Open judge opened 8 months ago

judge commented 8 months ago

Verified issue does not already exist?

Is this related to GoCardless, Simplefin or another bank-sync provider?

What happened?

On iOS (either as a PWA or in Safari), when you tap New Transaction, the amount gets focused, but you cannot enter the amount because the keyboard does not appear. You have to unfocus and refocus the amount to be able to enter the amount. And then you cannot immediately focus on the payee or any other field. After you have entered the amount, if you tap on any of the next fields (payee or category), the amount gets unfocused first and then you have to tap again the field to select payee or category.

This flow makes entering transactions really slow and frustating. :( Is it possible to fix this? Thanks!

https://github.com/actualbudget/actual/assets/9569/1f417e78-585f-4941-9252-265382aaf127

What error did you receive?

No response

Where are you hosting Actual?

Fly.io

What browsers are you seeing the problem on?

Safari

Operating System

Mobile Device

Kidglove57 commented 8 months ago

I agree and indeed the mobile experience is still work in progress. I would be interested to know the reason for the current behaviour as I’m sure there is one, rather than an oversight. You do get used to it and develop different muscle memory over time!

trevdor commented 8 months ago
  useEffect(() => {
    if (adding) {
      onTotalAmountEdit();
    }
  }, []);

https://github.com/actualbudget/actual/blob/master/packages/desktop-client/src/components/transactions/MobileTransaction.jsx#L492-L496

I see the convenience of the total amount being auto-focused if you intend to start by entering the amount.

Personally, though, I don't always start with Amount (for instance, if I've started the entry knowing the Payee/Category/etc but awaiting the total). And right now the keyboard isn't showing on autofocus on iOS. (The first tap clears focus and a second tap triggers re-focus with the keyboard.)

❓ Does the keyboard show as expected on Android?

My preference would be to drop this useEffect and let folks tap any field for their first input, triggering the relevant keyboard.

Alternatively, I could see triggering the keyboard explicitly. Maybe manually firing focus of some kind on the <FocusableAmountInput>.

What do you think, @joel-jeremy?

Teprifer commented 8 months ago

Android Firefox, keyboard appears as soon as the enter transaction page loads.

I think the auto selecting behaviour should remain, it's the first field on the page, and the amount is the one detail I'm actually trying to remember after having just made the purchase so it makes sense to enter it first.

joel-jeremy commented 7 months ago

This seems to be an issue with iOS (16 or lower) where programmatically focusing an element won't show the keyboard. It only shows when the focus is triggered by a user action: https://stackoverflow.com/a/74636176

MarcAroni81 commented 4 months ago

This seems to be an issue with iOS (16 or lower) where programmatically focusing an element won't show the keyboard. It only shows when the focus is triggered by a user action: https://stackoverflow.com/a/74636176

At least it’s behaving the same in iOS 17.6 (latest)

tatsumain commented 1 month ago

On Android 14:

Chrome / Chrome PWA: keyboard does not show up on entering add a transaction page, focused on the amount Firefox: keyboard does show and is focused on the amount. if I close the keyboard (or just try to tap on other fields) without entering an amount, focus stays on the amount.

MarcAroni81 commented 1 month ago

This seems to be an issue with iOS (16 or lower) where programmatically focusing an element won't show the keyboard. It only shows when the focus is triggered by a user action: https://stackoverflow.com/a/74636176

At least it’s behaving the same in iOS 17.6 (latest)

Also confirmed on iOS18.1

My two Cents: I would also love to see it work that keyboard is automatically shown as soon as create a new transaction. (== to fix this bug)

Regarding the philosophy: Maybe we should let the user decide how it should behave and offer a switch in the options area? Just one idea