Ignite v11 (Expo SDK 53)
Description
This PR is Ignite v11.
Ignite v11 will have:
- [x] #2961 react native new architecture on. No option to turn it off. With the react-native core team's announcement that they will no longer be merging PRs relating to the legacy architecture, there's no reason to hold onto it anymore. https://github.com/reactwg/react-native-new-architecture/discussions/290
- [x] #2960 mobx-state-tree completey removed. Bring your own state management. basic react context examples for the demo app to work.
- [x] #2962 Remove barrel files from the boilerplate
- [x] #2958 Better import order and consitent typescript alias usage. Add
import/ordereslint rule to keep things consistent. - [ ] updated and refactored theming system
- [ ] #2937 android edge-to-edge support - turned on
- [ ] #2905 Screen generators should detect if in an expo-router app and put the screens in the right place
- [x] #2963 Drop support for node 18 (recommended by expo 53 docs)
Closes #2935
Screenshots
| iOS | Android | Web |
|---|---|---|
Moved to ready for review.
I noticed that the Animated component we're using in the drawer to display the back arrow is animating in and then disappearing on the iOS ... anyone have ideas on what might be causing this?
What's SUUUPER weird is that the recording feature from the ios simulator shows that it's always there, but if i screencapture, there's clearly an issue:
| Sim Recorder | Screen Recorder |
|---|---|
@markrickert that is a pre-existing issue, https://github.com/infinitered/ignite/issues/2900 - I did some digging on it but wasn't able to solve it. I'll see if I can find my notes on it. Ultimately, I know @lindboe was doing some exploration on replacing the drawer since it had accessibility problems plus some of these quirks
Yeah we should probably prefer getting rid of the drawer over fixing it. Happy to go over what we planned for that if that's something y'all would like to do!
Rebased and fixed conflicts
Another rebase and i think this one is ready to roll. I've tested it pretty thoroughly and ran maestro tests in both new arch and non-new arch ignited apps and they are all passing.
Gonna go ahead and merge this one!
@markrickert sounds good!
Added a few more commits. @frankcalise could you re-review please?
Additional changes since you last looked:
- Followed the expo-fyi docs for moving the app.json
expo:{}object to the root level. https://github.com/expo/fyi/blob/main/root-expo-object.md - Fixed the scripts to reference the root of the app.json file instead of the expo object and added the ignite version indicator to the
"extra"field for arbitrary values like this. - Fix the expo-router option that had a hard-coded
expo-localizationversion. There was an update to this package so i thought it more future-proof to parse the json string and get the actual version we're already using. - I realized that some of the packages needed to be updated to their latest versions, so i spend a lot of time igniting apps and running
yarn upgrade-interactive --latestandnpx expo install --fixuntil i was able to get all the dependencies updated and working in the app. - During the process of 4 (above) i saw on the expo jest docs that we should remove the
react-test-rendererlibrary so i did. Tests all still pass in the main app and in an ignited app. - Fixed running the boilerplate "HelloWorld" app from the ignite source code by putting the new architecture compatible version of mmkv into the package.json and inverting the logic to replace with the old arch compatible version if the user is igniting an old arch project.
Should we really even have the old arch option at all? Given the deprecation.
Should we really even have the old arch option at all? Given the deprecation.
@jamonholmgren true we could simplify the cli maintenance and remove it
Should we really even have the old arch option at all? Given the deprecation.
@jamonholmgren true we could simplify the cli maintenance and remove it
Yeah, and they can use the previous version of Ignite to get the old arch.
@jamonholmgren I'm going to merge this and then open a new PR to strip out the legacy arch option. I'll make a note in the readme and the docs about the command to use if you HAVE to have the legacy arch in an ignited app.
When we merge THAT one, i think we should bump the version with BREAKING CHANGE
Change of plans (sorry). There's a few more things we want to add so we make a bunch of breaking changes all at once.
We're going to keep this PR open and add to it as Ignite V11! 🎉
See main PR comment for progress of v11 implementation.
yay almost there, looking forward to ignite 11 ending up to becoming the best boilerplate out there
is refactororing of themes only thing pending https://github.com/infinitered/ignite/pull/2938#issuecomment-2920800855 or are react 19 ref updates also to be included https://github.com/infinitered/ignite/commit/484a8030af4a5f1ec54f4eafc81690eb1b5122f7 for 11 release
@no-1ne I've updated the main comment in this PR for better visibility (adding PR links and stuff) so that you can better track progress instead of a comment half way down this page.
I'm hoping that everything on that list will be done and tested in the next few weeks. React 19 ref passing as props might come shortly after the release of v11. It's not as high on the priority list as the theming updates.
Thank you for following along with us!
OK, i think this one is ready to go.
Woohoo! @justinhuskey will be dropping the release announcement blog post later today.
:tada: This PR is included in version 11.0.0 :tada:
The release is available on:
Your semantic-release bot :package::rocket: