good morning everyone welcome to appjs com and today I'd like to share with you some updates and how we think about application software development at Expo we really want to help developers build the very best apps my name is James eeday and I'm one of the co-founders of Expo firstly one of the things that has felt really good to me about the state of react native is the collabora of spirit I've seen firsthand from the folks at the react division at meta at react comp just a week ago in addition to the technical talks there was a repeated emphasis on community this was coming from the folks at meta directly and just one example of collaboration is this RFC that defines react native Frameworks this was a big effort led by Nicola CTI from meta and he'll be giving uh a talk uh later today right after this keynote actually and this RFC had feedback from folks all over including from callstack and mic moft and other companies this RFC it helps lend Clarity between the scope of react native and Frameworks like Expo uh speaking of other folks who will be talking this year uh there's a very cool project uh from the folks at software Mansion it's the react native IDE still in beta uh and Kristoff Meera will be talking about it tomorrow also talking tomorrow uh are the folks at infinite red uh specifically Gant La board uh from from infinite red we'll be talking about ignite uh ignite is a boiler plate uh for setting up react native projects it works with Expo and that's one of the reasons why Expo and infinite red have collaborated a lot over the last year as well so very exciting to see all these collaborative projects come together and there's many more projects uh out there that we can't all cover like tamagi is and other really cool one for styling so just expect to see a lot more evolution in the ecosystem overall and that's really promising with that let's talk about Expo and how we think about application software development so one of the things I've observed over the years is that in programming iteration speed is really important and at Expo we build iteration speed into the Frameworks and services we make specifically in the context of application development iteration speed means getting code to users as fast fast as possible seeing what's working well or what's not getting that feedback then making changes applying the feedback and deploying new code to users again there's this feedback loop that incrementally makes software better and more precisely iteration speed helps developers find success by finding product Market fit finding product Market fit means getting a product like an app to be really valuable to a lot of people it's getting the app to truly fit the needs of its users and how do developers and apps find that product Market fit and become really valuable well one big way is that as developers we build features get internal feedback from our teammates external feedback from end users apply that feedback and just iteratively improve and the faster we can do this iter iterative Loop of getting better and better the faster we can improve our product Market fit and get closer to achieving success so for many developers getting feedback and iterating quickly are critical to the way they work iteration speed is the lifeblood of many companies and it's how they become successful let's shift gears a bit and talk about Expo for a moment at Expo our mission is to make the way people build application software and that means a key area of focus is to help developers find success we believe that's a requirement and in fact we even have a team at Expo called developer success and the engineers on that team are here at appjs comp and would love to talk to you and this is all to say that we strive towards helping developers be successful and that's why we invest in iteration speed we want developers to iterate quickly and find product Market fit which leads to success in summary Expo makes iteration speed because we want developers to be successful developers benefit from iteration speed at every stage of the app development life cycle from when we're writing code and want to quickly see our changes on our own devices to having our teammates easily review the latest internal version of our app so they can get their feedback to us faster and deploying our app quickly to end users in production as soon as we have the newest features and Bug fixes ready to go and also to collecting feedback and using it to inform the next code we write so we want to have iteration speed at all stages code review deployment and then also collecting feedback and for all of these to run really quickly but before we talk more about iteration speed for Native apps I'd like to first talk about the web the web does iteration speed really well to get started all we need is a browser and to start writing code everyone in this room has done that we can see our code changes easily by just reloading a web page in fact we don't even need to reload the web page with reacts fast refresh it's that easy it's also expected that code that works in one browser will generally work well in all the other browsers and sometimes it's easy to take that for granted on the web to share our work with our teammates we can deploy every commit to a temporary domain name and then share that preview URL so that they can review the newest version of our website they don't need to check out the codebase let alone have any developer tools on their own devices in order to give us feedback this is just like a really fantastic feature of how web browsers work and anyone from fellow developers to designers to even the CEO can review the latest changes and tell us what they think and of course in production we can test every commit through a cicd pipeline and deploy it to any commodity web host and having this choice to deploy every commit to our end users and enables maximal iteration speed unfortunately native app development traditionally doesn't offer the same velocity but let's look at what it could look like for Native app development to take inspiration from the web and offer faster iteration when getting started ideally we'd be able to use our favorite code editor and the tools we already have on our computers instead of downloading 10 to 20 gab of Android studio and xcode and Android and iOS sdks we would just be able to use say vs code on our computers sometimes people joke about node modules being the heaviest object in a known universe those people have not tried native development and once we're set up we need to run our code on the web we just use a web browser but with Native development we need to compile our app get a signing certificate get a private key maybe issue a provisioning profile use those to sign our binary and then finally we get to install our app this is intrinsically more complex than the web but ideally we could get all of this down to just one command and when our app is ready to share with our teammates so we can get their feedback we want them to be able to install our app very easily without needing any compilers or Dev tools on their own machines our teammates should be able to install our app with just their mobile device but even if installation were easy compared to the web previewing a website is still so much easier our teammates just need to visit a preview URL fortunately react native partially enables this for mobile development when we change only the JavaScript code in our react native app without changing the native code we we don't need to rebuild our native app and ask our teammates to install it again instead we can just publish our new JavaScript to the web and give our teammates a URL to get the latest code and run it in the app they already have installed on their devices so we want a workflow that takes advantage of this great capability and when we're ready to go to production we want the release to go as smoothly as possible of course so let's take inspiration from the web again where continuous integration and continuous deployment are the gold standards for mobile apps continuous integration it means being able to do a build on every commit and run our tests also just each time we make a change so that we ensure that our codebase is in a healthy state but unlike the web where we can deploy each commit all the way out to production to our end users we can't const stantly submit our mobile app for review to the stores but we still can use our cicd pipeline to at least automate the very manual and timec consuming process of making a production build of our app when we do want to submit and fortunately as I mentioned just a moment ago we can go further with react native we can publish JavaScript for our teammates to see our latest work uh internally during review but we can also do this in production when we haven't made native changes we just publish JavaScript and our end users can get the latest and greatest features that we've built for them we want our cicd pipeline to run potentially on each commit and publish our JavaScript when our native code hasn't changed and like on the web this just gives us the maximal iteration speed or get very close to it and like on the web it'd be even better if we could incrementally and safely roll out new commits say to just 1% of our user base at a time and sometimes mistakes happen being able to undo a roll out is it's such a powerful capability it engenders trust in the system it makes us feel like we have control over the code that we're rolling out and so we want to be able to undo or roll back all of this lets us approach truly continuous deployment for Native mobile apps and get closer to the same iteration speed as the web truly continuous deployment means our users always get our latest code and we want the same level of control and iteration speed that we get on the web for Native apps all of that is what we are building towards at Expo High iteration speed and true continuous deployment are the culmination of many years of work I'd like to show what continuous deployment looks like end to endend with Expo and highlight some new features we think will make your development even faster with Expo whether we want to first develop on Android or iOS on physical devices or in the simulator we have two choices we can use an app called Expo go or use a development build of our own app expoo is a Sandbox for trying out Expo quickly it's fast to install and great for one-off use cases that use the latest version of the Expo SDK however for long-term projects and projects intended for production the Expo team recommends using development builds instead development builds are more than a Sandbox they support custom native code they let developers choose when to upgrade react native and Expo SDK versions they let you choose those upgrades at a time that is appropriate for your road map and compared to Expo go development builds have more parity between development and production that way you can catch bugs before they even go into a production build and go out to end users making a development build requires configuring an Android key store or an iOS provisioning profile and certificate Expo application services or EAS for short handles both over the last year we've also added support Beyond IOS and Android for things like tvos and we think EAS is the easiest and fastest way to configure your application credentials for a native mobile app compiling the build is the most important step and we have some great news there too so last year we made iOS Builds on EAS 40% faster this year we will speed up Android Builds on iOS also by an estimated 40% we expect this will require no changes to most projects and to see for yourself everyone will be able to try this later [Applause] today on the es website uh there's an opin setting where you can toggle this on a per project basis and we'd love for you all to tell us how much faster are your build times the performance improvements don't stop here at Expo we're always working on making the CLI faster with each release earlier this year we reduced the Baseline speed of the CLI by 600 milliseconds and another optimization in our latest release with SDK 51 is the Expo use fast resolver environment variable that you can opt into and this speeds up up a key bottleneck in the bundler when rerunning the bundler especially with Babel transforms already cached some of our bundling benchmarks got six times faster and at Expo we don't just make software faster we also want to make the way developers work faster and so one relevant thing that we launched earlier this year is Dev tools plugins these are plugins that actually run in your computer browser and they connect to the development build on your device they give insight into specific libraries like apoll graphql or asnc storage mm KV or tiny based data stores react navigation State Redux there are plugins for all of these best of all anyone can write a plugin they're open source and it's exciting to see developers write new plugins for new use cases we've also got some great features for sharing an app with teammates to get feedback EAS allows anyone on a team to register the device to be eligible to install internal builds of an app to review for teams with many devices it can be complicated to track who owns which device so to make this easier you can now rename individual devices to identify them more clearly and soon EAS will let you associate devices with specific team members and it will be much easier to confirm each teammate is set up and able to install internal builds of your app late last year we announced orbit a desktop application it works with EAS and it helps you browse all of your teams builds and JavaScript updates and lets you run them on simulators and real devices in one click orbit makes it easy for any member of a team to install and review all the code that you've been working on and later today we'll hear a talk about how orbit was built to run across Linux Mac and windows this is exciting too for teams who use GitHub we also released a GitHub app to link your git repository with your EAS project set rules for when to make a new native build or publish a JavaScript update such as when you push code to GitHub for instance build when you push to your main branch or when you push a commit to a special tag just for releases you can even build a commit on each PR it's your team's Choice the GitHub app also brings one of our favorite features of the web to Native mobile apps Pull request previews the GitHub app has an option to publish JavaScript updates on each commit and these commits are for a team teamates to review internally not for production when you create or update a PR the GitHub app will use EAS to publish an update and provide QR codes that anyone on your team can scan to try the newest code on their device so those are some of the features we've built to help teams review each other's progress more quickly and give feedback sooner before we go on I'd like to talk about EAS build we've heard from developers they'd sometimes like to slightly change a build job just a little earlier this year we announced customizable build jobs these jobs are defined in a yaml file and with custom steps of your choice you can just add one line to add a custom bash command that will post to your slack instance or you can write yaml commands that are as complex as completely redefining the build process to build Mac OS apps or even apps that don't even use react native these jobs are very flexible and one popular use case we hear a lot about is running tests for instance developers want to run unit tests or maybe Maestro tests in order to test their app end to end in a real simulator so customizable Bild jobs also allow for writing tests however tests aren't builds and we want to keep builds and build jobs and tests and potentially some kind of test job in the future and when we think about this there are potentially many more types of jobs we'd like to support like publishing an update or deploying your Expo router server API code to a host so at Expo it's on our road map to have first class support for way more types of jobs and also to offer entirely generic jobs that you can customize for your use cases we're thinking about jobs that also run in sequence so they'll help your team coordinate releases stay tuned for more later this year in addition to EAS build we've also been working on EAS update to improve how developers can iterate quickly we'll hear more about esas update during the conference and I wanted to highlight two great features we've added to es up update that you can use in production these two features are incremental roll outs and roll backs and they work together roll out your JavaScript to a small percentage of your end users to start and as you gain confidence in your changes roll out to everyone and should you need to undo a roll out just a roll back is one command away say that we have say that we are rolling our our code to 10% of our users things look good and now we want to roll out to 50% but our release manager comes to us and says we need to roll back to 10% maybe they caught something when we roll back to 10% the original 10% in that first roll out will still be the ones in the final roll out group from the perspective of the users in that original 10% they'll never notice that there was a roll out and a roll back we designed EAS this way to make the user experience more stable and the developer experience more predictable so that developers can iterate faster on the client side we've designed the Expo updates protocol to fully download updates to a user's device before running them this ensures an update is complete without any missing assets and launching an app works just as well offline as it does online and this minimizes the difference between running JavaScript that was included with the app binary and JavaScript that was downloaded from a server however there's a tradeoff for apps to launch quickly without needing to wait for the request to come from the network and so updates are typically downloaded in the background and then they are run the next time the user launches an app or when a developer chooses to programmatically reload the new JavaScript on the web though the default behavior is for users to always see the latest version of a website when they visit a URL what if users of native apps also could Fetch and see the latest version of their native UI especially as they navigating between screens during a live session of their app the server would join the client in driving the UI in this scheme and thinking about iteration speed as soon as developers deploy new server side code users would get to see the latest and greatest changes just as they use the app so we think there could be ways to iterate even faster at Expo we're making server driven UI happen by using the react server component protocol this afternoon we'll hear more about expo's official implementation of react server components which will be built into the core of Expo router our very early prototype have proven to be promising already and we think server driven UI in Expo router will not just be an evolutionary Improvement but a revolutionary one so these were several of the features we shipped to help developers iterate more quickly We Believe iteration speed gives developers a competitive Advantage faster build jobs continuous integration previews on every poll request incremental rollouts and roll backs gaining more confidence and we have even more to announce and also open source bit during the conference later so please look forward to that at Expo we work on technologies that help developers find success and many are successful we'd like to share some of their stories with everyone here today and to do that please welcome me please join me in welcoming Charlie chever thank [Applause] you hello hi um I'm Charlie Cher the other co-founder of Expo I'm going to show you some excellent apps built with Expo and highlight a few Expo features that they use then I have something new to show you that I hope you'll like this is starlink starlink is a product from SpaceX that has become the way to get a fast internet connection anywhere in the world with a clear view of the sky where it's not feasible or convenient to get a wired connection a reliable high-speed low latency internet connection can be life-changing for people in remote areas and starlink even works on the go and it's starting to partner with cruise lines and airin lines to provide service to Travelers the starlink app is a key piece of their offering since you use it to correctly position your receiver and configure your setup the app looks and feels great and there are some really nice touches there are a bunch of different models of the starlink hardware and they all feature are featured in full 3d in the app which is just fun and cool but also makes it way easier to make sure you've selected your model correctly when you set up your starlink you do a full scan of the sky above you with the camera so the app can help you position your starlink correctly the app highlights all the areas of the sky you haven't finished scanning yet with some dots these features feel really rich and Native so I asked the Starling team about what native code they Ed to make all this happen and they told me it was actually all just JavaScript and the modules from the Expo SDK most of the app was built by only two developers and the team has since expanded but it's still only four so using the standard Expo SDK modules like Expo alongside pure JavaScript packages like 3js really help them to ship on time with a lot of impressive features um Aaron Grider is giving a talk later today with more detail about how this app was built so show up for that what we're trying to do with the Expo SDK is given extremely solid reliable building blocks to do all the most common things you want to do in your apps doing this well requires that the SDK cover a pretty wide range of stuff with a lot of depth and doing that has turned into a real Community effort we just released Expo SDK 51 a few days ago and this release alone had 140 contributors 20 of those contributors are part of the Expo team but the other 120 are open source contributors from the community there are 996 different modules in the Expo SDK right now and the only way we can get all these modules the love and care and attention that they need to stay up to date and be high quality across three plus platforms is with a really big group effort this is especially important in Mobile development since Google and apple are constantly making changes to the underlying operating systems and so we're dealing with a moving Target thank you so so much to everyone who has contributed fixing bugs rewriting modules and moving the SDK forward this release an especially big effort since almost every module was updated to support bridgeless mode over time we want the Expo SDK to become more and more of a community standard the big news in react native is that the new architecture is finally here in beta almost every module in SDK 51 supports the new architecture including the new bridg bridgeless mode the new architecture was announced literally almost six years ago now and so I'm pinching myself to make sure it's real that it's actually here the new architecture does all kinds of nice things but the most most important thing to me is that it lays a foundation for much better performance in certain areas like lists which we know are so so important for creating apps that have a best-in-class feel in this release we've also added support for privacy manifests which are now required by Apple and we also promoted the new and improved camera and SQL light modules to be the default there's a ton of interest in SQL light in particular right now because so many people are interested in local first apps and the snappiness they can provide saen Bremers Schmid is giving a talk later today about this in fact if you're interested and the camera is probably the single most important sensor on the phone and is used in a ton of apps we've also completely Rewritten the Expo video module and this is now in beta it's so common to use multimedia now you can expect us to see us investing more in making it reliable and easy to use multimedia features in your apps there's also one really important change that I want to cover that might actually feel like a step backwards starting with SDK 51 the Expo Go app will only support one version of the Expo SDK the main reason we did this is that it's really hard to maintain multiple versions and cram them into a single Expo Go app supporting only one version at a time will let us do a better job on every other part of the SDK and the other reason we feel good about this is that we are so bullish on using development builds one of my deep beliefs in software development is that you want your development environment to be as similar to your production environment as you can make it and development builds are so much better at this than Expo go James talked about some development some about development builds earlier but if you don't remember what development builds are they're basically your own version of Expo go they can load and reload your JavaScript as you write it but we'll have your app icon your app name and your credentials for things like a i APS Etc and they can include any version of the XO SDK you want and any native code that you want to add in there testing things like push notifications payments and even things like Maps is so much more reliable and closer to production with development builds we found that almost every serious Expo developer eventually ends up choosing to go this route so we're focusing hard on making these as easy to use as possible you can build them locally or you can build them in the cloud with the as or in your own cloud we're always working on ways to get them on your team's devices as easily as possible but also Expo go isn't going away we know it's hard to beat in terms of how fast and simple it is just to get it from the App Store and start developing and you can continue to use it if you want we tried to make it as easy as we can to get any version of Expo go onto any device just by going to expo. devevo so if you want to keep going with Expo go you can always either one keep keep your project up to date always with the latest version of the Expo SDK and immediately as the Expo Go app updates in the App Store you do an update or you can go get the specific version of Expo go that has the SDK version that you're using and work with that the one platform we haven't found a great way to do this yet on is physical iOS devices but we have a few ideas and so we'll keep working to try to make that work well too but like I said if you're developing a real production app I think the best way to do this for most teams is development builds caddy kman is giving a whole talk about this topic later today at 11:30 you should check out if you want to dive deeper this is Phantom wallet it's the number one Sal Salon wallet in the world it's used by 5 million people every month to store send and receive salana tokens it's available on iOS Android and has a Chrome extension in your browser it also has deep integration with the Saga salop phone the mobile apps are 100% expo from day one and the Chrome extension is also written in react and all the code is in one monor repo this monor repo is 99.6% typescript but 4% % cotlin because they need to do a handful of native things to integrate with the salop phone hardware and one custom native module that handles some crypto specific stuff everything else just uses the standard xos xos SDK and react native built-ins we find this is pretty common a serious app that mostly uses JavaScript or typescript but has one or two things where they need special native code and development builds are really great for this use case the Phantom team has 20 front-end Engineers three of them have a colon background and one of them has a swift background the rest of the team mostly just knows and re writes react and typescript and wants to focus on that rather than wrangling native code so the Phantom team uses es build to do all their builds in the cloud for them this way most Engineers on their team don't need to worry about having xcode or Android studio and keeping them up to date and properly configured and running smoothly they can just write typescript every time someone makes a code change their team runs ASAS build- Pall to build for all platforms and then they can just write typescript for this to be good experience we know the most important thing that we can offer with es build is speed James talked a lot about how we've been working on this for the past year and are can can continue working on it going forward we're constantly working on upgrading the hardware es build runs on and and the performance of build in general like James said we've done a lot of work to make Android's builds significantly faster and now we're giving you the option to run both your IOS and Android Builds on large workers which can make your builds even faster you can opt into that by setting the resource class field in your e. Json when I do my own app development builds now I don't even bother opening xcode or Android Studio unless I'm writing my own custom native code I just do all my builds in the cloud with the as build I find that waiting for builds is the number one momentum killer on building exciting things in apps and so my dream is to get build times down to just a couple of seconds so I can do a build on a live demo for you in a talk like this and not you lose your attention we're not there yet but I expect to see some more progress towards this as we keep working hard this is warcast warcast is the flagship client of the foraster protocol which is a new decentralized web 3 twitter-like Network the app is beautifully designed and built and feels awesome to use it's been growing really quickly because the app is so nice and Poston forecaster can include interactive elements called frames and really exciting people in crypto like vitalic are posting regularly on it since opening up last October foraster has seen 350,000 paid signups and grown usage 50x yesterday they just announced that they raised $150 million to keep working on it they also told me that they're trying to hire a few staff level react native Engineers so if anyone here is looking for a cool new job feel free to reach out to them as a side note one thing I'm really proud of is that every single app I'm showing you today is working and winning with Expo it's really important to our team that we're making Expo into a platform that let you build apps that aren't just cool demos but really do everything you want them to and work for your users and just PL succeed I talked to verun the CTO at farcaster the other day and he told me that they had actually started Ed out building a desktop app with electron and web Technologies because they thought that would be the path to moving fastest but what they found was that it was really too hard to get traction because users are so mobile Centric these days so they decided they needed to build for mobile and they turned to Expo because they needed to move quickly and be on every platform and they see this as the key decision that led to farcaster taking off the other part of their secret sauce is a lot of little things added up its iteration speed they use es update to push six to 10 updates per day on average out sometimes saking a feature in the morning Gathering feedback during the day and then updating it again in the afternoon this kind of continuous deployment workflow is one of the things where once you work this way you just can't go back to not having it it's so so powerful to be able to think something should be different make the code change and then a few seconds later have that change be going out to all your users it's ALS uh it's also a secret ingredient for a lot of things that are successful fixing bugs faster trying more new ideas and figuring out whether they are good or not faster and keeping context in your head more easily continuous deployment like this has become the norm for web development we're now seeing more and more companies are using ES update to do this for apps because workflow like this is so so good doing updates like this for apps is trickier than doing it for the web because you have native code involved you need to make sure that the version of JavaScript that you send to your users is compatible with the native code they have in their app binary in Expo updates we use a concept called runtime version to denote a specific native version and help you reason about which JavaScript can work with it I could explain this to you in more detail but I don't really want to it's a little bit complicated and annoying to think about and worrying about it starts to suck a lot of the joy out of using updates to iterate quickly on your app so what we did is we made something called Expo fingerprint that looks to your native code and creates a fingerprint that we can use to tell if you have changes that require a new version of the app binary or whether the native part of your app is compatible and you can just send new JavaScript to it freely by integrating Expo fingerprint with updates you can have things like runtime version get taken care of for you automatically in most cases it's possible to just write code and push it and know that the right thing will happen this is coinbase I think everyone here knows what coinbase is but if you don't it's one of the biggest trading platforms for Bitcoin and other cryptocurrencies in the world they use otaa updates for all the reasons I just list listed but for a bunch of reasons they want to do this hosting themselves Expo and coinbase coordinated to define a standard secure platform for doing these updates there are a lot of ways to screw this up that could lead to an injection attack or just broken apps and we're so glad we could work together on this and get more eyes on making sure the protocol we're all using is correct robust and secure I partly mention this because it's cool that we're working with coinbase to establish a standard here but I also think it's important to highlight this as an example of self-hosting one thing I'm a little bit worried about is that I'm talking a lot about cloud services today and I think these are great but I know that whenever an open source company starts talking about doing paid hosting it can make people worried that they have to use these Services I think I think our cloud services are getting really good I stand behind them and I think almost everybody building with rack native should be using them but we also know that they aren't for everyone and not for every use case and we don't want to force anyone to use our cloud services or create unnecessary lockin in almost everything we offer in the cloud there's a way to do it locally or in your own cloud if you have a good reason to or just prefer to do it that way you can expect that going forward from us as well now I have a preview of something that brings together everything I've just been talking about and what James has been talking about too we'll still working on it but you can try it today by just going to expo. new expo. new is the easiest and fastest way to get up and running with a new project that uses all of EAS services to give you that really powerful workflow James and I were just describing right out of the box oops um when you go to expo. new you can either log in or sign in with your Expo account and then we'll link your account to your GitHub account there are a bunch of important things that we can do by having your account linked to your GitHub we can set up new repositories for you kick off Cloud builds and do builds and updates whenever your team pushes a change to even a repo in a branch when you make a new project with expo. new we'll make it on your GitHub account and you can then clone it to your local machine um you can see here this is the signup flow you just put in your email address and your password or you can log if you already have an expo account um it just takes a moment and then here I'm linking with my GitHub this is pretty painless too I think um this is a video I I had to cheat three times in the video which is why it's not a live demo and um my hope is that next year I can give you a true live demo where I don't have to fast forward through anything or cheat at all um but once you've connected the GitHub account um you can then clone the repo to your will make the repository in your giup account for you and then you can clone the your app to your local machine um this is the flow of making the repository on your GI up account you just give it a name and then it'll make the account for you you can use all kinds of devices and browsers and simulators and emulators to develop and test Expo apps but I'm going to choose in this demo to start with a development build on a physical iOS device because that's kind of the final boss of this stuff it's notoriously much harder than any platform to deliver a binary to and I think we've made it as fast and easy as and convenient here as anything I've seen you need a paid Apple developer account for this to work and your phone needs to be in developer mode but otherwise this flow I'm showing here should work for anyone today um the first way that I'm really cheating is that I'm fast forwarding through the mpm install here because it takes about a minute and a half so it doesn't go this fast but we're looking into ways to make that go faster maybe using bun maybe using some other techniques but you're just going to have to wait for that to complete in The Next Step you'll sign into your Apple developer account we'll walk you through setting up a provisioning profile for your physical iOS device that'll let us make a build that we can send over the air directly to your device and you can install it that way um this is a lot of has a lot of moving Parts but we'll walk you through them step by step that I'm going through here basically once we get your provisioning profile set up you scan um you take your iPhone scan the QR code on it and then um it'll take you to a web page that has a download link for the profile that's what's happening right now once you do that um and allow that you need to go to the settings screen of your app this is just to make it secure from Apple um and it'll say profile downloaded once you click on that or tap on that you can put in your passcode and install and now that'll give permission from your device to let us send builds directly to you that we can install so once that's set up you go back to the terminal and push a button to continue the flow what we'll do then is we'll kick off in the cloud a development build for you we also get commit any the the credentials changes so that you can always keep doing this in the future without having to redo the configuration the second cheating part of this is that I'm fast foring through the build here but we actually spent a whole bunch of time making builds faster here so we've gotten these initial builds down to about two minutes on both IOS and Android using some really smart caching techniques so when you're starting a new project you we think you can get going in less than 10 minutes total once that's happened this QR code that you see you can actually load directly onto your your device just by scanning it you can see here that there'll be a prompt asking if I want to install it once that happens there's no real confirmation or anything in this flow but you just usually scroll to the end of your app library or search for the name of the app and your phone here I know it's at the top of the app Library so I'm just opening it the next thing I can do is basically now that I'm running this I'll go into my terminal and start running the bundler like I would in any other react native app just going into my project directory and then out here I open vs code but then I open the I run I start running Metro with Expo start that'll give me another QR code that I can scan to just get up and running inside my development build I didn't fast forward through this part but maybe I should have um once this is up and running it's just like any react native app like I see the default template I can go into vs code and I'll make a change and fast refresh is enabled so you'll see it right away here I'm going to change the text in the default templates that says welcome to just so say hello appjs you can see me making the change here and then it'll show up live in the app now we're still working on um getting the update in the in the truly continuous deployment flow built into expo. new we're doing that soon in the meantime I kind of pre-baked in the third sheet I did in this thing as I pre-baked uh a QR code you can actually scan an expo go and see my update in the workflow it's a little bit of a cheating demo but if you want to scan this QR code now you'll actually see the change I just made on your Expo go client um I'm excited to tell you that you can start using expo. new just by going to expo. new in your browser right now it's still a work in progress but even at this stage we think it's already pretty good and it I use it to start all my new projects we're going to keep adding to it and making it far easier and faster and more powerful to use we hope you like it too and we want to hear from you if you have ideas about how to improve it and get us closer and closer and closer to that true continuous deployment workflow that is the real dream we can't wait to see we can't wait to see all the apps you build thank you so much for coming and enjoy this edition of appjs [Applause] [Music]