从伊斯坦布尔到美国 App Store 榜首:FERASET 为何把 AI 应用工作室押注在 Expo 上
FERASET 用 4 周时间把他们的第一款 AI 应用上架到两个应用商店,并拿下全球第一,超过 Spotify。这家伊斯坦布尔工作室为什么把全部筹码押在 Expo 上。
中文
复制

本文是 Said Kaban 的客座文章——他是 FERASET 的 CTO 兼联合创始人。
…
2022 年底,我认识的移动端工程师大多认为 Expo 只是个做原型的工具。拿来做 demo 或黑客松,等真要开发正经产品时再换回 React Native CLI。在我们所在的土耳其,这几乎是默认看法。
我们的判断不一样。我们看了 Expo 的发展方向,认为它会重演 Next.js 在 React 生态里的轨迹:一个有主见、有托管层的方案,不会限制你,却能让你快得多。于是我们全力押注。
如今 FERASET 是伊斯坦布尔的一家 AI 消费应用工作室,约 40 人。我们曾在美国等多个国家的 App Store 拿下全球第一。整个移动端技术栈都跑在 Expo 上,从第一天起就是如此。
下面是这一路走来的经过。
我们在正确的时间,押了正确的注
FERASET 起步时正赶上 AI 热潮。ChatGPT 刚发布,DALL-E 频频登上头条,Midjourney 无处不在。但它们全是网页产品。想用 AI 创作,你得坐在电脑前或打开手机浏览器。还没有人为 AI 打造过出色的原生移动端体验,而我们清楚用户其实就在那里。
所以速度是唯一重要的事。谁先把打磨好的 AI 应用送进应用商店,谁就赢。每延迟一周,就少一分胜算。
我们需要一个框架,让小团队能快速同时发布到两个平台,又不把时间浪费在原生工具链的问题上。Expo 正好给了我们这个。Music AI 是我们的第一款应用,从写下第一行代码到上架 App Store 只用了 4 周。一个完整的 MVP,双平台,提交并通过审核。这就是 Expo 带来的速度,也正是它让我们在市场变得拥挤之前抢先一步。
我们的第一款应用拿下全球第一
第一款应用是 Music AI,一款 AI 翻唱生成应用。你可以用不同的声音制作歌曲的 AI 翻唱,甚至可以训练出你自己或亲人的定制声音,让他们开口唱歌。它迅速走红。

Music AI 成了全球最好的 AI 翻唱应用。我们在 App Store 榜单上超过了 Spotify,并在包括美国和欧洲多个主要市场在内的多个国家拿下全球第一。

这印证了两件事。移动端 AI 市场是真实存在的,而且体量巨大。Expo 完全扛得住生产级别的规模。它不是原型工具,而是我们用来撑起整个公司的框架。
接下来的方向就很清楚了。AI 消费市场不是一个应用就能吃下的:有人要图像生成,有人要视频,有人要特定的创作工具。一个应用没法把所有人都服务好。所以我们没有把什么都塞进 Music AI,而是把 FERASET 当成一间工作室来运营——多个应用,各自聚焦一个具体场景,全部由同一个核心团队用 Expo 打造。
我们在 Expo 上构建的东西,一个真实的例子
要说明在我们这里用 Expo 开发到底是什么样子,最好的方式就是看一个具体例子:expo-ai-kit。
expo-ai-kit:为 Expo 应用提供端侧 AI
我们所有的应用都用语言模型做提示词润色、内容合规检查和文本生成。这些任务需要 LLM,但不需要最先进的模型。很长一段时间里,这意味着每个请求都要调用云端 API。能用,但我们是在为端侧小模型就能轻松搞定的推理付费,而且用户的提示词在没必要的情况下离开了设备。
iOS 上的 Apple Foundation Models 和 Android 上 Google ML Kit 的 Prompt API 改变了这个局面。对我们需要的这类任务来说,端侧模型已经绰绰有余,而且免费。不需要 API key,没有按 token 计费,也不依赖网络。问题在于,没有一种干净的方式能在 Expo 里用上它们。于是我们做了 expo-ai-kit。
这是一个开源的 Expo 模块,为两个平台的端侧语言模型提供一套简单的 JavaScript API。用法如下:
import { isAvailable, sendMessage } from 'expo-ai-kit';
const available = await isAvailable();
if (available) {
const response = await sendMessage(
[{ role: 'user', content: 'Refine this prompt for image generation: a cat sitting' }],
{ systemPrompt: 'You are a prompt engineering assistant.' }
);
console.log(response.text);
}
还支持流式输出,用于逐步显示文本:
import { streamMessage } from 'expo-ai-kit';
const { promise, stop } = streamMessage(
[{ role: 'user', content: 'Check this text against content guidelines...' }],
(event) => {
setResponseText(event.accumulatedText);
},
{ systemPrompt: 'You are a content moderation assistant.' }
);
只需 npm install expo-ai-kit,再加上配置插件,就能跑端侧推理。这个库目前在 npm 上每周有数万次下载。

对我们来说,过去每次请求都要花钱的任务,现在直接在设备上免费跑。简单任务的响应时间也降了,因为不用再走网络往返。而随着每一代新芯片让端侧模型越来越强,我们能从云端卸下来的任务只会越来越多。
我们把它开源,是因为觉得其他开发者也会撞上同样的问题。做这个库的过程也印证了我们一直以来的感受:expo-ai-kit 是真正的 Swift 和 Kotlin 代码,直接调用平台级 AI 框架,通过 Expo 的模块系统 集成,以配置插件的形式分发。不用 eject,不用 bare workflow。需要的时候可以深入原生层,同时依然留在 managed 生态里。
最难的部分不是技术
我们遇到的最大挑战是土耳其的开发者生态。
刚起步时,这里大多数移动端工程师更习惯用别的框架。Expo 基本不在他们做生产应用的考虑范围内——平心而论,考虑到当时生态还很年轻,这种看法也说得过去。要让有经验的工程师认真看待它,得花不少功夫去说服。
早期招人很难。我们没法直接发一条“招 Expo 工程师”的招聘启事就收到一堆合格简历。只能去找那些愿意尝试的人,告诉他们为什么 Expo 是对的选择,再用实际结果证明。
我们花时间在土耳其把 React Native 和 Expo 社区做起来。分享我们在学的东西,论证 React 生态会像当年拿下 Web 一样拿下移动端。我们想主动在土耳其推动这件事,而不是等市场自己跟上。
后来确实做成了。但付出的努力和写代码没什么关系。
Expo 让我们意外的地方
最意外的是 Expo 的 managed workflow 在大规模使用下的稳定性。我们用 CNG,帮助极大,因为发版节奏很快,构建种类又多:dev、preview、prod 一直在建。创建这些构建、分发给产品团队测试和提审,整个过程顺畅得出乎意料。
小团队用托管工作流,总觉得像在骑带辅助轮的自行车,以为早晚要拆掉。我们没拆。团队变大了,应用更复杂了,用户数以百万计,我们依然全托管。这套模式带来的好处,会随着应用和团队一起成长。
SDK 版本之间的升级路径也比预想的顺。升级一个应用是一回事,升级多个共享代码的应用就是协调难题了。Expo 的升级工具和迁移指南,让这件事比它本可以有的样子轻松得多。
说实话,Expo 团队的创新节奏一直让我们印象深刻。他们总是走在前面。基于文件的路由就是个很好的例子。他们看到了开发者体验的方向,并且早早走到了那里。
接下来呢?
既然 agentic coding 的时代已经正式到来,Expo 也在往这个方向推。我们很期待 Expo Agent 正式发布,相信它会继续推动并加速我们的客户端开发流程。把 AI 辅助开发直接做进我们已经在用的框架里,正是当初让我们押注 Expo 的那种前瞻性动作。
我们这边,还在继续扩充产品矩阵。AI 消费级市场仍在快速增长,我们在视频生成和移动端实时 AI 体验上看到了很大的机会。这些都会构建在 Expo 上。
如果你是一个小团队,正在考虑做消费级应用,我的建议是:别在技术栈上想太多。选 Expo,开始发布,把精力放在产品上。框架会跟着你一起成长。我们就是这样,从伊斯坦布尔的一个小团队,做到登顶全球榜单的应用。而我们才刚刚开始。
FERASET 是一家位于伊斯坦布尔的 AI 消费级应用工作室。我们的应用可以在 App Store 和 Google Play 上找到。按照 AI 应用工作室和移动游戏工作室的惯例,我们的应用会出于各种运营目的,以不同的开发者账号发布,所以你不会在 FERASET 这个名字下找到全部应用。