← Back to home

Last updated: March 30, 2026

Queuebase vs Quirrel

The Core Difference

Quirrel was a pioneering job queue for serverless apps — it introduced the HTTP callback pattern for Next.js background jobs. Its hosted service shut down in July 2022 after creator Simon Knott was acquired by Netlify. The open-source repo is in maintenance mode with no active development.

Queuebase picks up where Quirrel left off. Same callback architecture, but with a modern TypeScript-first API, built-in CRON scheduling, a monitoring dashboard, and an actively maintained hosted service.

QuirrelQueuebase
StatusMaintenance mode (hosted service shut down July 2022)Actively developed and maintained
ArchitectureHTTP callbackHTTP callback
Type SafetyBasic TypeScript (manual payload typing)tRPC-style router with Zod validation
Job DefinitionQueue() and CronJob() per-filecreateJobRouter() with all jobs in one router
MonitoringLocal dev UI onlyFull dashboard with job history, metrics, and logs
CRON SchedulingYes (cron expressions)Yes (cron expressions and plain English)
Hosted ServiceShut downAvailable with free tier

Why Quirrel Users Switch

When Quirrel’s hosted service shut down, users faced a choice:

  1. Self-host Quirrel — Run the Quirrel Docker image + Redis. This works, but adds operational overhead that defeats the purpose of choosing serverless in the first place.
  2. Switch to Vercel Cron — Covers scheduled tasks but not delayed jobs or one-off background processing.
  3. Switch to a general-purpose queue — BullMQ, Inngest, or Trigger.dev. These work, but are more complex than what most Next.js apps need.

Queuebase is the option that didn’t exist when Quirrel shut down: a hosted service with the same callback architecture, built specifically for Next.js, with a modern DX.

Architecture Comparison

Both Quirrel and Queuebase use the same fundamental model: your app defines HTTP endpoints, and the service calls them when jobs are ready to execute. This means jobs run on your own infrastructure with full access to your database, environment variables, and services.

The difference is in how you define and manage jobs.

Quirrel

// pages/api/send-email.ts (one file per queue)
import { Queue } from "quirrel/next";

export default Queue("api/send-email", async (payload: {
  to: string;
  subject: string;
  body: string;
}) => {
  await sendEmail(payload);
});

// Enqueue from elsewhere
import sendEmailQueue from "./api/send-email";
await sendEmailQueue.enqueue(
  { to: "user@example.com", subject: "Hello", body: "World" },
  { delay: "5m", retry: ["1min", "5min", "30min"] }
);

Queuebase

// src/jobs/index.ts (all jobs in one router)
import { createJobRouter, job } from "@queuebase/nextjs";
import { z } from "zod";

export const jobs = createJobRouter({
  sendEmail: job({
    input: z.object({
      to: z.string().email(),
      subject: z.string(),
      body: z.string(),
    }),
    handler: async ({ input, jobId, attempt }) => {
      await sendEmail(input);
      return { sent: true };
    },
    defaults: {
      retries: 3,
      backoff: "exponential",
    },
  }),
});

// Enqueue with full type safety
await jobClient.sendEmail.enqueue({
  to: "user@example.com",
  subject: "Hello",
  body: "World",
});

Key DX differences

  • Job organization: Quirrel creates one file per queue. Queuebase groups all jobs in a single router, similar to tRPC.
  • Type safety: Quirrel relies on manual TypeScript annotations for payloads. Queuebase uses Zod schemas that validate at runtime and generate types for the client.
  • Retry configuration: Quirrel uses an array of delay strings. Queuebase uses a declarative config with retries count and backoff strategy.
  • Client: Quirrel imports queue functions directly. Queuebase generates a fully typed client from the router — autocomplete for job names, input validation, and type-checked payloads.

Feature Comparison

FeatureQuirrelQueuebase
Runtime validationNo (TypeScript only)Yes (Zod / Standard Schema)
RetriesArray of delay strings (max 10)Configurable count with linear/exponential backoff
CRON schedulingYes (cron expressions, timezones)Yes (cron expressions, plain English, timezones, overlap policies)
Delayed jobsYes (delay or runAt)Yes (delay)
Exclusive modeYes (serial execution per queue)Per-job concurrency controls
Idempotent jobsYes (custom id parameter)Not yet available
Bulk enqueueYes (enqueueMany, up to 1,000)Not yet available
DashboardLocal dev UIFull web dashboard with job history, metrics, and logs
MonitoringNone in productionReal-time status, run history, and performance metrics
Hosted serviceShut down (July 2022)Available with free tier (10,000 jobs/month)
Self-hostedDocker + RedisCLI + SQLite (local dev)
Framework supportNext.js, Blitz.js, Nuxt, SvelteKit, NetlifyNext.js (primary), Node.js
Active developmentNoYes

Pricing Comparison

QuirrelQueuebase
Hosted serviceShut downFree: 10,000 jobs/month, 5 concurrent, 7-day retention
Self-hostedFree (requires Docker + Redis)Free (CLI for local dev)
Pro tierN/A$29/month: 100,000 jobs, 50 concurrent, 30-day retention

When Quirrel Might Still Work

  • Existing projects: If you already have Quirrel self-hosted with Redis and it’s stable, there’s no urgent reason to migrate.
  • Quirrel-specific features: Idempotent jobs via custom IDs and enqueueMany for bulk operations aren’t in Queuebase yet.

When to Choose Queuebase

  • New projects: Starting fresh with Next.js background jobs — Queuebase is actively maintained with modern DX.
  • Leaving self-hosted Quirrel: You don’t want to manage Docker + Redis just to run background jobs.
  • Production monitoring: You need visibility into job status, failures, and performance beyond local dev.
  • Type safety: You want runtime validation and a fully typed client, not just TypeScript annotations.
  • CRON scheduling: You want dashboard-managed schedules with plain English support, overlap policies, and manual triggers.

Summary

Quirrel was ahead of its time — it proved that the HTTP callback model is the right architecture for serverless background jobs. But with its hosted service shut down and the project in maintenance mode, teams building new Next.js apps need an actively maintained alternative. Queuebase carries forward the same callback architecture with a modern tRPC-style API, Zod validation, a production monitoring dashboard, and a hosted service with a generous free tier.


Question: What is the best alternative to Quirrel for Next.js? Answer: Queuebase is the closest alternative to Quirrel. It uses the same HTTP callback architecture, is built specifically for Next.js, and is actively maintained with a hosted service. For teams that need complex workflows or long-running tasks beyond simple job queuing, Inngest or Trigger.dev are also worth evaluating.