⚛️📱💻 #2: react-strict-dom comes to unify React and React Native, Tamagui is RSD today, Ignite starter bugfix to run universal apps on web and more
Second issue of Universal State of Mind is on 🔥 with the release of react-strict-dom
React Strict DOM is here
This week's newsletter could have been all about React Strict DOM, the new library released by Meta aim at standardizing all the React Native APIs into a compatible version that aligns with Web APIs. Did the web win? Yes, and that's great news for universal apps. Recently, we have seen that React Native can handle macOS, Windows, TVs, and now AVP, but the web is the most important platform to extend and support. This advancement boosts the universal app development ecosystem and takes it to new heights. Hurray!
→ First POC codebase for RSD by Nader Dabit
→ RSD React Native compatibility status
→ The RFC that started it all: RFC: React DOM for Native (reduce API fragmentation)
[UI] Tamagui is RSD today
With all the news about RSD it’s a good reality check and a reminder, to know that Tamagui has been leading the space of production ready UI for universal apps for a while now. When you see that Tamagui already has much of what RSD brings to the table built-in, but with even more horsepower, it makes sense to get excited once again about this project.
Dan Abramov mentions that RSD is for now experimental. Why not get hands on with the production ready future that Tamagui is offering you… today? Proof of that is a current tweet confirming that Tamagui is powering Uniswap Mobile. I can bet by looking at the source code that sooner rather than later the web interface of Uniswap will merge completely with mobile. Watch out! Universal apps are making their way in one of the most important protocols and projects on web3.
→ Nate (Tamagui founder) take on RSD vs Tamagui
[starter] Ignite v9.6.1 fixes metro web HMR
Ignite is the best-known, battle-tested RN starter (literally period). Little by little, it has been closing the gap with Expo making it fully Expo compatible in the latest releases. v9.6.1 update is significant because it fixes a bug related to HMR when running web with Metro Bundler. Now, running universal apps with Ignite for the web works! and looks very interesting. This is because Ignite is one of the most robust starters available and is universal-ready. Grab the latest version at:
npx ignite-cli@latest new PizzaApp
→ Iginite v9.6.1 release notes by Frank Calise
[library] Zeego update with new Expo template
Zeego, the library that brings fully universal (native and web) menus, has a new update that includes horizontal groups, group labels, and support for the latest SF Symbols. Along with this update, a new official Expo starter codebase was released as well, but it is implemented a bit differently than the default Zeego way. This approach is very platform-specific, allowing for code sharing but not as much UI sharing this time. The menus are available for iOS and Android but for web, instead of using the library Radix UI web compatibility it uses a `.web.(tsx|js)` extension to implement the dropdown component with Shadcn UI instead.
Try it with:
npx create-expo-app -e with-router-menus
→ Deployed web version of the demo by Evan Bacon
→ Template tweet release by Evan Bacon
[library] expo-drag-drop-content-view now with web compatibility
We all love drag-and-drop for files, and it's a great UI that we all know and use on the web. But what about mobile? Not so much. You typically jump into the image library and start tapping on images for bulk selection. What if I told you that you can have the same drag-and-drop experience on native apps too? That's what expo-drag-drop-content-view brings to the table.
I have mixed feelings because selecting various items by tapping works well, while drag and drop involves the UI context of windows floating around, requiring a way to move between them. Nonetheless, it's a very neat UI and probably well-suited for certain use cases, take a look!