Almost two years ago I gave Ignite by Infinite Red a try and I was instantly hooked. It was a super convenient and fast way to start a new project with React Native that solves all the hard setup problems for you. Today I would like to explore with you what happened with Ignite besides a major release.
How was version 1?
If you are interested in a detailed summary, please see my old blog post. Here is my TL;DR summary:
- solves the most common problems (data management, navigation, localization, development tools) in an opinionated way
- includes demo pages for the libraries included to help learn about best practices
- code generators allow you to quickly scale your app without the need to write a lot of boilerplate code
- before you start with your app you need to remove some boilerplate you don’t need
Learning from your mistakes
Ignite 2 has a lot less friction on this part. It asks you several questions at the beginning of the generation process and generates just the parts you need. Being more fine-grained in this area was for me a game changer. Before I would consider the size of my application and decide if I should go with
create-react-native-app or if I should choose ignite. This is gone now as I can control how big in terms of added libraries my application is going to be.
The examples that were previously built into the application are now on a separate development screen.
While working on the weaknesses Ignite still keeps its strengths: It is still opinionated and subscribes to the best technology in the ecosystem, which is a plus for me. If I want to make every choice deliberately I can still start from scratch. As there are multiple boilerplates you can choose from you gain a bit of variety.
This is the classic ignite you know since version 1 enhanced with a few more questions to have a more fine-grained documentation. So out of the box, you may get:
- redux + redux-saga + reduxsauce
- jest + enzyme
Andross is battle-tested and seems like a very solid solution, without too many experiments. It seems like a good choice if you want to just start your development efforts without learning too many fancy new things.
The newest creation comes with full Typescript support and no configuration options. It has less functionality overall, but the most important and frequently used parts (navigation, state handling, testing & linting) are present. It includes
Bowser is still in the alpha stage, but having a way to simply start with typescript is super awesome.
Plug and Play
A cool new functionality in ignite is that it is now easily extensible. It allows you to create your own boilerplates and plugins, allowing cool community projects to spread. A boilerplate similar to Andross enhanced with Typescript by running
ignite new MyApp --b ignite-typescript-boilerplate. The project ignite-typescript-boilerplate was created by Matt Kane and is a nice way to get a classic project started with typescript.
While boilerplates do the heavy lifting, sometimes you just need a small addition, maybe some more elements? Ignite has a quick way to do this. Just run
ignite add elements and within the blink of an eye, you get react-native-elements included in your app. I think this is a nice way to add libraries you only need for some projects without doing the manual wiring work.
Going into detail on how to write a boilerplate or plugin would be too detailed for this post, if you are interested please leave a comment and let me know 👍
What’s missing and how can I help?
From my point of view Ignite 2 is pretty much complete. But there is always a way to improve. In my humble opinion, End-to-End testing is important and should be included in every production-grade application. I would love to see appium and / or detox in the default ignite boilerplates or in the form of a plugin. As Justin Lane pointed out there is already a plugin for using detox with ignite: ignite-detox.
If you want to help with something: There are some deprecation warnings in newly generated applications, go hunt them down 💪
Do you want to stay up-to-date? Make sure to follow the official twitter account of ignite!