August 2026 Summaries
6 posts from Expo
Filter
Month:
Year:
Post Summaries
Back to Blog
React Native developer Arunabh Verma describes how a missing but familiar chat interaction—pasting copied images directly into a message composer—led from an initially adequate Mattermost-based library to the creation of expo-paste-input after React Native’s New Architecture made the existing solution increasingly unreliable, especially on Android. Rather than replacing React Native’s TextInput with a rich editor or custom component, the project wraps the standard input and adds native paste detection that returns pasted media as temporary local file URIs for the application to handle as attachments. Its implementation addresses iOS clipboard privacy rules, Android’s fragmented content and paste APIs, and numerous media-specific edge cases including multiple images, GIFs, transparency, screenshots, static and animated iOS stickers, text attachments, and cursor preservation. Developed first for a real Powstać client chat product and later open-sourced, expo-paste-input aims to make media pasting behave naturally while allowing developers to retain control over their existing input components and user interfaces.
Aug 28, 2026
1,648 words in the original blog post.
SWSH, a social photo-sharing app supporting iOS, an App Clip, Android, and web from one React Native codebase, uses Expo’s ecosystem to automate nearly its entire native release process. Its pipeline runs about 300 builds monthly on self-hosted macOS and Android runners through local EAS Build, while retaining EAS orchestration, credential management, and store submission capabilities. EAS Signing stores App Store Connect and Google Play credentials so the CI system needs only an Expo access token, while EAS Submit sends builds to both stores; for iOS-specific requirements, SWSH also uses a custom App Store Connect API pipeline to create versions, configure metadata and App Clip experiences, and submit releases for review. Before releases ship, its in-house Meridian framework tests essential user flows across iOS, App Clip, and Android simulators and emulators, and it also validates EAS Update JavaScript fixes against existing native builds. After deployment, EAS Observe monitors production performance metrics such as first render and time to interactive, allowing the team to identify regressions and distribute fixes over the air.
Aug 26, 2026
1,072 words in the original blog post.
udictio is a collaborative social dictionary designed to make user contributions persistent and discoverable through permanent topic pages rather than ephemeral feeds, allowing pseudonymous entries while using moderation, hidden follower and vote totals, no advertising, and no post-ranking algorithm. Developed from a University of Nevada, Reno master’s project into an App Store app released in 2026, it supports thousands of entries and social features including profiles, messaging, search, voting, image uploads, drafts, and notifications. Built with Expo, React Native, TypeScript, Apollo Client, and a Django GraphQL backend, the app uses Expo as its central architecture while adding narrowly scoped Swift integrations for features such as Siri posting through App Intents, Home Screen trending-topic widgets, Core Spotlight indexing, and on-device Apple Intelligence summaries. The development approach relies on Expo Prebuild, Continuous Native Generation, config plugins, and generated native projects kept outside version control to make native changes reproducible without maintaining a separate iOS codebase. The account emphasizes practical lessons involving real-device lifecycle behavior, isolated widget runtimes and storage constraints, safe cancellation of streamed AI responses, privacy-conscious credentials, compatibility fallbacks, and runtime policies for safely delivering updates across varying app binaries.
Aug 18, 2026
1,822 words in the original blog post.
Daniel Vinojčić describes how Calda built resilient Expo-based walking sessions that continue tracking through backgrounding, crashes, and process termination by treating persisted state rather than in-memory state as authoritative. The system uses Expo TaskManager and background location services, platform-specific permissions and service settings, and recovery logic that reseeds tracking after restarts while acknowledging limits such as user force-quitting an app and aggressive Android battery managers. To improve distance accuracy, it filters poor GPS fixes, rejects vehicle-like speeds and outliers, applies Kalman smoothing, and primarily integrates Doppler-derived speed over time instead of summing noisy position changes. It protects session data through layered persistence, serialized monotonic merges between foreground and background writers, server-side monotonic updates, and offline-aware relaunch recovery. Step tracking uses iOS Core Motion and a custom Kotlin Expo Module for Android sensors, with activity recognition and cumulative counters helping preserve counts across process loss. The project argues that modern Expo tooling can support sophisticated cross-platform activity tracking, native modules, and iOS Live Activities without abandoning the managed workflow.
Aug 17, 2026
2,988 words in the original blog post.
Expo and Convex have introduced an EAS CLI integration that provisions and connects a Convex backend to an Expo project through the `eas integrations:convex:connect` command, aiming to reduce manual account setup, dashboard configuration, and environment-variable management. Convex provides a reactive database, TypeScript backend functions, file storage, search, scheduling, and generated type-safe client APIs, allowing Expo components using queries to update automatically when underlying data changes. The integration installs the required package, creates or reuses a Convex team connection, provisions a project and deployment, configures local and EAS build environment variables, and sends an asynchronous email invitation for dashboard access. It is positioned for applications involving live or collaborative data, such as chat, presence, scores, and shared lists, while being less necessary for static applications or clients relying entirely on existing APIs. Developers can start a local Convex development server, add a provider to the app, create typed query functions, and use them in screens; the workflow can also be delegated to coding agents through predictable command instructions. Unlinking the integration removes EAS metadata without deleting Convex deployments or stored data, and the public deployment URL should not be used to store secrets.
Aug 10, 2026
1,152 words in the original blog post.
An experiment compared Fable 5 using Claude Code, GPT-5.6 Sol using Codex, and GPT-5.5 as a control by having each autonomously build three Expo and React Native applications from identical prompts, templates, tools, and simulator-validation requirements. Across an AI calorie tracker, a functional ChatGPT clone, and a SwiftUI sleep-tracker rewrite with live activities, Fable 5 consistently produced the highest-quality code, cleaner and more cohesive interfaces, fewer lines of code, and the fastest completion times, though it carried the highest hourly cost. GPT-5.6 was generally competitive in quality and particularly persistent in resolving well-defined problems, but it could spend much longer in validation loops, including 13.5 hours on the most complex rewrite. GPT-5.5 showed weaker results, including an inoperative chat feature, leftover boilerplate, visible UI compromises, and consistently greater technical debt. The experiment consumed more than two billion tokens and about $2,000, largely because simulator testing captured screenshots, interaction data, and metadata for every feature and debugging cycle; the author suggests delegating validation to subagents to limit context consumption. The conclusion recommends Fable 5 for end-to-end product development and larger code changes, while positioning GPT-5.6 as useful for focused automation, computer-use tasks, and smaller technical requests.
Aug 05, 2026
1,542 words in the original blog post.