Engrain by ByteRush

Learn frontend so well it stays.

496 concepts, from your first HTML tag to staff-level system design and agentic AI. Each one is taught in five steps, tested in your browser, and kept in your memory with reviews that come back right before you forget.

Free. No login. Nothing to install.

The question that trips up most candidates

order.js

console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
console.log('D');

In what order do the letters print? Tap them in order.

Your order: tap the first one

Where are you going?

Every concept, the same five steps

The order is the method: explanation, then a guess, then the interview, then your hands, then memory.

  1. Learn

    One idea in under 250 words, with a picture or a step-by-step trace you can play.

  2. Predict

    Commit to an answer before you see it. Being wrong first is what makes it stick.

  3. Interview angle

    The 30-second answer to say out loud, the follow-ups you will get, and the answer that sinks people.

  4. Practice

    Real code, real tests, in your browser. Timed when it should be.

  5. Remember

    Three to five cards that come back just before you would forget them.

See it on a real page: Callbacks and timers, Call stack and run-to-completion, Tasks (macrotasks) and the task queue, Microtasks, Rendering steps, async/await in the event loop, The Node.js event loop and its phases, Scheduling and yielding to the main thread, Lexical scope and the scope chain, Hoisting and the temporal dead zone, Closures, Closures and memory, Strict mode and the global object, The four rules of `this`, Arrow functions and lexical `this`, call, apply and bind in depth, Objects, prototypes and the prototype chain, Constructor functions and `new`, Classes, Primitive types and `typeof`, Type coercion and ToPrimitive, Equality, Numbers, Map, Set, WeakMap, WeakSet, WeakRef, Shallow vs deep copy, Higher-order functions and composition, Currying and partial application, Memoization, Recursion and the stack, Destructuring, spread, rest and defaults, Optional chaining, nullish coalescing, logical assignment, ES modules, CommonJS vs ESM and interop, Dynamic import, top-level await and code splitting, Promise internals, Error handling in async code, Promise combinators, Cancellation with AbortController, Race conditions in the UI, Retry, timeout and backoff, Concurrency control, Garbage collection, Finding and fixing memory leaks, Error types, cause and custom errors, Global error handling and source maps, Discriminated unions and exhaustive checks, User-defined type guards and assertion functions, as const, satisfies and literal inference, keyof, typeof and indexed access types, Conditional types and infer, Mapped types and key remapping, Implementing utility types, Typing hooks, reducers and context, Runtime validation at boundaries, Browser processes and navigation, Parsing HTML and CSS, Style, layout, paint and composite, Forced synchronous layout and layout thrashing, The critical rendering path, Efficient DOM updates, IntersectionObserver, Cookies in depth, Web Workers + SharedArrayBuffer, Atomics and cross-origin isolation, Service worker lifecycle, Caching strategies and offline, Forms in depth, dialog, popover and details, The cascade, specificity and inheritance, Custom properties and modern selectors, Tool calling.

Twelve tracks

What we promise, and what we don't

Finish your path and pass every gate, and you are ready for senior frontend or AI product engineer loops.

No guarantees — nobody can honestly promise you a job. What we can promise: every fact has a source, every code example runs in our tests,819 real interview questions are mapped to the concept that answers them, and the site only says “ready to apply” after you pass a full mock loop. Read the whole promise.