Anki 24.04.2 Beta

Hi all,

A new beta is available for testing. Please report any regressions or problems you encounter.


I have a problem with the deck options’ page (occured since the last beta 24.04.1). When I try to minimize the window it flickers but noting happens. Unless I have another window on my screen, with this it works. I attached a screenshot with anki ran from the terminal. (The same is happening with addons diactivated)

(Hope I gave the info needed, I didn’t find a way to upload a video I took of the bug)

@L.M.Sherlock this is the version with the new rule for optimization and without the extra splits, right? I thought the optimizer will be faster, but it’s not. But more importantly, I added cards with >20 reviews in total to a test deck, yet parameters don’t change. With the new rule, parameters should definitely change. This is within the “pretrain” zone.
EDIT: currently, the deck has 10 cards with 94 reviews in total, yet parameters still don’t change, even though this is clearly past the “pretrain” zone and already in the “full optimization” zone.

Did you see this popup?



Could you send the deck to me? I need to reproduce this problem.

Ok, false alarm. Seems like the optimizer is working as intended, it’s just that the outlier filter is a little too aggressive.
What should we tell the users, though? I mean, if someone asks “How many reviews do I need to run the optimizer?”, what’s the answer?

@dae, I find that if the user optimize the parameters in a very new deck, the fsrs_items could be zero. In this case, fsrs will return NotEnoughData error. I recommend returning the default parameters in this case. What do you think of?

2024-04-14 02:02:34,454:DEBUG:aqt.mediasrv: POST /_anki/computeFsrsWeights
[rslib/src/scheduler/fsrs/] &fsrs_items = 0
Traceback (most recent call last):
  File "/Users/jarrettye/Codes/anki/qt/aqt/", line 655, in wrapped
    if data := handler():
  File "/Users/jarrettye/Codes/anki/qt/aqt/", line 636, in <lambda>
    return lambda: getattr(, f"{endpoint}_raw")(
  File "/Users/jarrettye/Codes/anki/out/pylib/anki/", line 943, in compute_fsrs_weights_raw
    return self._run_command(11, 28, message)
  File "/Users/jarrettye/Codes/anki/pylib/anki/", line 171, in _run_command
    raise backend_exception_to_pylib(err)
anki.errors.InvalidInput: Insufficient review history to perform this operation.

It’s uncertain. Even if the user has 1000 reviews of the same card, they still cannot run the optimizer. Because they only has 1 reviews for pretraining, which will be filtered out by the outlier filter. But it’s a very rare case. In common, 100 reviews are enough.

1 Like

When will be this beta be available on iOS?

Please check again that add-ons were disabled.

Sounds good.

Within a few days.

I am no longer able to inject custom options using the method in the demo addon. This seems to have broken at the commit when the switch to sveltekit was made. I’m not sure whether this is intended or not?

I’m fixing it in Return current weights if fsrs items is zero & handle error in evaluation and optimal retention by L-M-Sherlock · Pull Request #3141 · ankitects/anki (, and I find out more problems.

1 Like

The dropdown arrows and the help and reset options on the Deck Options page are black in dark mode, causing poor contrast.

1 Like

Yes, this time addons were disabled and the problem still occured.

Actually I was asking if this beta would be available for beta testing on iOS.

It should be possible to restore this functionality - I’ve logged the issue on Restore ability for add-ons to extend the deck options screen · Issue #3146 · ankitects/anki · GitHub

Tracked on SVG icon styling is broken · Issue #3127 · ankitects/anki · GitHub

I can’t seem to reproduce this. Is anyone else seeing it?

Yep, I understood you. I expected it to be ready by now, but it may take a few more days I’m afraid.

Thank you so much!!

I never get an error message even if I type random letters in the FSRS optimization field, the one that normally says preset:"PresetName".

Maybe because steps for the current deck are used, when Learning cards in a subdeck are due according to its steps, they appear as due in the deck list row for the parent deck where they are not yet due. Or maybe the reason is actually different, because it can happen long after the cards should be ready?

Sometimes, non-parenthesized learning cards do not appear, usually it’s when there are new cards available.

Just happened: the deck list for the main deck showed something like “3(+(3))”, but the deck itself did not show learning cards. A deeper deck without the “(+(3))” showed them.
“Learn ahead limit” = 0.
Both had new cards to introduce.
I reviewed those cards.

When the other 3 cards became due in different subdecks, the same thing happened. The steps in the main deck are 1s 22m, the steps in the subdecks are 1s 21m. After reviewing one of those cards, the cards appear in the main deck.