v4.0.0
JHipster React Native
Ignite JHipster is changing to JHipster React Native, using JHipster's Blueprint system.
Future npm releases will be done under generator-jhipster-react-native. You can try this branch out with npm install -g generator-jhipster-react-native. A demo blog post is coming soon.
Migration to Blueprint
It was always a goal to use JHipster's Blueprint system for the React Native generator. With the upcoming JHipster v7 release, the blueprint feature is much more robust and developer-friendly. Helped by the fact Ignite's latest major release removed the ability to use a custom boilerplate, push came to shove, and here we are. Migrating to a JHipster blueprint brings many improvements.
JHipster Commands
You can now use the same JHipster commands you would normally use, making sure to pass --blueprints react-native when generating the app. This includes the entity, jdl, and even heroku subgenerators (more on that later).
Full JDL Support
Both app and entity JDL imports work as the same as the main JHipster generator. Set blueprints [react-native] in your app JDL config to generate an application without needing to pass the --blueprints flag.
Automated Sample App Updates
Thanks to @avdev4j's great work in the Quarkus blueprint, we now have a Github Action to auto-update the sample app on release. This is deployed as a static site. It is also available on iOS/Android in the Expo Client (requires an Expo account).
Major Release Features
Expo
The generated app now uses Expo instead of bare-bones React Native (differences). Expo comes prepacked with the most commonly-used native libraries, such as camera, photos, maps, push notifications, and many more. Building and deploying to App Stores is easier too, just run expo build instead of using Xcode and Android Studio.
Expo also enables us to use TypeScript in our applications. Note that the generated app still uses JavaScript but TypeScript is a goal for the next major version.
Tip: If you need to use Native LIbraries not included in Expo, you can run expo eject which will generate the iOS and Android folders for you, similar to v3 of ignite-jhipster. You keep many of the benefits of Expo such as OTA Updates.
OTA Updates
You only need to resubmit your app to the app stores when you update the Expo SDK. All other updates can happen over-the-air by replacing the JavaScript bundle. To build the initial app for App Store submission, run expo build. To update the JavaScript code after that, run expo publish
Web Support (PWA)
Expo comes with React Native Web support, and JHipster React Native has been updated to fully support the web. You can even install the app as a PWA to have similar functionality to an App Store install. See Expo's PWA documentation for more information. PWAs are disabled by default, set offline: true in webpack.config.js to enable it.
Heroku Subgenerator for Web
The new web support enables us to add a Heroku subgenerator for deploying the React Native Web build. Try it out by running jhipster heroku from the root of your JHipster React Native app. Note you will need to configure your apiUrl in app/config/app-config.js to a backend deployment.
Custom Form Implementation
The previous Form library (tcomb-form-native) in Ignite JHipster was deprecated for some time. In order to keep forms simple while handling the variety of entity field types in JHipster, there is now a custom Form implementation, with a component for each field type. It's simple to add more custom field types if needed. An added bonus is that all JHipster validation types are now supported.
React Hooks
All React components were rewritten as function components with full support for hooks. No deprecated componentWill* or componentDid* methods are used in the generated code.
Commits:
- update typescript to v4.1.5 5429b57
- update mocha to v8.3.0 2845c4f
- add blueprint keywords for jhipster.tech marketplace 35aef53
- add retry to install-detox CI step b60ff08
- fix navigation to entity screen after create/edit a34710b
- CI polishing 3570f13
- add jhipster_version to sample app matrix (uses same script as other tests) 3a33998
- 4.0.0-beta.1 0dbd80b
- replace ignite-jhipster references 0e0e822
- add CORS info, update logos for quality b064518
- validate app name to ensure no spaces or special characters are found 526be77
- update deps, enable dependabot, separate out expo dependencies eb323fc
- move oktaClientId config into app-config, update docs 6c58799
- add jhipster version as matrix option, set scripts to fail on any bad exit code 94f7ddc
- randomize the jhipster family member used on home screen c479ea9
- improve expo command building a41a3f4
- test lowering engines to 12 for more autodeploy options (ie netlify, vercel) 0695a09
- add Okta CLI commands for creating native app 7b322f1
- 4.0.0-beta.0 2a05570
- add brotli support to heroku 7ee8096
- fix generated readme oauth2 docs [ci skip] 3838e10
- remove extra nodejs setup step 6bc29c1
- change indent size to 2, matches generated code 4257b1d
- add husky precommit hook d8c4649
- remove generation of .env file, allow empty commit on sample app 09c2f36
- add sample-app workflow to update sample app on release, polish ci and docs a3a1513
- improve heroku subgenerator f9e0b7e
- update sinon to 9.2.4 c4b7ea6
- docs tiny addition [ci skip] f00f033
- replace import-jdl with jdl (old command works, but is less hip) 026633e
- add notes to utils for fixes related to flakiness 3aee3c1
- update dependencies for generator and app, fix docs link 31785d2
- remove component usage, lint, more e2e test fixes 5156926
- install expo app before tests, add wait for picker util and chat tests 7790c67
- upgrade detox to v18 2cb45bd
- add more tests to app and e2e, fixes for those tests 87a2098
- cleanup test scripts, always use JDL instead of backend since no changes are needed 82b0088
- remove unused/small patch files 266fe21
- websocket fixes b0cfc21
- add support for with-entities flag for generating from backend 95ed389
- fix loading of authType for apps generated via backend path 2232608
- bump jhipster to beta.1 d2624da
- update deps, add workflow_dispatch triggers 6845787
- add notice about generating in a folder with parenthesis - couldn't find a quick fix bd101f1
- add e2e setup script to bundle before tests 9a6a3b0
- always upload app folder 63b439e
- simplify code, pass --no-minify and --no-dev instead of hacking it, add retry config for e2e 0e12f86
- use custom conf instead of prepackaged f5a00d0
- update websockets chat screen to hooks, fix styling 49b0a54
- e2e fixes 806f77c
- load jhipster app/server config rather than assigning it to context manually 7b1409b
- fix e2e artifacts, rename jhipster-react-native repo to generator-jhipster-react-native 001dddd
- add more e2e tests 9c50655
- lint and test fixes 2958133
- add heroku subgenerator 0683ed9
- add auth-info reducer and saga 292b553
- disable service workers like the default expo config and to prevent issues 225c9c9
- run app tests on ubuntu to prevent blocking e2e tests 35ec165
- many changes to fix github actions 6596c4a
- fix tests for oauth2, hide storybook in prod, prettier 58e1db7
- add accountReset action for instant logout (don't wait for account API response) 5eceaaa
- handle skipUserManagement, add name to package.json 4b2af2c
- update oauth docs and add some build/deploy instructions 70ce37c
- packaging and test fixes d6d06a4
- fix generated tests, prettier 054dea9
- documentation improvements and small fixes f52e4b7
- remove unused images from app bcd6d7e
- more cleanup and general fixes 33adf92
- UX improvements 29fac66
- remove 'entity' suffix from entity screens b159d4f
- remove unused files, combine configs into app-config 0d2fb45
- style polishing 7e0ad10
- handle many-to-many relationships, required relations, polish styles 1fe43dd
- handle custom table names - reducers should use entity name instead 9c753e3
- generate relationship fields on edit and detail screens c0e3526
- handle plural issues (jhipster does not singular-ize the entity name) 946cb41
- fix relationship mapping for edit screen f906a28
- don't reprompt for config 6c9c0b0
- add DTO backward compatibility for v6 0a9776c
- load userManagementEntities (via super.loading method), ignore .yo-repository, remove extra comma 59449f3
- fix rebase issues, remove ignite-jhipster related files 44d99f1
- bump actions/setup-node version 4854e3c
- remove double .ejs.ejs extensions f28727d
- remove usage of fieldsNoId 258c547
- lint and prettier 7e5c1ff
- compose the blueprint rather than main generators, fixes importing JDL 9c5daec
- fixes date formatting, revert scrollTo, remove SafeAreaView, update detox conf c34f130
- fix jerky scrolling by patching keyboard-aware-scroll-view, remove blank text elements, styling 338a231
- handle contentType in e2e detox tests, remove excess padding/margins, SafeAreaView 80f11f1
- set keyboardDismissMode, remove ModalScreen usage, catch SplashScreen err 9649262
- add support for validation, and date/boolean/enum to e2e tests 8d0743f
- basic validation fixes fc0f559
- fix issues where prettier prevents patch detection, resulting in double inserts 1488c55
- simplify setupVariables to use jhipster config if possible 95f0c31
- remove custom _setUpvariables in favor of jhipster autoconfiguration c82f837
- fix detox script permissions 1e63e9d
- add validation support to entity update form 70f5406
- add non-interactive flag to expo fd7c44e
- remove background image from launch screen, use color instead 41fe6ad
- functional entity tests (not including relationships or validation) 155ae73
- replace edit screen with detail on save 6710718
- get entity e2e tests mostly working a6de585
- get account detox tests working aaeb426
- some e2e fixes 32d1b25
- work towards ios detox e2e tests with expo 71785b0
- remove UAA and Session auth support f1777d1
- add back react-native-screens, it's required by react-navigation ea29009
- use library-provided methods oauth code, codeVerifier, and state 59bb5d2
- many changes 0c8d4ba
- remove fastlane references, remove native patch files a9c7c11
- add account display on home screen d390ad9
- implement expo-auth-session to login with oauth2 40147cb
- form fixes, modal screen styling ff8dcfa
- ios fixes - remove failing imports, fix regex 29849a3
- fix default form value for dates 22c6ffc
- fix back navigation for deep-linked or direct links to pages e3d8d27
- add back buttons for entity screens when direct-linked in 9611ecf
- fix react-navigation linking configuration e1d5836
- generate the new form components, use function components for hooks 8302f5a
- improve form support, add more input types (date, datetime, and list) dd67171
- migrate settings-screen e1d772a
- migrate change-password-screen and forgot-password-screen 9e6be44
- integrate formik forms for login/register e68685d
- prettierignore more files, rename app.js => App.js for expo 7c90068
- replace Alert.alert usages, rewrite logins creen, handle drawer display for authed accounts d064a1a
- add modal screen 1c7472e
- expo app generation pt 1 99cd0d5
- fix links and package template fa40196
- rename all references to ignite-jhipster, add note about it de071e4
- add package to generated package.json for entity generator version matching d650f26
- add docs 313b2f9
- add cli "rnhipster" command to enable running pre-v7 dcebf0d
- 4.0.0-alpha.2 67841ef
- remove keywords to prevent showing up in marketplace for now 9cae49b
- add note to readme about v7 f6ad879
- run lint-staged on pre-commit bda9f87
- unify lib folders at root 4f889f8
- run on self-hosted 736e892
- polish package.json, fix react-native init logging b20ac62
- enable workflow on branches ce04605
- use pod-install npm package instead of handling pod install actions manually 43e48ad
- switch repo name to jhipster-react-native, use generator prefix for npm 7a981c7
- more e2e fixes 7f742b8
- lots of changes to fix tests 1ff086e
- polish readme, pin package versions 0be0349
- fix templating problem, and broken ls command 2fa7719
- pass defaults flag to import-jdl command 7a64a79
- fix insight flag again... e8d8d42
- fix flag on jhipster command ae6b8c9
- use master generator-jhipster 86ae856
- use master jhipster installed by package 9722302
- update ignite branding to jhipster 38580d2
- use npm i instead of npm ci 820117d
- disable dependabot temporarily 0211e10
- update deps 6a9b72e
- adapt CI tests ced3254
- copy jdl and integration scripts over ebc8baa
- add test for existing entity JSON file 68b38b0
- add initital entity test, using prompt 7b1f90e
- fix tests, pin generator-jhipster to master instead of v6 a196689
- add entity expected files, remove comments 10fcc50
- add test for prompts and existing .yo-rc.json 31a0e56
- add initial test with expected files 5b2e6db
- lint, extract logic to lib folder 31ab299
- lint and fix package.json merging by using this.fs instead of fs-extra 83f2b8b
- merge package.json template with react-native's package.json, replace package.json version placeholders dc480f4
- compose entities generator to generate entities when importing jdl db0f18f
- fix removing .yo-resolve, fix templates 3f02db0
- rm travis 6b59169
- get jdl app generation working, move files to files from patching 75b0a33
- get import-jdl generator working 4fe56bd
- get entity generation working fad7a75
- fix lint rule decccbb
- get app generation working c33b570
- getting some files generated 2530f1f
- copy boilerplate over 1f5403a
- get logo printing, revert to using only app generator 7c32f68
- init e89d6bf
- rename/move templates to new directory templates 5f63a79