Changelog
8/18/2026
3 min read

Changelog: April 2026

Changelog: April 2026

April doesn't have a headline feature, and pretending otherwise would be dishonest. It has 192 commits across the two codebases.

What it has instead is the month we chose between two competing ideas, opened the catalog to people without accounts, and quietly moved the first piece of code execution onto our own servers. The last one mattered more than anyone realised at the time.

New

Public courses

Course pages are readable without an account. Before this, evaluating whether Masteringbackend was worth signing up for required signing up. Paired with pagination and proper course types, the catalog became something you could actually browse rather than something you had to be let into.

Search engines can read those pages too, which was the other half of the same week's work.

Code execution moved to the backend

The in-browser editor stopped running submitted code in the browser and started sending it to our API instead.

On its own this is a plumbing change and a learner would barely notice. It is also the single most consequential commit of the month: every claim we make today about grading — the exercise playground, per-check results, Run test against a live endpoint — depends on code running somewhere we control rather than somewhere the learner controls. June gets the credit for that idea. April is where it started working.

Exercise points

Exercises began carrying MB, so practice counted toward the same total as everything else.

Changed

Roadmaps were deprecated

April opened by building roadmaps out properly — a new endpoint, preview access for signed-out users, attached resources, per-item completion. It closed by deprecating them.

The reason is that March had already shipped learning paths, and the two answered the same question. A roadmap told a learner what to study; a path told them what to study, in what order, mixing seven kinds of work, with progress attached. Keeping both would have meant maintaining two answers and letting learners pick the weaker one.

Three weeks of work, deprecated in the same month it was finished. That's the cost of choosing late rather than not choosing at all.

Improved

  • Analytics. Segment was replaced with PostHog across both codebases, and the gaps in what we were tracking were filled in — sign-ups in particular. We were making product decisions on incomplete data before this.
  • Assignment approval. Instructors can approve submitted assignments.
  • Learning paths. Marking a path complete now works, as does marking individual items, and the path completion email was corrected.
  • Quizzes. Unselected options got a visible border, and dark mode styling was fixed — two small things that made the difference between a quiz you can answer confidently and one you have to squint at.
  • Pricing links. Upgrade links carry the price through the query string, so the checkout a learner lands on matches the one they clicked.
  • Speed. Caching added around user lookups, which sit on nearly every request.

Fixed

  • The redeem page crashing on an undefined achievement.
  • Milestone progress showing NaN instead of a number.
  • The code editor timing out.
  • Authentication bugs, OAuth login, and stale sessions surviving a 401.
  • Registration failures.
  • A duplicate weekly reminder email — some learners were getting it twice.
  • Project30 challenges failing to start.

What This Set Up

By the end of April the platform had one way to sequence learning instead of two, a catalog anybody could read, and code executing under our control. May was quiet by comparison. June was not.

The full year is written up in how we rebuilt Masteringbackend in 2026.

Enjoyed this article?

Subscribe to our newsletter for more backend engineering insights and tutorials.