What does better multi platform development look like?
-
See your changes quickly without having to reload while keeping your current state.
-
Familiarity and consistency with the tools and languages you are working with.
-
Debug quickly and efficiently.
-
See your changes across all platforms if you are developing for multiple platforms.
-
Flexibility to share components across platforms while also working with platform specific pieces.
-
Leverage the platform defaults so that your app uses native components and gets everything along with that.
So what would that look like in practice.
Well it might look something like this:
link to the video: https://youtu.be/EmFJLBgDVtM
The demo shows the same codebase and a shared metro server running for ios, android, web, mac and windows all at the same time and across two different computers.
This means you can easily develop and see your changes across all the platforms you are creating for at the same time with fast refresh so no state is lost on any platform when changes happen. While also allowing you to develop in javascript/typescript for all platforms keeping everything consistent allowing for much better code sharing. So you can use all of your knowledge from javascript/typescript and even get to keep some of the same debugging and other tooling that you may already be familiar with. This greatly reduces the barrier to entry for anyone wanting to make changes or improvements to different parts for your app on any platform.
With react native you are also able to share components while at the same time having platform specific components when that is needed as well. This flexibility is key as you run into problems you can choose the best solution whether it is native or not. You can also quickly test ideas with a simple implementation and if it catches on you can reevaluate with more data and customer feedback to implement things differently when the idea is already proven. This is especially important as users don’t like feature discrepancies between platforms, this type of incremental way to prove out features before they get more resources can help streamline and focus the developer time that is available.
The whole idea here is to make it sustainable to develop consistently across multiple platforms.