@expo
is slow, React Native is bad. Hold my beer 🍺. Fully packed with basically every expo package there is, react query, zustand, a full fledged video editor, vision camera, react navigation and so much more. Video length limited on Twitter, will release more. 60-120fps
Mastered audio in React Native! Created a cross-platform audio player with
@expo
. Harder than anticipated, but proud of the result. Considering releasing it as a library. Each player manages its own state & routes audio globally.
Did you know that Reanimated v3 LayoutAnimation from
@swmansion
is a gift sent from heaven? After a few more iterations and addressing some logic issues, I think I've fixed all the quirks. FlashList +
@expo
+ Rea3 = ❤️
Building a blazing fast infinite video reel like TK/Insta (battle tested against a collection of 25k videos) is a piece of cake with SDK45 from
@expo
and the new optimized expo-av including some patches I supplied. Custom player with 0 lag on scrubbing and pausing included.
Shitty 200 USD Redmi.
Now tell me that RN is not amazing. Huge shoutout to amazon for this amazing lib.:
My video swiping performance is en par or even slightly better than TikTok on that phone. As you can see, I am swiping like a maniac!
Another reminder that
@expo
image and
@Shopify
FlashList are a dream team. And yeah, you'll find expo-av in between as well :). Just shipped
@Showtime_xyz
's new trending feature! And it’s fast :)
You can truly see how FlashList changed the big list game in the RN ecosystem. Bluesky has a really solid List performance, close to Twitter. FlashList only blanks at extreme high velocity speed, but no normal user scrolls like that anyway.
Proudly presenting my new
@expo
package,
`expo-video-metadata`.
It lets you retrieve video information such as duration, dimensions, orientation, codec, etc. Works for local and remote files. Web support coming soon. If you like it, ⭐️ it :)
To silence all the "now test this on an Android device" folks. This here is a 200 USD device! Redmi 9. Running
@expo
and React Native. I know, its not the same as iOS, but this is a 200 USD device. Most stock apps run worse than mine!
It happened guys! - the Layout Animation rewrite has been merged. This means we are sooo close for native shared animation. I am so hyped for this. ❤️ to
@swmansion
and everybody involved is this complex issue.
Are your lists very laggy and slow on Android, even with FlashList? No, that’s not
@expo
or react-native‘s fault. Either your component is heavy, or you messed up with images. This video demonstrates a section with huge images downscaled and a section where images are optimized
I won't deny, getting
@swmansion
LayoutAnimations to play nicely with an inverted FlashList was quite challenging. But I finally managed to get the CellRenderer working. There are still some minor quirks, but for the most part, it is working well now! Entering, Exiting, Layout
I think
@expo
needs to invest in PR. It’s by far the best thing that happened to the RN community and still I see so many complains like „does it work with RN“, will it add bloat, expo-core so huge etc. 1MB extra size in your final app. That’s it. Unlimited possibilities for free
People following me know that I am doing a lot of video related Apps lately. I love expo-av and its perf is awesome on iOS, but on Android, creating/loading/unloading videos harms UI and JS thread big time. I gave a try (only Android) and AMAZING perf 1/2
I’ve built a social video community with similar features like Instagram reels or TikTok with
@expo
. We’re still considering the app „open beta“ without any advertisement, but you can check it out now! Our focus is for short „how to“ videos only!
I was struggling to find a solid working solution to listen to volume events in React Native. Specially I needed to listen to hardware button volume changes. Most libs have been unmaintained or abandoned so I decided to try it myself
Check out what I'm cooking up! I've developed an
@expo
native module for quickly retrieving video metadata on iOS and Android (with web support coming soon). I've needed this for quite some time and finally decided to build it myself. Lightweight, no external deps, platform APIs
Playing around with native
#reactnative
@expo
got me excited so I’ve been digging deeper to make react-native-volume-manager a real manager. The next version supports everything Volume related, with mute switch detection on iOS and ringer mode listening on Android.
I have been developing a sleek video thumbnail picker for
@expo
, using
@swmansion
reanimated and gesture handler. Currently, it is functional only for web, but I will soon have a native version available. Some parts have been quite challenging 1/n
That's a hat-trick in a week 🫡
Thanks to the Sweet API (expo-modules), it's so much easier for non-native developers to contribute back to the community! Give it a try guys!
1/3
Long time ago I promised to share my fast implementation of my TikTok/Instagram style reel, fully made with
@expo
.
Here, based on an expo starter template:
It implements some basic stuff only
We have three solutions, but I only recommend two of them.
☑️ react-native-keyboard-controller (RNKC) by
@ziusko
☑️ react-native-avoid-softinput (RNAS) by
@mateusz1913
❌ useAnimatedKeyboard by
@swmansion
Exactly what I was taking about last week. We also started migrating away and using LeanView and LeanText. This is also true for react-native-web. Up to 90% faster Text rendering is just crazy. RN need to change the default View and Text components!
Crazy fact: React Native's built-in <Text> and <View> components are expensive. Our lists got noticeably faster by doing this:
const Text = props => createElement('RCTText', props)
You usually don't need the Text component's heavy features like onPress/inherited styles.
Looking for a senior React Native developer. (Full Time)
tRPC backend stack and React Native in the front (with
@expo
router). It is a universal stack in a monorepo, NativeWind v4.
US-based (SF preferred) but will accept remote candidates with exceptional talent. DMs open!
Today, exactly 8 years ago, I released my first app on the App and Play Store. When I look back and think about how terrible it was to work with Cordova, Onsen, and Ionic, I am really happy about today's technology and tooling, especially thanks to
@expo
and
#reactnative
.
The moment we’ve all been waiting for. Uninstall Flipper, opt in for experimental network inspection with
@expo
starting in SDK 48.0.16. Great talk by
@cedric_dev
and also great work under the hood by
@kudochien
. Debugging will be much easier.
So, my
@expo
plugin for react-native-performance is done.
I would recommend to not use this now (only if you really can't wait) because we're going to integrate this directly into the main repo to prevent using another external package.
C‘mon guys, give
@gorhom
what he deserves. He has without a doubt the best bottom sheet implementation out there. There are also some amazing packages on top of it made by
@janicduplessis
(a navigator around bottom sheet). He reached 2% of his sponsor goal
Thanks to
@ziusko
package , some patches to RNS (coming in 3.15) and plenty of testing done by me, you will be able to have animated inputs and inset adjustments for android now. It’s even synced on Android 11+ and simulated on <11. Runs on
@expo
dev client
Should I or shouldn't I do that? I've observed better performance when using the TextNativeComponent instead of Text. The only downside I've identified so far is that we lose the onPress functionality. Is there anything else to keep in mind?
You can have that today, with the old arch as well:
Hook copied from
@naqvitalha
's blog post. We're using useBatchedState
@Drakulaapp
almost everywhere (some few exceptions where sync updates have been crucial). Works with
@expo
and
@reactnative
i'm playing around with
@reactnative
new architecture examples using react-native
@0
.74-rc and react
@18
.3-canary, and it's pretty cool to see automatic batching with native event handlers in action.
The new
@expo
update, containing 0.74.1 and the new Hermes, is just 🧑🍳💋. Bye-bye btoa, atob, and text-encoding polyfill!
I dream that one day Hermes will ship with a native version of 'react-native-get-random-values.'
Thanks for your incredible work here
@tsapeta
By the way, this is the first Image Component in the React-Native Ecosystem that can properly handle FlashList recycling with the `recyclingKey` prop. LFG!
I have been waiting for this for so long! Thank you so much to everyone involved in this release. You can't imagine what a game-changer this is. This opens up a whole new set of possibilities that were hard to achieve in React Native without a crazy amount of work.
Good things come to those who wait – today it is the stable V3 release of React Native Reanimated with Shared Element Transitions, DX improvements, perf upgrades, lower memory usage and more... Read our announcement post 👉
@natebirdman
giving a deep dive into
@tamagui_js
at
@appjsconf
. As a very early adopter, I highly recommend it as it’s one of my favorite libs! Well taught piece of software by a talented dev spending thousands of hours to build this! Will share a video soon!
Just installed the
@expo
dev client plugin for TanStack Query and React Navigation (Expo Router) for SDK 50. It works like a charm! Especially helpful for testing linking and more. Great work, thanks
@kudochien
@mrousavy
can't thank you enough for your automaticallyAdjustKeyboardInsets fix. GOSH I just removed SOOO many dirty hacks to workaround this. And its just butter smooth now!
After reviving Yoga with his flex-gap support, this 🐐 drops another long overdue bomb for RN: transform-origin. In case you missed it, here is his sponsoring page:
TIL (thanks
@tsapeta
💝): Did you know that you can open the macOS Console app and record your device interactions to catch production crashes within your
@expo
app? I had a hard-to-trace bug and didn't know about this powerful tool. This would've saved me weeks in the past.
Back in Frankfurt! Huge shoutout to
@swmansion
and the
@expo
team for organizing this amazing conference and hosting a fantastic afterparty. Great talks, and I had the chance to meet awesome people! Until next year! 🥂
@appjsconf
is hands down the best conference! :hirbod: out!
I'm just blown away. I shared some bad news with some good friends of mine while on vacation and without telling me, they immediately hopped on a plane and joined me at the beach, 4000 kilometers away.
Tomasz asked what's next since expo-image and expo-router stable was released. I said "expo-maps" with OSM, GPX tracks, custom tiles and offline support. Deal is, when I get more than 100 likes. Let's blow this up guys!
Has anyone had experience with ? It even offers persistence support on React Native with MMKV. I'm actually quite impressed, but I would love to hear from people who have used it before.
If your fonts, images or assets stopped loading today in your
@expo
or
@reactnative
app - add a resolution for "
@react
-native/assets-registry": "0.74.83",
v0.74.84, which was released 11 hours ago, breaks asset loading!
@ShopifyEng
new FlashList is a game changer. I migrated my endless video feed from FlatList to FlashList in like 2-3 hours and its nearly as smooth as on iOS (iOS scroll just feels better and snap better). Running inside of
@expo
custom dev client. I am blown away!
Exciting news! I am thrilled to announce that I am now partnering with
@Showtime_xyz
as contractor for all future app and web development. Thankful for the opportunity to work with such talented individuals. Let's make some magic happen!
#expo
#web
#reactnative
#web3
@expo
's experimental network inspector is successfully installed. This is a game changer! Two issues I have (not sure if solvable):
1) expo-images served from cache don't appear
2) Served images appear as "fetch" and are not filterable by "Img". It's a bit hard to catch them.
I joined
@TheOutbound
as contractor to help out
@tyrauber
a bit. The app was already pretty good but had hard times maintaining stable 60fps. After some awesome refactoring sessions we really achieved incredible results. Thanks to
@expo
, testing and deploying was a breeze!
Got so hyped by the talk from
@tsapeta
at
@appjsconf
that I started to play around with expo-modules-core. Guess it has never been easier to use JSI and create React Native Modules. Will try to port my Volume Manager package to fully leverage JSI under the hood.
Having a great time with my mate
@nishanbende
at the great afterparty
@appjsconf
! See you next year. By the way: that’s the guy who brought Flexgap for y’all (with
@jacobp100
). Bowing for this 🐐
Ever wondered why your linear gradients look bad? Color banding is the issue.
You can apply the same techniques to
@expo
-linear-gradient using this library. . Just make sure to export a component and keep it lightweight. Welcome!
@Selene406
@PicturesFoIder
Wrong
(2+2 = 4)
(8 / 2 =4)
(4 * 4 = 16)
Brackets, Orders, Multiplication and Division (from left to right), Addition and Subtraction (from left to right)
Result is 16
Explore our latest creation: a complete
@expo
router setup for iOS, Android, and Web. It includes tRPC + RQ among other features. Currently in beta, it's not perfect yet, particularly on Desktop [wide], but we're thrilled with the stack and outcomes.
I’ve been working on this feature for soo long 🫠
Progress-based Shared Element Transitions & border radius support are available since Reanimated 3.4.0 🐎
Source code 👇👇👇
@swmansion
@natebirdman
@Baconbrix
@FernandoTheRojo
Keyboard handling with react-native-keyboard-controller and interactive mode support - as easy as it gets. Keyboard pain is over. And pretty easy to build solid avoiding views with that.
btoa/atob shipped with Hermes in React Native 0.74.1 is strict and can't decode without padding. It's already fixed upstream but wasn't shipped in the latest release.
As a workaround for now, make sure your string contains padding.
I've released another update for React Native Volume Manager (with
@expo
dev client support). Version 1.5.0 finally supports Modals. Before, it wasn't possible to hide the Volume UI (both) and intercept hardware button presses on Android.
Was a tough one!
The upcoming version of react-native-volume-manager will allow you (ios + android) to update the volume without showing the native volume toast. And its the first library I am aware of which also can suppress the toast with hardware button presses (volume up / down). 1/2
I finally had the chance to test Vision Pro. Thanks to
@callstackio
for patiently showcasing this to hundreds of people. Your team did a great job!
@appjsconf