SDK 58 is out 🙌
This SDK is built for iOS 27. Apps on SDK 58 will be ready for Duo on day one 📖.
The release also includes App Intents for Siri, 2x faster clean Android builds, faster Expo modules, and a CLI built for your coding agent.
Changelog: expo.dev/changelog/sdk-58
Upgrade: 𝚗𝚙𝚡 𝚎𝚡𝚙𝚘 𝚒𝚗𝚜𝚝𝚊𝚕𝚕 𝚎𝚡𝚙𝚘@^𝟻𝟾.0.0 --𝚏𝚒𝚡
Ash Wu retweeted
expo-device-hub, new from @expo, turns your browser into a local device dashboard 📱
- live stream of every iOS sim + Android emulator
- tap, swipe, scroll, type in the page
- boot and shut down without Xcode or Android Studio
- flip dark mode, and more
bun expo install expo-device-hub, then bun expo start. The link prints in your terminal :)
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
, ,
Here's what I think about the @ShopifyEng RN → native migration article:
When I rebuilt the Expo Go UI using Jetpack Compose last year, I already felt that all declarative UI frameworks are fairly similar in use, and that agents do a good job migrating between them when it comes to presentation layers. So I'm not surprised Shopify found it possible to fairly quickly rewrite an existing RN app into two separate native codebases. That was always the easier part.
I think the main problem lies in making sure the business logic layer doesn't diverge when there's nothing keeping it together. We introduced a few minor differences between the two Expo Go platforms despite trying very hard not to.
And consistency vs platform feel is one more question of taste, not something an agent will always solve for you.
I don't think react-native will go away, but I definitely feel react-native is evolving, will evolve further, and I have a couple of predictions:
➡️ More and more low level UIs as native components (either ExpoUI or local expo modules with native code files mixed with JS).
Agents are great at writing presentation layers, so why bother having JS lists with all that complexity and perf costs?
➡️ OTAs are more important than ever, prepare for changes ahead of time.
Slow app store review times vs cheap code push people to allow more customisability from JS, essentially treating the JS layer as server driven UI.
➡️ New UI paradigms mean RN remains valuable.
Think custom, per-user interfaces (made for you UIs streamed inside chat, customizable apps etc.) – you need an interpreted higher level abstraction layer that's easier to define and has an SDK.
➡️ Focus on brownfield with no clear set boundaries. Agents pick and choose if they want to build experiences in native or in JS, with most components/APIs/libraries available both as JS and native entrypoints.
In general: I don't think the falling cost of writing lower level code makes abstractions automatically obsolete. You get for free a lot of community effort on deciding/mapping platform quirks, stuff that would cost tokens and engineering effort otherwise, or even worse, would be missed and be a long-running paper-cut in your app.
I think it makes it necessary to make abstractions lock-in free. Use these opinions and higher level components when they make sense and give value, use lower level super easily and cheaply otherwise.
That's why I'm excited about stuff like Expo UI, the new modules API, our @swmansion libraries that work for both RN and native, and all the other effort we did as a community to make mixing those approaches possible and pain free.
Moving from Graphite to gh stack, but not used to the new commands yet? I made gtstack, a small compatibility shim that maps familiar gt commands to gh stack and shows the native commands it runs—handy as a learning bridge.
github.com/hSATAC/gtstack
我能走到今天,全靠我自己的努力。深藍!給我加點!讓我看看你的極限!
「THE FIRST TAKE」は稟議が大変厳しいんです。今回何を歌ったかなんて当事者であっても公開まで明言することは絶対に出来ませんので、何卒ご了承下さい。
#TMRevolution #西川貴教
@The_FirstTake
⠀ THE FIRST TAKE
⠀ ⠀ ⠀ OUT
"FRIDAY"
⠀ ⠀ 22:00
▶︎TheFirstTake.lnk.to/YouTube
・
@TMR15
・
#THEFIRSTTAKE

















