Changelog
8/18/2026
3 min read

Changelog: May 2026

Changelog: May 2026

May was the month we stopped adding to learning paths and started fixing how they felt. Three weeks of design work, an enrolment rewrite, and one decision that took a feature away.

It also brought the two things a platform needs before it can serve people properly: a way to pay from where our learners actually are, and a way to plan when to study.

New

Learning schedules

A learner sets a weekly rule on whatever they're working through: which days, what time, how long a session runs, and how far ahead to be reminded. Set it once and it repeats.

The part that took the work is the reminder. It doesn't say “you planned to study today” and drop you on a homepage — it links to the exact step you'd have been on, in the course, path or project the schedule belongs to. A reminder that makes you go looking is a reminder you close.

The learning schedule card in two states: on the left a form with days, time, duration, reminder offset and timezone; on the right the saved schedule reading Mon, Wed, Fri at 8:00 PM with an active badge and a seven-day streak.

Setting a schedule, and what it looks like once it's running.

Paystack payments

Payments through Paystack, alongside the existing provider. Most of our learners are in Nigeria and across Africa, and a checkout that assumes an international card is a checkout most of them abandon. This is the least glamorous item in this changelog and probably the one that changed the most behaviour.

Production authentication

A rebuilt authentication system, hardened for production, landing at the end of the month across both codebases.

Changed

Path locking was removed

Learning paths shipped in March with items locked until the preceding one was finished. In May we took the locks off.

The argument for locking is that a path is an order and the order is the point. The argument against it — the one that won — is that an experienced engineer arriving at a path already knows some of it, and making them click through material they've known for years to reach the part they need isn't rigour, it's friction. The order is still there as a recommendation. It just isn't a gate.

Learning paths, redesigned

Three weeks of design work through the middle of the month: a consistent layout, new item types on the timeline, proper sort order, and enrolment and access rewritten to be faster and to stop erroring on edge cases.

Improved

  • Speed. The offers path had an N+1 query problem — one query per item where one query for all of them would do. Fixed, and the remaining lookups parallelised.
  • API. Project creation and offer lookups moved off GraphQL onto plain REST handlers, which is simpler to reason about and faster to serve.
  • The code executor was extended, continuing April's move of code execution onto our servers.
  • Homepage updated.
  • Error handling. Null-pointer handling on optional parameters, and Sentry noise cleaned up.

Fixed

  • Project30 challenges failing to start, and failing to recover when a chunk didn't load.
  • Path previews loading slowly or not at all, with retry handling added.
  • Enrolment errors on learning paths.
  • A crash on Node 26 — the runtime is now pinned to 20.x.
  • TypeScript build errors across the schedules and core modules.
  • Database typing drift between the schema and the routes using it.

What This Set Up

By the end of May the platform could sequence a career, take money for it, and remind a learner when they'd planned to work. Everything a learner did was still marked complete by the learner.

June is where that ended — and June was the largest month of engineering work in the platform's history.

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.