How it works
What a session actually contains
No vague promises, just the mechanics: how a track gets picked, how the difficulty gets set, and what five minutes of practice actually involves.
Picking a track
You start by choosing a track: a language, a framework, or a broader subject like system design. Free accounts can keep two tracks active at once, so most people pick the stack they use at work plus the one they are trying not to lose.
The full catalog, including tracks that have not shipped content yet, is on the tracks page.
Everything described on this page is included on the free plan, see the pricing page for the exact terms.
Telling us how rusty you are
For each track, you pick one of four self-assessments: Newbie, Rusty, Comfortable, or Sharp. Nobody is grading this and it is not a placement test, it just sets where you start. Difficulty runs 1 to 5 across every track. Newbie opens difficulty 1 and 2, Rusty opens 1 through 3, Comfortable opens 2 through 4, and Sharp starts you at 3 through 5.
From there the app adjusts on its own, between sessions rather than mid-session: string together roughly 80 percent correct over your last several answers and the next session nudges harder within your band, drop to around 40 percent and it eases back. Say Sharp and stay there if the questions keep feeling too easy, that is not how it is supposed to go for long.
What is actually in a session
A session is five tasks, not fifty. That is the whole design: something you can finish standing in line, not something that needs a block of calendar time. Roughly 40 percent of the tasks are review, concepts you have seen before that are due to come back. The rest are new ground in the track you picked.
The tasks come in five formats. A multiple-choice question asks about a concept directly: four or five options, one correct answer, an explanation once you commit. A code-reading task is the same shape built around a snippet: what does this output, which line has the bug, what is the time complexity. Fill-in-the-blank hands you a snippet with one to three blanks and a bank of tokens to place, closer to a word bank than a text editor. True/false gives you a statement about the language or framework and asks you to commit before it explains why. Order-the-steps shuffles three to seven lines, a request lifecycle or a hook's execution order, and asks you to put them back in sequence.
Every task ends the same way regardless of format: right or wrong, you get the explanation. Missing one does not just cost you the point, it also queues that concept to come back sooner.
How spaced repetition decides what comes back
Every concept you touch gets its own review schedule. Answer correctly and the interval stretches: a day, then three days, then roughly a week, then a few weeks, then a couple of months, with a ceiling of about six months even for something you know cold. Get it wrong and the interval resets to tomorrow, and the concept's mastery level takes a step back.
The app does not wait for you to notice you have gone rusty. Once a review sits unanswered long enough past its due date, it gets marked overdue and then cracked, visibly, before you have even opened the session, because seeing a skill degrade is most of the point.
What the streak forgives, and what it does not
Finishing one session in any enrolled track, on any day, keeps the streak alive. It does not matter which track, and it does not matter if you did more than one.
Miss a day entirely and the app automatically spends a banked freeze to cover it, free accounts can hold up to three at a time. Miss more days than you have freezes banked and the streak resets to one, though the freezes themselves are not spent by a reset, they carry over. There is no way to buy back a broken streak after the fact. A streak that can always be rescued stops meaning anything.
A session, start to finish
Say you enrolled in React at Rusty a few weeks ago. You open the app, tap start, and five tasks load. The first two are reviews: a fill-in-the-blank on useEffect cleanup timing that was due yesterday, and a true/false about when a memoized component still re-renders, both concepts you got right the first time and are now due again on a longer interval.
The next three are new ground: a code-reading question on a custom hook's dependency array, a multiple-choice question on why a key prop matters in a list, and an order-the-steps on the commit phase of a render. You get the memoized-component question wrong, so its interval resets to tomorrow and its mastery drops a level. You get the other four right.
The summary screen shows your XP for the session (an easier task pays less than a harder one, so the mix of reviews and new tasks pays differently), your current streak count, and which concepts just leveled up. Tomorrow's session includes that memoized-component review again, earlier than it otherwise would have.
Questions people actually ask
How long does a session actually take?
About five minutes for five tasks, though that varies with how much you read before answering.
What happens if I answer wrong?
You still see the full explanation, and the concept comes back sooner instead of later.
Can I do more than one session a day?
Yes. Free accounts have no daily session cap, only a cap of two active tracks at once.
Related reading
Is this actually like Duolingo?Built for engineers, not beginnersMore on staying sharpSee what your first session looks like.
Start a free session
