Skip to content

Explainer

SMS And MMS Reliability On Android: What WizeSMS Has Fixed

The engineering behind SMS and MMS reliability on Android, shown through WizeSMS commits: error handling, SDK 31 push, scheduled SMS, Realm migration.

SMS And MMS Reliability On Android: What WizeSMS Has Fixed preview

Written by the Fulldive product engineering team, based on direct inspection of the repositories listed below.

Why SMS and MMS forwarding depends on reliability first

You cannot forward a message that never arrived. That sentence is the whole reason this post exists. Before any SMS and MMS forwarding feature is worth using, the underlying SMS app has to receive, store, and notify you about messages correctly on every Android version it supports. WizeSMS (package com.fulldive.extension.divesms, previously Dive SMS) has a 2,474-commit history stretching back to 2015 for exactly this reason: a long tail of platform changes, OEM skins, and edge cases that each had to be handled.

This post walks through the reliability commits that matter most, so you can see what “reliable SMS forwarding” actually costs in engineering work.

SDK 31 and notification channel changes

Android 12 (SDK 31) tightened notification trampolines and required notification channels for anything user-facing. If your SMS app’s push pipeline wasn’t updated, notifications quietly stopped landing on Android 12 devices. WizeSMS shipped a push notification fix on SDK 31 in 9c949f61. The visible effect to users is mundane — notifications work — but the invisible effect is big: without that fix, new-message notifications on a large installed base would silently fail.

If you’re curious about Android’s evolving notification rules, the Android notifications overview is the authoritative starting point.

Scheduled SMS

Scheduling is one of those features that looks easy on a whiteboard and is full of edge cases in production. Timezone changes, reboots, Doze mode, the user uninstalling and reinstalling the app, and device date adjustments all interact with any alarm-based scheduler.

Commit 559e471d shipped a scheduled SMS fix. It is a single commit hash, but it represents a category of work that never ends on Android: alarm managers, foreground service behavior, and the way scheduling semantics shift every couple of platform releases.

Realm migration nullability

The app uses Realm as its local database layer. Schema migrations are one of the quietest places that bugs hide — a nullability mismatch between a model and the stored data can manifest as a crash on first launch after an update, which is the worst possible time for an SMS app to crash because the user is usually trying to send or read something.

Commit 432b22cf is a Realm migration nullability fix. Again, not glamorous. But the difference between “upgrades cleanly for 100% of users” and “upgrades cleanly for 99% of users” on an app with a long-running installed base is enormous in support volume.

The November 2025 reliability sprint

Most of the visible “SMS and MMS forwarding” work at the end of 2025 was actually reliability work, done before the forwarding feature could be trusted:

  • 68ecf707critical MMS/SMS reliability fixes. The commit name alone tells you how the team felt about them.
  • 5895a312MMS error handling. MMS is structurally harder than SMS: it uses HTTP transport, depends on carrier APNs, and fails in carrier-specific ways. Better error handling means the user gets an actionable message instead of a silent failure.
  • 0f382e4aSMS/MMS reliability and debugging. This is the kind of change that ships diagnostic signal so future bugs are cheaper to find.

Only after this sprint did the forwarding feature land: SMS to email via Gmail OAuth (dd629f2f), the dedicated forwarding settings screen (4c1ec87b), and SMS to Telegram via a Cloud Function (fa8b722b). Forwarding sits on top of reliability; it cannot substitute for it.

Default SMS app role

Everything above assumes WizeSMS is actually receiving messages. Android only delivers incoming SMS and MMS to whichever app holds the default SMS role (see the Android telephony provider docs and SMS intents reference). The default SMS warning banner (3838a63b) exists so users don’t try to forward from an app that structurally cannot see inbound messages. The default SMS app post covers this in more detail.

What this means for forwarding

If you turn on SMS forwarding (email via dd629f2f, Telegram via fa8b722b), the reliability work above is what makes it trustworthy:

  • A forward that never fires because a notification was dropped is a forward you missed.
  • An MMS that fails without an error is a forward you never knew didn’t happen.
  • A scheduled SMS that fires at the wrong time is worse than one that doesn’t fire at all.

The forwarding status and failure notifications added in a53b2673 close the loop: if a forward does fail after landing in WizeSMS, you get a notification on the device, not silence.

Privacy tradeoffs

Reliability is not a substitute for privacy-aware design. Forwarding SMS to any off-device destination changes your security model, particularly for one-time codes and banking alerts. Forwarding is opt-in and WizeSMS shows an in-app privacy note (42f44224) at the point of opt-in. Read forwarding OTPs and verification codes: privacy tradeoffs before forwarding anything sensitive. Hardening the receiving account with hardware 2FA or an authenticator app is the single most effective mitigation.

What good reliability looks like from the outside

For an SMS app that you’re considering for forwarding work — ours or someone else’s — these are the signals that matter more than feature lists:

  1. Notifications land on every supported Android version. Track record matters; regressions on new SDKs are common.
  2. MMS works on the carrier you actually use. MMS is carrier-dependent in ways SMS is not.
  3. Database migrations are silent. If an app update ever crashes the first time you open it, assume migrations aren’t being handled well.
  4. Failures are visible. A forwarder that fails silently is worse than one that fails loudly.
  5. The app has been maintained through platform transitions. WizeSMS’s 10+ years of history includes migrations through SDK 26, 29, 31, 33, 34, and beyond; that kind of continuity is hard to fake.

WizeSMS is listed on the Fulldive apps page. The FAQ and About pages cover the broader ecosystem. Support: support@fulldive.com or the Discord community linked inside the app (dfc606b3).

Sources

Last updated: 2026-04-16. Commit hashes and version numbers are drawn from Fulldive repositories inspected on 2026-04-13.