Co-founder @Expo

California, USA
Pinned Tweet
Expo’s Series B lets us build + More developer success for our world-class customers + More products to unlock that success + More capacity to meet the demand for our products and services We are also excited to continue collaborating with other great companies, and for the Expo SDK and services to work well with even more libraries, products, and integrations from others. We care and work to be a great partner to great partners. I’m proud of what we’ve built, from what started in a room w/@ccheever and is now a global team over 60 people strong. This is an energizing time to be at @Expo!
🙌 Expo is the best it's ever been, and it's about to get a lot better. We raised a Series B so we can go faster on the things that matter to you: faster builds, smoother native integrations, and the services to make end-to-end app development a delightful experience. There is a lot of work to do. This round led by @Georgian_io puts us in position to go do it!
3
11
76
12,684
Sometimes URLs get out of date or AI models make up links. You can maintain a URL map for when you rename links but this doesn't solve hallucination. The Expo docs use Jev to find the best match when visiting a link that doesn't exist. Sometimes that's still the 404 page but sometimes there's an actual docs page that has what you're looking for.
1
2
6
957
1. Write plain old Swift 2. Use two new attributes: ExpoModule on the class, JS on its functions and accessors Swift async functions : JS async functions (2.2x faster calls) Swift sync functions : JS sync functions (14.5x faster calls) Android and Kotlin speedups coming next.
A native module is now one Swift class with @𝙹𝚂 on the parts JavaScript should see 🎉 Expo Modules 2.0 → 𝙵𝚞𝚗𝚌𝚝𝚒𝚘𝚗 and 𝙰𝚜𝚢𝚗𝚌𝙵𝚞𝚗𝚌𝚝𝚒𝚘𝚗 collapse into one @𝙹𝚂 method → 100,000 adds: 97 ms → 19 ms on the same SDK → iOS in SDK 57 today Benchmarks and code from @tsapeta: expo.dev/blog/an-early-look-…
2
3
66
5,428
1. On Android, write plain old Kotlin 2. Use new annotations: ExpoModule on the class, JS on its functions and properties Kotlin suspending functions : JS async functions Kotlin sync functions : JS sync functions Microbenchmarks 👇
104
James Ide retweeted
Expo UI components automatically adapt to different Duo poses.
6
13
158
17,763
iPhone Duo coming soon to @expo EAS Simulators! And as well to expo-device-hub and serve-sim for local streaming.
4
6
47
15,921
On Jev... When I studied NLP, discriminative AI performed miles better than generative AI. For instance, discriminative API could tell you the sentiment of some text far better than generative AI could write text given a sentiment. Generative AI's output was much like repeatedly hitting the next autocomplete suggestion on your phone's keyboard. Obviously generative AI has tremendously advanced and the output is serviceable in many domains much of the time, though even the latest models still overlook simple solutions. Several things spark my interest in Jev based on my experience: - There will be features where discriminative AI is a much better fit than generative AI, like customer support services instantly routing you to the right department (sometimes I want to talk to a person). - Tomorrow's agents can combine generative and discriminative AI. Imagine Claude Code and Codex's "auto permissions" being extremely accurate and instant. - What if there were an open version of Jev? Discriminative AI will run better on your own devices. Most personal AI tasks are about decision-making, like deciding how important a push notification is to you at this moment, or which apps you might want to use now.
3
28
1,436
Expo is for real-time agentic apps
Created a GPT-Live-1 voice app template with @expo - Full-duplex audio + background calls on iOS - Choose from all supported voices - 6 Rive animations from Vercel AI Elements - Expo SDK 57 + native Expo UI controls Source below ↓
2
53
7,870
iykyk #starfox
Frequent video gamers performed on cognitive tests like non-gamers that were ~13.7 years younger
2
591
Build uncompromising high-performance, high-fidelity apps with React. What you see is not the Apple Messages app, nor is it meant to be 1:1. Rather it serves as an aspirational and real example of UI/UX that is possible. Every detail from the bubble animations to keyboard gestures to scroll view insets and safe areas to parallax timestamps required care and attention. Quality UIs come from caring hard. The little chat bubble tails that morph away when the next message animates in. Timestamps that scroll at a different rate than the bubbles. Peek gestures powered by UIKit that lift a chat bubble, tail and all, with a gentle haptic pulse. The subtle shadow of the text composer and responsively sliding down the keyboard in pixel-perfect concert. The composer shrinking its width to fit iPhone’s rounded bezel. The beautiful Liquid Glass refractions have the level of glassiness chosen by the user (new in iOS 27). Scroll view insets that adjust to fit the home bar and keyboard dynamically, creating a sense of depth as the chat bubbles are slightly visible as they scroll under the keyboard. Keeping the keyboard on screen if the prior screen already presented it. Sliding the keyboard and composer with the screen when the user drags to navigate back. I am excited to explore using the new iPhone Duo view controllers natively with React when the time comes. There is always room for innovation and improvement. This chat demo runs at 120 FPS on iOS 27 even on my phone that’s four versions old now. There are several approaches to high-performance lists. I explored a new Expo scroll view that uses the native gesture systems along with react-native’s VirtualView (codenamed “Fling” to reflect the speed of flinging a scroll view), which Meta’s React team designed to prioritize scroll momentum with React’s scheduler. There are tradeoffs with other scroll strategies for how the scroll views gracefully degrade, and they can be swapped out based on what’s best for your app’s use case. And, by virtue of using modern React, high-priority events like user gestures can preempt lower-priority ones like a network response. Let us dispel any myth that using React requires compromising on beautiful, smooth, user-friendly UI/UX that Uses the Platform. Let us dispel any myth frame-perfect UI coordination is not achievable. The Hermes thread and the UI thread can coordinate when needed, like for controlled text inputs. Let us dispel any myth that React Native’s performance is impacted by a bridge, let alone has a bridge. Bridgeless JSI and the Fabric renderer are here for apps that use the New Architecture. What about Android? The app runs and I’ll share a screenshot from my cloud agent’s emulator. With some attention to detail dedicated to Android I’m confident crafted UX is attainable. I’ve spent my tokens once and have a structural head start everywhere. One more thing! Most of this chat’s application code is written with <div>, <span>, <button>, and other familiar elements. The styling is mostly CSS, including linear-gradient(), background-attachment: fixed, and semantic platform colors that adapt to dark mode. Not just appearance - CSS Animations and CSS Transitions run entirely natively. There are a handful of custom native components written in Swift and Kotlin, like the chat bubbles and a custom CAShapeLayer and UIBezierPath for the tails. Native coding is a first-class feature. The way to think about building beautiful apps this way is React and Native, not React vs. Native. Aspire high and raise your ambitions for what is possible!
46
49
569
139,684
Running on Android. I don’t think this is what people expected when they asked for Android to get blue bubbles :P
2
40
3,624
The animation for sending a message has a new coat of polish. The bubble emerges from underneath the glassy text area and animates into place, as the text area animates back to its original size. The chat bubble, composer, and scroll view coordinate the layout together. It gives the appearance of the new chat bubble being formed from the text in the composer. Subtle behaviors keep the layout stable. Like Apple Messages, the app stops you from pressing the send button if you have your finger on the scroll view, and stops you from scrolling while a newly sent chat bubble is animating into place. Thank you to @SamuelScheit for suggesting these improvements!
12
1,380
James Ide retweeted
The @expo and React Native community is stronger than ever. • 3M+ developers • 500K+ projects (on Expo) • 7M+ weekly downloads (RN) • 100K+ builds every day • 70K+ people in Discord One of the main reasons I joined Expo and what makes this community special is how much people build and solve together. Hard problems get solved once, shared, and improved so everyone else can spend more time building beautiful apps. We’re going to keep investing deeply in Expo and React Native, and we want to help every developer across the world build beautiful apps. Solve the hard problems together. Build better apps.
3
7
116
4,524
James Ide retweeted
I hate how imprecise the term “native” has become. Is a UIKit app that mostly displays WebViews, such as Apple News, not a native app? What about an app that’s entirely rendered with UIKit or SwiftUI, but orchestrated by a bytecode file, as with React Native? How about a social network app that’s so server-driven it makes network round-trips before navigation? Do you trust that an app built with UIKit is doing concurrency better than the reasonable defaults of SwiftUI? Today, software is developed in natural language. When you use imprecise prompts, you get sloppy results. I ban my agents from using the term “native” to describe technical details. Your agent will inherit your principles, so why allow any room for ambiguity? Reject technical imprecision. Be curious about performance characteristics, and strive for data-backed answers.
We’re rebuilding Notion natively on mobile. It’s early, but here is how it feels now! What frustrates you Notion on your phone today? I want to hear and improve!
62
69
999
154,270
In the golden timeline we achieve human–human alignment to achieve human–AI alignment. The best companies focus on the user. When your addressable userbase is every person, this means being truly little-a anthropic and prioritizing humanity and society.
We Must Pace the Frontier: I’ve written a new essay on why the AI industry should slow down, with a three-part plan for doing so. Anthropic is unilaterally committing to the first of these steps. We’ll provide third-party evaluators with permanent, employee-level access to our systems, so that they can verify adherence to our safety measures, report on incidents, and assess models’ alignment during training. You can read the full post here: darioamodei.com/post/we-must…
6
768
expo-device-hub is the connection between your agentic coding apps like T3 Code and your agents’ mobile simulators
Cool to see 𝚎𝚡𝚙𝚘-𝚍𝚎𝚟𝚒𝚌𝚎-𝚑𝚞𝚋 powering agentic app dev from a remote simulator host 🫡
9
952
James Ide retweeted
working on the @expo EAS app this evening with an early preview of our cloud simulator service. finding a lot of little UI/UX bugs that i'd usually discover the night before a public release.
3
20
2,237
Use the @bot agentic chat app to build anything, including your own agentic chat apps 👇
🙌 @bot is transforming knowledge work. And the mobile app is built with 𝝠 Expo! apps.apple.com/us/app/grok-b…
7
771
Astra, make my network switch quieter
5
415
The syntax for Expo Modules 2 is pure Kotlin & Swift with lightweight annotations. Agents are trained on Kotlin & Swift and the Android & iOS APIs. This means they already know a lot about what’s needed to use Expo Modules 2, and the official skill fills in the rest: npx skills@latest use expo/skills@expo-migrate-module --agent claude-code
Expo Modules 2.0: a native module is now just an annotated Swift class. No 𝚍𝚎𝚏𝚒𝚗𝚒𝚝𝚒𝚘𝚗(), no DSL. Write ordinary methods and properties, mark what JS should see. And it's faster: up to 14.5x faster calls than SDK 55, up to 5.6x faster than the 1.0 API on the same SDK. Try it on iOS in SDK 57 ↓
1
5
49
4,252