<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf" -->

---
title: How Posh went from manual weekly mobile releases to...
description: A founding engineer at Posh shares how they rebuilt their mobile CI/CD pipeline using Expo's EAS Workflows, fingerprinting, and Expo Updates to move from...
canonical: https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How Posh went from manual weekly mobile releases to continuous delivery with Expo | daily.dev
og:description: A founding engineer at Posh shares how they rebuilt their mobile CI/CD pipeline using Expo's EAS Workflows, fingerprinting, and Expo Updates to move from...
og:url: https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf
og:image: https://api.daily.dev/og/posts/SpWVNiUaF.png
og:image:alt: How Posh went from manual weekly mobile releases to continuous delivery with Expo
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How Posh went from manual weekly mobile releases to continuous delivery with Expo

**[Expo Blog](https://daily.dev/sources/expo-blog)** · 12 min read · 4 upvotes · 0 comments

## Summary

A founding engineer at Posh shares how they rebuilt their mobile CI/CD pipeline using Expo's EAS Workflows, fingerprinting, and Expo Updates to move from manual weekly releases to continuous delivery. The post details five automations: PR previews with QR codes, OTA branches for batching JS-only updates, version branches for native changes, a master workflow orchestrating everything, and Slack/Linear notifications tied to GitHub releases. The result is nearly monthly store releases plus multiple OTA updates per week, with staging gates preventing accidental production deployments.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://expo.dev/blog/posh-manual-weekly-releases-to-continuous-delivery-with-expo>

## Questions this post answers

### How can I automate OTA updates and native version branches separately using Expo EAS Workflows?

Set up a master workflow triggered on pushes to main that uses Expo Fingerprint to detect native changes: if only JS changes are detected, it spins up or rebases an OTA branch and publishes OTA updates to production on merge; if native changes are detected, it closes any open OTA branch, creates a version branch, and bumps the package.json version, requiring a manual label to trigger store builds and submission.

_Teams automating Expo release pipelines can find implementation patterns and workflow YAML like this via daily.dev._

### What is Expo Fingerprint used for in a CI/CD pipeline?

Expo Fingerprint detects whether a pull request introduces native code changes versus JS-only changes, which determines whether a build can be delivered over-the-air or requires a full native build and store submission. It powers PR preview comments with QR codes for testable builds and drives the branching logic between OTA branches and version branches in an automated release pipeline.

_Developers deciding how to structure native versus OTA releases can track Expo fingerprinting patterns on daily.dev._

### How did Posh reduce manual mobile app store releases?

By rebuilding their CI/CD pipeline with EAS Workflows, Expo Fingerprint, and Expo Updates, Posh moved from a weekly rotating release-train manager doing manual store releases to nearly monthly native store releases combined with multiple OTA updates per week, while keeping only final store submission and review as a manual step.

_Engineers scaling mobile release velocity can follow real pipeline rebuilds like this one on daily.dev._

## Similar posts on daily.dev

- [Inside SWSH's automated mobile release pipeline with Expo — Expo blog](https://daily.dev/posts/inside-swsh-s-automated-mobile-release-pipeline-with-expo-expo-blog-zbhc1deuu) · Expo Blog · 5 upvotes · 0 comments
- [Automating Expo app build delivery to QA with CircleCI and EAS webhooks](https://daily.dev/posts/automating-expo-app-build-delivery-to-qa-with-circleci-and-eas-webhooks-uucuffpnd) · CircleCI · 0 upvotes · 0 comments
- [Build fast, no matter what: how Expo is optimizing for speed \(and how you can, too\)](https://daily.dev/posts/build-fast-no-matter-what-how-expo-is-optimizing-for-speed-and-how-you-can-too--b78iwa0xc) · Expo Blog · 0 upvotes · 0 comments

---

Tags: [#mobile](https://daily.dev/tags/mobile), [#cicd](https://daily.dev/tags/cicd), [#react-native](https://daily.dev/tags/react-native)

[View this post on daily.dev](https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How Posh went from manual weekly mobile releases to continuous delivery with Expo","url":"https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf"},"datePublished":"2026-07-23T13:31:40.471Z","dateModified":"2026-09-13T20:54:59.831Z","description":"A founding engineer at Posh shares how they rebuilt their mobile CI/CD pipeline using Expo's EAS Workflows, fingerprinting, and Expo Updates to move from...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/620f919bb29da5e1dbec1a724f860c2d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/620f919bb29da5e1dbec1a724f860c2d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Expo Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Expo Blog","logo":"https://media.daily.dev/image/upload/s--E7LK6L3y--/f_auto,q_auto/v1774179051/logos/expo-blog?_a=BAMAMiWQ0","url":"https://daily.dev/sources/expo-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"mobile,cicd,react-native","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Expo Blog","item":"https://daily.dev/sources/expo-blog"},{"@type":"ListItem","position":3,"name":"How Posh went from manual weekly mobile releases to continuous delivery with Expo"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-posh-went-from-manual-weekly-mobile-releases-to-continuous-delivery-with-expo-spwvniuaf#faq","mainEntity":[{"@type":"Question","name":"How can I automate OTA updates and native version branches separately using Expo EAS Workflows?","acceptedAnswer":{"@type":"Answer","text":"Set up a master workflow triggered on pushes to main that uses Expo Fingerprint to detect native changes: if only JS changes are detected, it spins up or rebases an OTA branch and publishes OTA updates to production on merge; if native changes are detected, it closes any open OTA branch, creates a version branch, and bumps the package.json version, requiring a manual label to trigger store builds and submission. Teams automating Expo release pipelines can find implementation patterns and workflow YAML like this via daily.dev."}},{"@type":"Question","name":"What is Expo Fingerprint used for in a CI/CD pipeline?","acceptedAnswer":{"@type":"Answer","text":"Expo Fingerprint detects whether a pull request introduces native code changes versus JS-only changes, which determines whether a build can be delivered over-the-air or requires a full native build and store submission. It powers PR preview comments with QR codes for testable builds and drives the branching logic between OTA branches and version branches in an automated release pipeline. Developers deciding how to structure native versus OTA releases can track Expo fingerprinting patterns on daily.dev."}},{"@type":"Question","name":"How did Posh reduce manual mobile app store releases?","acceptedAnswer":{"@type":"Answer","text":"By rebuilding their CI/CD pipeline with EAS Workflows, Expo Fingerprint, and Expo Updates, Posh moved from a weekly rotating release-train manager doing manual store releases to nearly monthly native store releases combined with multiple OTA updates per week, while keeping only final store submission and review as a manual step. Engineers scaling mobile release velocity can follow real pipeline rebuilds like this one on daily.dev."}}]}
```

