Performance & local-first
Sub-100ms interactions via local-first caching and virtualised lists.
Aiemaily is built around a local-first architecture: your inbox paints from a local cache before the network responds, then syncs in the background — making interactions feel instant even on slow connections.
Local metadata cache
When you open your inbox, Aiemaily renders from a locally stored metadata cache — sender, subject, date, read state, labels — before a single network byte has returned. The server response arrives shortly after and any changes (new mail, status updates) merge in silently.
This pattern means the inbox is never a blank loading state. Even on a congested network, you can start triaging immediately.
Cache vs. offline
Virtualised lists
No matter how many thousands of threads are in a mailbox, the DOM only ever contains the rows visible in the viewport plus a small overscan buffer. Rows outside the viewport are recycled as you scroll.
This keeps scroll frame-rate smooth and memory usage constant — a mailbox with 50 000 threads behaves identically to one with 50.
Realtime sync
Aiemaily maintains a persistent realtime connection (via Appwrite Realtime) so new mail, label changes, and read-status updates propagate to every open surface the instant they are recorded on the server.
There is no polling interval. The inbox updates live — a new message appears in your thread list within moments of arriving, without requiring a refresh.
Multiple devices, one view
Optimistic updates
Actions like archiving, labelling, starring, or marking read are applied locally and reflected in the UI immediately — before the server confirms them. If the server rejects an action (e.g. a network error), the UI rolls back and shows a retryable error.
This eliminates the latency of waiting for a round trip on every interaction, keeping common gestures feeling instant.
Asset and font loading
Critical CSS is inlined in the initial HTML payload; non-critical styles are deferred. Fonts are subset to the characters needed for each locale, reducing transfer size. Route-based code splitting ensures you only load the JavaScript required for the current view.
Aiemaily targets a Largest Contentful Paint under one second on a standard broadband connection and sub-100 ms response time for all in-app interactions once loaded.
Frequently asked
Ready to try it?
Start free