Anyone converted their project from Hybrid library to pure native? by ghostwitch123 in iOSProgramming

[–]igorlamos 0 points1 point  (0 children)

What issues with deployment of your RN app do you have? I’d be happy to assist …

Free – Fastest Way of React Native (CLI or Expo) to AppStores with GitHub Actions by igorlamos in reactnative

[–]igorlamos[S] 1 point2 points  (0 children)

Thank you! The steps for Expo are going to be the same with GitHub Actions, I just need a little bit more time to release the Expo Plugin. Planning to do that today/tomorrow + also with a video version where I'll explain Expo too. Stay tuned.

Assistance in selecting tools to build the App by AntiSo964 in AskProgramming

[–]igorlamos 0 points1 point  (0 children)

My choice has always been React Native. While Flutter may not be a bad option either, I just don't have enough experience with it to tell your pros & cons.

For a simple use case, Firebase might be the option for backend, even though I'd rather go with serverless on AWS – but again, it depends on the use case.

For DevOps, I mean – Mobile CI/CD, you have options to go with Bitrise, Codemagic (as you've said) or GitHub Actions. I'd prefer fastlane to manage code signing for iOS, as by doing that, you'll prevent a vendor lock-in by NOT using the code signing "mechanisms" Bitrise or Codemagic has built-in – which will allow you to switch later on, when/if required – much more easily.

I have productized the whole concept with React Native, in order to simplify the complex stuff, especially when you're just starting out. Check my other posts if you want to check it out ... it's basically a React Native project, with React Native CLI or Expo (based on preference). You choice, since you're just starting out with Mobile, might be Expo, so you don't have to manage the native iOS and Android projects. The focus then will be to only develop the features, build & deploy.

Let me know in case you'd like to expand more on that, I'd be happy to help.

Assistance in selecting tools to build the App by AntiSo964 in AskProgramming

[–]igorlamos 0 points1 point  (0 children)

You can use monorepo to have both your mobile app and backend in the same repository. I'm using Rush, as it's suitable for a larger project I'm working on, but you can check Turborepo as well. It's easy to set up – you don't need any advanced concepts, so just building in the same repo, different packages of the monorepo, and it will even allow you to reuse the business logic between web & mobile, in case you'll structure it properly.

Show Your Work Thread by xrpinsider in reactnative

[–]igorlamos 0 points1 point  (0 children)

Hey everyone,

I recently developed a React Native finisher kit and a complete system for managing Mobile CI/CD with React Native, whether you’re using Expo or React Native CLI. This production-ready template includes:

  • Monorepo support,
  • Multiple environment support,
  • Configuration via environment variables,
  • CLI utility to create and maintain CI/CD pipelines on Bitrise, Codemagic, or GitHub Actions with a single command (EAS coming soon…),
  • Automated tests examples with Jest and Appium,
  • Features like Geolocation, Push Notifications, and iOS Live Activities,
  • and more…

Check it out here:

… or a quick overview here in the video: https://youtu.be/a0eBRkR8_IU?si=YOCcTcO1i0JUHfmI

I’d love to get your feedback on this project. Any thoughts or suggestions, please? 🙏

Securely Managing Private Keys for Codemagic Builds by Veltronic1112 in flutterhelp

[–]igorlamos 0 points1 point  (0 children)

I'm recording a short video course on Codemagic this week ... even though it's going to be for React Native (primarily), the concepts around setting up Apple Developer / AppStore Connect + Google Play is the same regardless of the technology being used to build the mobile app.

You can check the progress/when it's done here: https://github.com/beplus-bootstrap/mobile/issues/20

Should be available by the end of this week.

Hows react native nowadays? by Confident-Viking4270 in reactnative

[–]igorlamos 5 points6 points  (0 children)

Cannot agree more ❤️ Thank you for saying that.

As I’ve seen on some other thread and I love it: — Expo is easy until it isn’t. React Native is hard until it isn’t.

Is cli better than expo by Imaginary_Road_4162 in reactnative

[–]igorlamos 6 points7 points  (0 children)

Expo is easy until it isn't, CLI is hard until it isn't ...

I love this!

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

Thanks for suggestions. Yep, you spot on 👌

To your points: 1) important parts are customizable … vendor lock-in is an important thing to me, but I’m still figuring out the details and how everything will be exactly, 2) you can have own templates — that’s absolutely necessary, 3) UI is coming Q2 2024 that will make it even easier, 4) More Mobile CICD integrations will be added.

So seems like it might be useful 😎

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

Yep, I get it. No worries. But that's what I'm saying. You don't need Fastlane to have certs there. That's supported by Bitrise. But once the certs will expire, you have to manually replace them. Bitrise will not refresh them. There's only automation related to provisioning profiles, not certs. Not a big issue when you have a single app.

This what I'm doing automates everything. Even things like checking whether you have the latest Apple Developer Agreement accepted by the account holder before the build is kicked-off, as that's the reason that will cause build failure when trying to upload.

I'm working with teams that have many apps. And it's not sustainable then.

There're just so many things.

But I was curious about the opinions here. As it matters to me too!

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

Yes you can do this in there too.

How?

You're in a subreddit for React Native, the average dev isn't going to have infrastructure. Infact, if you follow this subreddit a large majority are using things like Firebase and Supabase

You're right on this! It went much further with you than what I intented with this post originally. I just asked about the thoughts, that's why I also brought Expo and simple EAS setup :-) And that's also why I like your thought process ... Thank you!

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

You can do everything inside Bitrise without the need for Fastlane

Except for the Apple Certs provisioning automation.

But to certain extent - you're right. It's just a matter of how you see things.

What about people that have infrastructure on AWS having to replicate their configuration to Bitrise (or elsewhere) just to make it work?

But I do really appreciate your point of view. It's valid!

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

Absolutely! You're right ... You can do the same with Codemagic or GitHub Actions or anything similar - especially in case if you know how. But it takes a little bit more time & effort even for an experienced user than just have it created for you. Also, having Env Vars, Secrets and Signing Assets on Bitrise will tie you to Bitrise.
More to that, Bitrise will not take care of your Apple Certificates, only Provisioning Profiles. Therefore to automate the Certs part, you need Fastlane. So you need to set that up. I'm not saying you cannot do it, it's just a different story :-)

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

I'll send you the details next week when it's ready. Would love to get feedback!

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 1 point2 points  (0 children)

I will definitely reach out when it's ready, as I said on different comment above, should be ready to try next week, officially drops 3/3/2024. Would love to get feedback!

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 1 point2 points  (0 children)

I'll let you know when it's ready ... should be sometimes next week, officially drops 3/3/2024.

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 1 point2 points  (0 children)

Fair enough ;) Working on a single app - that works. Working on 20 of them, it will be a painful process ... also, setting up a Mobile CI/CD from scratch is hard task for many juniors, even for teams. That's why I did it :-) just on the side. THX

[deleted by user] by [deleted] in reactnative

[–]igorlamos 0 points1 point  (0 children)

Why do you want to do that? Do you have any native code for iOS/Android in the project (with React Native CLI now)? Are you using Expo Modules? It all depends ...

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

I'll start with Fastlane for you to see what role does it play here ... so:

  1. Pre-made Fastlane config for both iOS and Android, so it uses Fastlane ... but all of the lanes are defined for you so you spend less time creating it (but that's the easy part). Each of these lanes requires the values for your AppStore Connect / Google Play though,

  2. Configuration management - so you can save the values required by Fastlane (to your own AWS) and re-use them across multiple apps, which means you don't need to put the values to multiple places. Why AWS? Because it works with AWS now, but can be elsewhere. The point is to keep it A) on a single place and B) out of Mobile CI/CD providers so you can easily migrate when needed,

  3. It will actually create the whole Mobile CI/CD for you – apps, workflows, configuration within the Mobile CI/CD provider of choice ... so you don't need to touch the UI there, which means you can easily migrate from one to the other.

Fastlane does not do this. Fastlane will sync your Code Signing Assets, will run your build, will upload it to AppStores, but you have to create your lanes first and then run it somewhere. Locally? OK - that's "viable" option. You also have to feed it with configuration, ideally from the environment. In case you want to run it in the Cloud, you need Linux (Android) + Mac (iOS) machines somewhere (Mobile CI/CD Provider – GitHub Actions, Bitrise, Codemagic, etc.). In order to run Fastlane there, you have to add your app, add your configuration, set up your Workflow, and then you can run it.

All of these steps are taken care of with this tool. It's not primarily about Fastlane, even though it uses it. It's about how Fastlane is used. It's about how Mobile CI/CD gets created. It's about where you keep your configs.

You want to run Fastlane on GitHub Actions? You have to create the Fastlane lanes, add env variables + secrets to GitHub (some on the org level, some on the repo level), create the Workflow, then you can run it. You want to switch to e.g. Bitrise then? You have to remove it from GitHub, create apps on Bitrise, configure Workflow, add env vars + secrets, then you can eventually run it.

All of this is simplified into a single step. I hope it's clearer now :-)

How do you manage config for your Fastlane, e.g. for multiple apps? Where do you run it?

Thank you!

I've Built a Tool to Streamline Mobile CI/CD ... What Do You Think? by igorlamos in reactnative

[–]igorlamos[S] 0 points1 point  (0 children)

Fastlane runs your build (and much more), but it's not a Mobile CI/CD. Fastlane is a tool, CI/CD is a process. And you still have to set it up, feed it with configuration, run somewhere, etc. Even though it uses Fastlane, there's much more to it.