Last updated: 1st March 2023 (This is a living document)
Back in September 2015, React Native for Android was open-sourced by Meta. We jumped right in to get our hands dirty with the cross-platform tech that would help us build native mobile apps.
We realized the lack of a component library and started building one. We released the first crappy version on April 13th, 2016. It’s been almost seven years! We have come a long way since then!
In 2021, we realized that React Native has its scope outside React Native, so we built React Native Aria, which was used in NativeBase v3. Since then, companies and individuals have adopted NativeBase for their cross-platform web and mobile apps.
The library is overgrowing, and we are almost 87K weekly downloads on npm.
GitHub stars aren’t the right metric for many things, but NativeBase appeared at the sixth position in the JS mobile rising stars of 2022.
It’s not all rainbows and butterflies. Though many apps have been built using NativeBase, we have encountered some issues. I have tried to write an unbiased state of the not-so-good parts.
We packed in many features, which led to some performance issues; this issue started as a comparison with pure React Native performance but later turned out to be a source of ideas and a push for us to work on alternatives.
We packed in a complex styling engine and a component library and introduced different APIs. This made it hard for us to maintain the library. It even made it hard for us bring in individuals and companies to contribute to the library.
A lesson learned, and here we are to fix everything in our capacity!
First, we have split the library into three parts (thread). The third part isn’t a library, and it’s the styling that is copied to the user’s project.
The libraries are
- dank.style: A universal & performant styling library that is highly optimized with a babel-plugin. Most of the complexity of the NativeBase styling engine has been rewritten into dank. You can check it out here.
- gluestack-ui (alpha): A set of universal, headless & independent components optionally styled in the user’s project. You might find it similar to radix-ui.
- What is the meaning of “universal”? The term universal covers React & React Native both, including Next.js and Expo
- Should I use NativeBase v3? We invite early testers from March 6th onwards to gluestack-ui; please send a DM to @nativebase / @sanketsahu for access.
- I have a large project written in NativeBase v3. Should I migrate to gluestack-ui? Ideally, NativeBase v3 is in good shape, and you can keep using it. There are no significant issues. It just works. We will try to bump patches so that it keeps working with the latest versions of React & React Native. If you wish to upgrade, you can migrate to gluestack-ui.
- What is gluestack? And how is that related to NativeBase? gluestack is a full-stack framework for building modern web and mobile apps. It’s not live yet. We are working hard for the first release. It uses gluestack-ui as its component library. The creators of NativeBase are building the framework.
- What happened to NativeBase Startup+? Why was it discontinued? We have discontinued it in favor of the latest changes to gluestack-ui.
- Will we rewrite Startup+ with gluestack-ui? We may restart the work on migrating it once gluestack-ui moves to beta. We don’t have any visibility as of now.
- Should I trust using the future versions of NativeBase (or the successor of NativeBase)? There are strong reasons to trust. We have maintained it for seven years. We have more reasons to keep working on it because it has become an essential part of the gluestack framework.
- What’s your long-term support (LTS)? NativeBase and gluestack are backed by GeekyAnts! An OSS-loving, community-driven team of geeks! We are here to stay and support our open-source initiatives.