Looking back on 2025, and what's next

Max Rozen

Max Rozen / Published: January 11, 2026

Continuing on with the tradition I started to wrap up 2024, in this article I'll go over what's new in OnlineOrnot from 2025.

Table of Contents

What went live in 2025

In 2025, I committed changes to OnlineOrNot 1347 times across 229 days (35% more than in 2024). The way I work remains unchanged - folks contact me about things they wish OnlineOrNot could do, I look at how that fits in with the existing roadmap, and I build it in the two hours a day I have before my workday starts.

It's always an odd feeling looking at these stats at the end of a year as a founder - you feel as though you didn't release nearly enough features that your customers ask for while simultaneously being impressed at the amount of work shipped.

General

Checks

Status Pages

  • migrated status page queries to ClickHouse for significantly faster load times
  • added incident resolution time display so subscribers can see how long incidents took to resolve
  • improved the subscriber modal experience
  • added an RSS feed for status page updates
  • aligned status page dark mode with the main app's theme

Under the hood

This section is a bit more technical than the others, and is mainly for folks that want to know how OnlineOrNot runs under the hood.

2025 was a big year for revisiting infrastructure decisions I made while building OnlineOrNot. While many decisions made sense for the product at the time they were made, the product has grown, and boring technologies that were hard to adopt in the past became much easier.

  • Authentication rewrite
    • Migrated from Auth.js (originally known as NextAuth) to Better Auth, simplifying the codebase significantly and unlocking the ability to add SSO, password auth, and more.
  • Migrated timeseries data from Postgres to Clickhouse
    • Despite being well-optimised with covering indexes, the queries powering many of OnlineOrNot's dashboards were slowing down when you had too many uptime checks. Some queries were taking 600ms on average, with spikes above 10 seconds. Moving that data into Clickhouse dropped that down to 60ms on average.
  • Dropped Next.js and Remix, adopted React Router 7
    • Both the frontend for status pages (what you see when you load a status page such as the Hacker News status page) and the frontend for OnlineOrNot now run React Router 7 and the latest version of React, significantly simplifying both frontends.
  • Dropping GraphQL in favor of REST
    • While GraphQL let me iterate rapidly on OnlineOrNot's dashboard, each feature I built in GraphQL then had to be rewritten for REST. As a result, priorities got in the way, and the REST API lagged behind.
    • The fix is simple: all new code is written in REST, and I got to work migrating off GraphQL. The migration is still in progress, but it'll finish early in 2026.

Get the latest about OnlineOrNot

Every month or so (emphasis on the *or so*), I send a newsletter with an update of what's new in OnlineOrNot, subscribe below to receive it!

    You can unsubscribe at any time. Read the privacy policy.