codexier.

Mobile Apps

Preparing Your App for a Traffic Spike

By CodexierPublished 5 min read

A push notification to every user, a newsletter, a TV feature or a campaign timed for payday on the 25th can send more people into your app in ten minutes than it usually sees in a week. If the backend cannot cope, you pay for the attention and then show everyone an error. This guide covers how to find your limits before the day, test them on a small budget, add headroom where it counts, and design the app to degrade gracefully instead of falling over.

Know your current limits

Start with an estimate. How many users could open the app in the first ten minutes? A push to all users or a mention on national TV can produce a large share of your whole user base at once. Then list what each user does on opening: log in, load a start screen, fetch offers, maybe pay. Each of those calls hits your backend, and the weakest one sets your limit.

  • Database connections: many hosted databases allow a fixed number, and they run out before CPU does.
  • Third-party limits: SMS providers, payment services and BankID integrations have rate limits and sometimes queues.
  • Heavy endpoints: one unoptimised query on the start screen can slow everything else.
  • Hosting plans with fixed capacity, or serverless functions with cold starts and concurrency caps.

Load testing on a budget

Load testing does not require expensive tools. Open-source tools such as k6 or Artillery can simulate hundreds or thousands of users from a laptop or a cheap cloud machine. The important part is testing realistic behaviour, not just hammering one URL.

  1. Test against a staging copy with production-like data, never directly against live payments.
  2. Script the real user journey: open app, log in, load start screen, perform the campaign action.
  3. Ramp up gradually and note at what load response times start rising.
  4. Check the database and third-party dashboards during the test, not just the test tool.
  5. Fix the first bottleneck, then test again. There is always a next one.

Backend and database headroom

MeasureWhat it doesWhen to use
CachingServes the same response to many users without asking the databaseStart screens, product lists, campaign content
CDN for images and filesDelivers static content from servers near the userAlways, for images and app assets
Connection poolingShares database connections between requestsWhen connections run out before CPU
Temporary scale-upMore capacity for the campaign periodManaged databases and hosting that allow it
Queues for slow workHandles emails, receipts and syncs in the backgroundAnything the user does not need to wait for

Tell your third-party providers in advance. SMS and payment providers can often raise limits temporarily if you ask, but not in the middle of the spike.

Graceful degradation

Graceful degradation means the app keeps its most important function when parts are overloaded. Instead of a blank error screen, users see cached content, a friendly message or a queue. Decide in advance what matters most on the day.

Feature flags

Switch off non-essential features, such as recommendations or chat, from a dashboard without releasing a new app version.

Cached fallback

If the live offer list cannot load, show the last known version instead of an error.

Waiting room

For ticket or limited drops, a queue is better than everyone hitting checkout at once.

Clear messages

Tell users what is happening and when to try again, in Swedish and in plain words.

Stagger push notifications instead of sending to everyone in the same second. Sending in batches over fifteen or thirty minutes spreads the load at almost no cost to the campaign.

Monitoring on the day

  • A named person watching dashboards for errors, response times and database load.
  • Alerts that reach a phone, not just an inbox.
  • A short runbook: which flags to switch off, how to scale up, who to call at each provider.
  • No new releases on the day. Freeze the app and backend a few days before.

Our app maintenance and scaling service covers load tests, headroom and monitoring for existing apps, and our pricing page shows the monthly price. When you do not need this: if your campaign reaches a few hundred users spread over a day, a well-built app on managed hosting will handle it without special preparation. Read our mobile app security checklist for the other side of readiness, or book a call if a big day is coming up.

Frequently asked questions

How long before a campaign should we load test?

At least two to three weeks, so there is time to fix bottlenecks and test again. A test the day before only tells you that you have a problem.

Will moving to the cloud solve scaling automatically?

No. Cloud hosting can add capacity quickly, but databases, third-party limits and slow code still set the ceiling.

Is it safe to load test in production?

Rarely. Use a staging copy, and never run load tests against real payment or BankID flows.

What is the cheapest improvement?

Caching content that does not change per user, and staggering push notifications. Both cost little and remove a large part of the peak.

A big day coming up?

Book 15 minutes. Tell us about the campaign and your app, and we will tell you where the risks are and what to test before the day.

Book a free 15-minute call