{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://inquir.org/#organization","name":"Inquir","url":"https://inquir.org","logo":{"@type":"ImageObject","url":"https://inquir.org/favicon.png","width":256,"height":256}},{"@type":"WebSite","@id":"https://inquir.org/#website","name":"Inquir Compute","url":"https://inquir.org","publisher":{"@id":"https://inquir.org/#organization"}},{"@type":"WebPage","@id":"https://inquir.org/background-jobs-for-nextjs#webpage","url":"https://inquir.org/background-jobs-for-nextjs","name":"Background jobs for Next.js without after() hacks or worker servers","headline":"Background jobs for Next.js without after() hacks or worker servers","description":"Background jobs for Next.js: compare after(), Server Actions, and Route Handlers vs Vercel limits—enqueue async work on Inquir pipelines without timeout hacks, self-hosted queues, or losing observability.","inLanguage":"en-US","isPartOf":{"@id":"https://inquir.org/#website"},"breadcrumb":{"@id":"https://inquir.org/background-jobs-for-nextjs#breadcrumb"},"author":{"@id":"https://inquir.org/#organization"},"datePublished":"2025-01-01T00:00:00.000Z","dateModified":"2026-06-23T00:00:00.000Z","citation":{"@type":"CreativeWork","url":"https://inquir.org/docs"}},{"@type":"BreadcrumbList","@id":"https://inquir.org/background-jobs-for-nextjs#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://inquir.org/"},{"@type":"ListItem","position":2,"name":"Compare","item":"https://inquir.org/compare"},{"@type":"ListItem","position":3,"name":"Background jobs for Next.js","item":"https://inquir.org/background-jobs-for-nextjs"}]},{"@type":"Article","@id":"https://inquir.org/background-jobs-for-nextjs#article","headline":"Background jobs for Next.js without after() hacks or worker servers","description":"Background jobs for Next.js: compare after(), Server Actions, and Route Handlers vs Vercel limits—enqueue async work on Inquir pipelines without timeout hacks, self-hosted queues, or losing observability.","image":"https://inquir.org/opengraph-image.png","inLanguage":"en-US","author":{"@id":"https://inquir.org/#organization"},"publisher":{"@id":"https://inquir.org/#organization"},"datePublished":"2025-01-01T00:00:00.000Z","dateModified":"2026-06-23T00:00:00.000Z","isPartOf":{"@id":"https://inquir.org/background-jobs-for-nextjs#webpage"}},{"@type":"FAQPage","@id":"https://inquir.org/background-jobs-for-nextjs#faq","url":"https://inquir.org/background-jobs-for-nextjs","isPartOf":{"@id":"https://inquir.org/background-jobs-for-nextjs#webpage"},"mainEntity":[{"@type":"Question","name":"Should I replace <code>after()</code> with Inquir?","acceptedAnswer":{"@type":"Answer","text":"Not always. Use <code>after()</code> for quick post-response work inside the timeout. Use Inquir when the job can fail independently, needs retries, runs on a schedule, or outlives the function invocation."}},{"@type":"Question","name":"Can I keep deploying Next.js on Vercel?","acceptedAnswer":{"@type":"Answer","text":"Yes. This page compares Next.js background patterns, not hosting. Keep Vercel for the frontend; Inquir handles the worker tier."}},{"@type":"Question","name":"How is this different from background jobs for Vercel?","acceptedAnswer":{"@type":"Answer","text":"Same architecture—thin frontend, Inquir for slow work. This page focuses on Next.js APIs (<code>after()</code>, Server Actions, Route Handlers) and when each stops being enough."}},{"@type":"Question","name":"Do I need a separate queue like BullMQ?","acceptedAnswer":{"@type":"Answer","text":"No. Inquir pipelines provide queuing, retries, and observability. Your Next.js code calls a gateway route; Inquir manages the rest."}}]}]}