Replies: 14 comments 16 replies
-
What would a migration of react-native-iap to an Expo module mean for existing React Native CLI projects? Does using a mix of Expo and React Native modules work well? |
Beta Was this translation helpful? Give feedback.
-
I agree with the move. I just wish that I needed it "in about 2 months" instead of today. :-) I had significant issues attempting to update my project from Expo 50 to 51, so I'm stuck there until I can take some time to unravel and/or rework a couple things. I presume that updating to the Expo module version of this, when it's available, will require the latest version of Expo? |
Beta Was this translation helpful? Give feedback.
-
Excellent initiative! |
Beta Was this translation helpful? Give feedback.
-
Hello @hyochan do you have an estimated release date for this? I'm hoping to use this library after the migration. Thanks! |
Beta Was this translation helpful? Give feedback.
-
It is unfortunate that there are currently three ways to write native libraries: old architecture, new architecture, and Expo module API. Honestly, while I understand that Expo is recommended as a good way to start with React Native, I'm still not sure if libraries should also be written using the Expo module API. This may be because I have not yet seen examples of major libraries written with the Expo module API. It seems the React Native team does not provide clear guidance on which method to stick to, and the scattered documentation only serves to confuse developers. Of course, I believe that the API and developer experience (DX) perspective of the Expo module API are quite excellent. Separate from that, although there is a one-line command to make Expo modules usable in bare React Native projects, I think this process could be as much of an obstacle for some as migrating from the old architecture to the new architecture. Naturally, I understand that the decisions made by the creators of these libraries are most important to the libraries themselves. |
Beta Was this translation helpful? Give feedback.
-
also eagerly awaiting this. Thank you so much for your efforts! |
Beta Was this translation helpful? Give feedback.
-
Thank you all for your interest and support. I anticipate that the basic migrations will be completed by mid to late August. As you know, testing in-app purchases has been challenging, with inconsistent results and frequent delays. The testing environment is less than ideal, which has extended the time required. Testing is taking significantly longer than coding. For this migration, I will only support iOS from StoreKit 2 and Android from BillingClient version 7 onward. Initially, the release will focus on loading products and subscriptions, making purchases, and handling acknowledgments or consumptions. While other functionalities like Additionally, during the code revision process, I identified several complex or messy areas. This time, I hope to consistently improve and maintain the code without getting tired, working diligently even on weekends. If the in-app functionality is not just a one-time feature but a crucial part of your app that requires continuous stabilization and development, please consider supporting me through buymeacoffee. Your contributions would greatly help maintain this open-source project. Individual sponsorship starts at $25, and corporate sponsorship starts at $100, renewed monthly. Your support would be greatly appreciated. |
Beta Was this translation helpful? Give feedback.
-
waiting as well :) |
Beta Was this translation helpful? Give feedback.
-
Please don't take this as a "why isn't this ready" kind of comment. I'm working on my first RN app, and was planning on using Glassfy, but they're shutting down. I'm now going to use this library, but was wondering whether I'm better off waiting a few weeks untli this is released as an Expo module. Will it make my life easier in the long term to hold off installing now? |
Beta Was this translation helpful? Give feedback.
-
@hyochan Hi, thanks for the library and for supporting the recent upgrades! Since it's almost the end of Aug, could you please let us know when you expect this library to support Expo 51? We are seeing issues when building the app. Example:
|
Beta Was this translation helpful? Give feedback.
-
Migration to
|
Beta Was this translation helpful? Give feedback.
-
What should I do to run the package with expo go? |
Beta Was this translation helpful? Give feedback.
-
@bayramn |
Beta Was this translation helpful? Give feedback.
-
hi @hyochan , first of all thank you for your excellent work on this library. 👏 I've successfully used it for a mobile application for months. Now I need to rebuild the app and, since I still need to support IAP, I came across this discussion about the future of the project. I noticed that in September you advised against using it in production environments, and the latest release is from October. What is the current status of the project? Do you plan to work on it in the coming months? I would need to start using it during Q1 2025, but given its current state, I'm not sure if that's feasible. What would you recommend? Thanks again! |
Beta Was this translation helpful? Give feedback.
-
Hello React Native developers!
Today, I would like to share some thoughts after deep consideration regarding the maintenance of the
react-native-iap
module.TL;DR: We plan to migrate the
react-native-iap
module to an Expo module to align with the new industry standard, reduce maintenance costs, simplify the project, and improve compatibility.To briefly summarize, we plan to migrate the existing
react-native-iap
module to an Expo module instead of a pure React Native module. The reasons are as follows:New Industry Standard: With the release of React Native version 0.74, it seems that the React Native official website encourages starting projects with Expo. The method to start a project with react-native-cli is somewhat hidden and requires some effort to find. This suggests that Expo projects are expected to become the industry standard in the future.
Cost-Effective Maintenance: Developing as an Expo module makes it much easier to manage native modules. Maintainers of React Native modules have had to invest a lot of time. For
react-native-iap
alone, we had to periodically update as React Native upgraded, and we also had to provide new features such as hooks. Additionally, we had to migrate according to native framework updates. For Android, there were many changes as billingclient upgraded. For iOS, we provided StoreKit and even supported StoreKit2. To provide these updates more efficiently, we also migrated to preferred languages for native development. For iOS, we moved from Objective-C to Swift, and for Android, from Java to Kotlin. The version updates of Kotlin alone often broke project dependencies (incompatible version of Kotlin #2640, Update Kotlin Version In Docs #2536, etc.). We also supported Expo config plugins to make it compatible with Expo (feat: add expo config plugin #2218). Now, we are at a point where we need to support the new architecture of React Native. After much effort to support the New Architecture, I believe that if we newly develop as an Expo module, we can greatly reduce these costs. Especially, Expo modules are "renderer-agnostic", meaning maintainers do not need to consider whether it is the New Architecture or Old Architecture when developing. Additionally, Expo modules can be easily installed with thenpx install-expo-modules@latest
command (https://docs.expo.dev/modules/overview).Simpler Project: Following from reason 2, the current
react-native-iap
project has become very heavy and complex due to the effort to support multiple modules. We aim to simplify it based on the design of Expo Modules. Furthermore, we plan to provide easier and more convenient tutorials for all React Native developers starting with IAP.Better Compatibility: By migrating to Expo Modules, we expect to resolve many compatibility issues we have faced over time.
These changes are expected to bring great advantages not only in developing the module but also in maintaining it, allowing many maintainers, including myself, to manage the module with much less burden.
As a potential downside, compatibility will follow Expo's support. Platforms not supported by Expo, such as Windows or Amazon, may not be supported. However, we can support them as Expo provides support.
I am sharing these thoughts to inform you of my current plan and to gather additional opinions from many of you. I expect to complete the work and release the expo-module in about 2 months.
Thank you for reading.
Beta Was this translation helpful? Give feedback.
All reactions