Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Instant SMS taps in the inbox (preload)

On the phone / web view, tapping an SMS conversation in your inbox used to show grey "loading" placeholders (a shimmer) for about half a second to a second before the messages appeared. That wait is a real network round-trip: your phone reaches Omniscio over the Tailscale tunnel, so every tap fetches the conversation across the network.

What it is

What it does

On the phone / web view, tapping an SMS conversation in your inbox used to show grey "loading" placeholders (a shimmer) for about half a second to a second before the messages appeared. That wait is a real network round-trip: your phone reaches Omniscio over the Tailscale tunnel, so every tap fetches the conversation across the network. (On the desktop app the messages come straight from the local database, so it was always instant.)

To kill that shimmer, Omniscio now preloads the most-recent inbox SMS conversations in the background while you're looking at your inbox — quietly, over idle moments — and keeps a copy of each one once loaded. When you then tap a conversation, its messages are already there and paint instantly; no shimmer.

It's the SMS cousin of the session pre-render inbox sessions and lazy content load features, and of the drip-image prefetch — same idea (warm the visible inbox into a cache so opening is instant instead of a cold fetch).

Where to find it

Nothing to open or configure: this is what tapping an SMS conversation in the inbox does on the phone and web view.

How it behaves

When it applies

  • Phone / web only. The desktop app is already instant (the database is local), so nothing runs there — no wasted background work or mobile data.
  • Only the conversations in your Inbox — the SMS threads flagged as needing your attention. It reuses the exact same rule the Inbox itself uses, so the preloaded set is precisely what you see in the Inbox — never your whole message history. Archived, snoozed, and dismissed threads are not preloaded.
  • Only the most-recent 10 of those, fetched a bit apart (staggered) so a full inbox never fires a burst of requests at once. In practice your Inbox usually holds a handful of SMS, so 10 covers them all.
  • Only while you're in the inbox or the SMS panel — the two places you'd tap an inbox SMS from. It doesn't preload while you're elsewhere in the app.

When it does NOT apply

  • On the desktop app (already instant).
  • If you tap a conversation before its preload finished — it simply falls back to the old behavior (a brief shimmer while it fetches). No regression, only upside.
  • Threads beyond the most-recent 10, or ones that aren't in your Inbox.

Freshness and safety

  • Always fresh. A preloaded copy still refreshes in the background when you open it, new incoming texts land in the copy even before you open it, and your just-sent replies are written into it — so you never see a stale thread.
  • No cross-account leak. The copies are wiped when you switch or log out of accounts, and a preload that finishes after a switch is discarded — so one account can never briefly show another's messages.

No setting

This is a transparent speed-up — there is no toggle. It only runs on the web/mobile client, only for inbox threads, and is bounded to 10, so it stays cheap by design. (An internal AMC_DISABLE-style guard exists for developers, but there is nothing for you to configure.)

For agents

Where it lives in code

  • src/renderer/src/features/dashboard/sms-prefetch.ts — selectSmsPrefetchTargets(...) (the most-recent-10 inbox picker, MAX_SMS_INBOX_PREFETCH) and shouldRunSmsPrefetch(...) (the web/mobile + inbox-only + configured gate).
  • src/renderer/src/features/sms/useSmsConversationPrefetch.ts — the idle-scheduled, staggered prefetch hook.
  • src/renderer/src/stores/sms-store.ts — the per-conversation messageCache, the cache-hit-paints-instantly selectConversation (with background revalidate), prefetchConversation, and the account-switch cache clear in resetSmsStore.
  • src/renderer/src/features/dashboard/Dashboard.tsx — mounts the hook next to the session attention-prefetch.

The full engineering contract (test-locked invariants + safe-change checklist) is .claude/memory/contracts/sms-inbox-preload-contract.md.

Related

Last verified 2026-09-23