Hey, everyone. I'm Taz Singh and over here is Marc Delgliche, and I had the pleasure of chatting with him down in Australia where this photo was taken right after he said, wait, you're using React Native on the web. Why in the world would you do that? And so, if you don't know Marc, he's the creator of CSS modules, vanilla extract, and more recently he's worked on React Native design systems over at Rainbow. Today, he's doing awesome work at the Remix team over at Shopify, and this is the answer I gave to him back then.
I said, well, Marc, this is why. Guild is the platform for communities, and communities are everywhere. They exist in all shapes and sizes, and we need to build an application that is also everywhere and can exist in whatever shapes and size these communities come in on all of the different platforms our users are on today. And so, today when you're building a modern application, you need to cater to both mobile and desktop anyway. So, looking at the usage metrics for Guild, 51% of our users are on mobile devices, and 49% are in desktop. This makes sense because people are interacting with our platform on the go, they're looking for events to attend and presentations to watch, and all of that happens, you know, primarily on a mobile device.
On top of that, we're an early-stage startup with a small team. We need every member of our team to be as effective as possible when shipping code. Every change to our codebase needs to have the highest impact possible. However, if we were to ship code to every platform, we'd also need to support and test all of them. So we'd need to test against every single web browser, we'd need to test every single mobile operating system, and it's the same story on desktop as well. We'd need a bunch of physical devices to test this all on, all from low-end Android devices to Linux boxes to everything out there basically. You can imagine additionally supporting multiple languages, for example, English and Spanish, where the number of items to test and support would start to increase exponentially, and it would just become infeasible for a small team like ours. This is why today we're focusing on the web platform in the English language at the moment. Just to support, keep the support overhead manageable for our small team.
And that's because the way I see it working is a bit like this, where this is the web platform that we're building for today. Once we introduce iOS and Android applications, we can see it looking a bit more like this, where maybe there's a common area in the middle, and as we continue to layer on more platforms like MacOS, Windows, and Linux Native apps, you can see the diagram looking a bit more like this. And for me, this is really where the power of leveraging React comes in handy. Where I see React being the superset of all these platforms, and React Native can encapsulate the logic and orchestration for all of them to work together. So let's focus on React, shall we? What do I mean by that? Well, let's say I have an app in React that looks like this. It renders some component, right? Maybe you start to pass some data into that component, and you get some data out of that component. That's the contract that your application cares about. That underlying component could be doing anything. That underlying component could be using React Native. It could be using a React Native view and rendering to a React Native text element. That underlying component could be using HTML elements, using in a way that's familiar to you if you're using React DOM today on the web.
Comments