ServiceStack v10.3 Released: Durable Background Jobs, Next SaaS & Next License Templates

ServiceStack v10.3 is a major upgrade to Background Jobs. It’s no longer just a way to move work off the request thread. It’s now a durable job platform for the work your business depends on, like payments, emails, imports, reports and third-party API calls. You use the same IBackgroundJobs API on the same database, with no broker to deploy.
Background Jobs highlights
- Scale out across App Servers: the RDBMS provider now runs safely on any number of servers sharing PostgreSQL, SQL Server or MySQL. Jobs are claimed with a lease, and if a server crashes its Jobs are recovered automatically.
- Graceful shutdown: deploys no longer lose work. Running Jobs are given time to finish, and claimed Jobs that haven’t started yet go straight back to the queue.
- Queues, priorities and runtime controls: named queues each have their own concurrency. You can pause, resume and throttle a queue while your App is running, and set rate limits for third-party APIs that are counted across every server.
- Never do the same work twice: idempotent enqueue with
RefId, Singleton Jobs withSingletonKey, and a transactional outbox that saves Jobs in the same transaction as your data. - Resilient failure handling: retries back off with exponential jitter, and every failed attempt is recorded. Jobs can expire with
ExpiresIn, timeouts are enforced, and cancellation reaches whichever server is running the Job. - Workflows and batches: build multi-step workflows where steps depend on each other. Fan out batches with live progress and completion callbacks, and use
ConcurrencyKeyto keep each tenant’s Jobs in order. - Get results back: await a Job’s result in the same request, or have it delivered to a webhook or MQ with
ReplyTo. - Production-grade schedules: recurring tasks support time zones and overlap policies, and each occurrence is queued only once, however many servers you run.
- Updated Admin UI: new per-queue controls, a Nodes view of your App Servers, batch progress, replay and bulk actions, and live progress and logs for running Jobs.
Upgrading requires a schema change. The schema is upgraded automatically on startup, and Jobs still queued or running when you upgrade are cleared. If you run multiple servers, stop all of them before starting v10.3. Read the upgrade guide before deploying.
New Next.js SaaS & License Templates
This release adds two new production-ready React Templates, built with .NET 10, ServiceStack and Next.js 16. They take care of the parts every commercial product needs, like taking payments, managing customers and running the business, so you can spend your time on your product.
Next SaaS
Next SaaS is a starting point for multi-tenant B2C and B2B SaaS products. It includes the public site, the customer app and the back office from day one:
- Public Site: a landing page, pricing rendered from your plans, Identity sign up and Stripe Checkout with trials, coupons and promotion codes
- Customer App: organization dashboards, file storage, real-time usage meters and quotas, billing through the Stripe Customer Portal, team roles, API keys, audit logs and data export
- Operations Center: commercial health, a Customer 360 view, a plan editor, Stripe-synced coupons, usage analytics and recovery of failed webhooks, jobs and integrations
npx create-net next-saas ProjectName
Next License
Next License lets you sell perpetual, offline-verified licenses for your .NET and Electron desktop apps, with no activation server to run:
- Purchase: customers choose an offer and pay with Stripe Checkout
- Fulfill: a Stripe webhook confirms the payment and signs an ES256 JWT license key
- Deliver: customers copy their key from My licenses
- Unlock: your app verifies the key offline and enables Pro features
The storefront also includes downloads from your GitHub releases, license transfers and an Operations Center where you manage products, pricing, licenses, orders and refunds.
npx create-net next-license ProjectName
Also in this release
- MCP connections in AI Chat: connect AI Chat to remote MCP servers such as GitHub using a Bearer token or OAuth. You choose which tools each conversation can use and approve each tool call before it runs.
- AI Chat, organized by project: a redesigned chat UI groups conversations into project folders. New chats get auto-generated titles, each conversation keeps its own draft, and you can drag and drop attachments anywhere on the chat.
- API Rate Limiting: add opt-in ASP.NET Core rate limiting to your APIs with
[RateLimiting], or bind a policy to a[Tag]so several APIs share one budget. - OpenTelemetry tracing: follow a request from the API through outbound HTTP calls, MQ messages and Background Jobs in one distributed trace. Traces also show up in the Profiling UI. Add it to your App with
npx add-in opentelemetry. - Async Bulk Inserts: OrmLite adds
BulkInsertAsync, contributed by @DeonHeyns.
Read the full release notes
There’s a lot more in this release, including interactive demos, code examples and the full upgrade checklist:
Read the ServiceStack v10.3 Release Notes
You can also listen to the v10.3 podcast episode. As always, we’d love to hear your feedback, so please reply here with any questions or issues.