├── with-aws-storage-upload ├── aws-exports.js ├── .gitignore ├── amplify │ ├── backend │ │ ├── storage │ │ │ └── expoupload │ │ │ │ └── storage-params.json │ │ └── backend-config.json │ └── .config │ │ └── project-config.json ├── babel.config.js ├── package.json └── README.md ├── with-socket-io ├── backend │ ├── index.html │ ├── package.json │ └── index.js ├── babel.config.js └── package.json ├── with-react-router ├── web │ └── _redirects ├── react-router.js ├── react-router.native.js ├── babel.config.js ├── package.json └── App.js ├── with-dev-client ├── android │ ├── app │ │ ├── src │ │ │ ├── main │ │ │ │ └── res │ │ │ │ │ ├── values-night │ │ │ │ │ └── colors.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── drawable-hdpi │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-mdpi │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable │ │ │ │ │ └── splashscreen.xml │ │ │ │ │ ├── drawable-xxxhdpi │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── values │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ │ └── mipmap-anydpi-v26 │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ └── release │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── helloworld │ │ │ │ └── ReactNativeFlipper.java │ │ ├── debug.keystore │ │ └── proguard-rules.pro │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── .gitignore │ └── settings.gradle ├── ios │ ├── Podfile.properties.json │ ├── HelloWorld │ │ ├── Images.xcassets │ │ │ ├── Contents.json │ │ │ ├── SplashScreen.imageset │ │ │ │ ├── image.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── ItunesArtwork@2x.png │ │ │ │ ├── App-Icon-20x20@1x.png │ │ │ │ ├── App-Icon-20x20@2x.png │ │ │ │ ├── App-Icon-20x20@3x.png │ │ │ │ ├── App-Icon-29x29@1x.png │ │ │ │ ├── App-Icon-29x29@2x.png │ │ │ │ ├── App-Icon-29x29@3x.png │ │ │ │ ├── App-Icon-40x40@1x.png │ │ │ │ ├── App-Icon-40x40@2x.png │ │ │ │ ├── App-Icon-40x40@3x.png │ │ │ │ ├── App-Icon-60x60@2x.png │ │ │ │ ├── App-Icon-60x60@3x.png │ │ │ │ ├── App-Icon-76x76@1x.png │ │ │ │ ├── App-Icon-76x76@2x.png │ │ │ │ └── App-Icon-83.5x83.5@2x.png │ │ │ └── SplashScreenBackground.imageset │ │ │ │ ├── image.png │ │ │ │ └── Contents.json │ │ ├── noop-file.swift │ │ ├── AppDelegate.h │ │ ├── main.m │ │ ├── HelloWorld.entitlements │ │ └── Supporting │ │ │ └── Expo.plist │ ├── HelloWorld.xcworkspace │ │ └── contents.xcworkspacedata │ ├── .gitignore │ └── .xcode.env ├── assets │ ├── icon.png │ ├── favicon.png │ ├── splash.png │ └── adaptive-icon.png ├── babel.config.js ├── metro.config.js ├── react-native.config.js ├── index.js ├── eas.json ├── package.json ├── app.json ├── .gitignore └── App.js ├── with-router-menus ├── global.d.ts ├── src │ ├── components │ │ ├── dropdown-menu.tsx │ │ ├── header.tsx │ │ ├── icons.tsx │ │ └── root-layout.tsx │ ├── lib │ │ └── utils.ts │ └── app │ │ ├── modal.tsx │ │ ├── _layout.tsx │ │ └── index.tsx ├── app.json ├── babel.config.js ├── tsconfig.json └── metro.config.js ├── with-router-tailwind ├── global.d.ts ├── src │ ├── global.css │ └── app │ │ └── _layout.tsx ├── babel.config.js ├── tsconfig.json ├── metro.config.js ├── README.md ├── tailwind.config.js ├── app.json └── package.json ├── with-nextjs ├── App.js ├── babel.config.js ├── pages │ ├── _app.js │ └── index.js ├── package.json ├── next.config.js ├── .gitignore └── README.md ├── with-three ├── icon.jpg ├── babel.config.js ├── package.json └── README.md ├── with-tv ├── tsconfig.json ├── assets │ └── images │ │ ├── icon-1280x768.png │ │ ├── icon-1920x720.png │ │ ├── icon-2320x720.png │ │ ├── icon-400x240.png │ │ ├── icon-3840x1440.png │ │ └── icon-4640x1440.png ├── babel.config.js ├── App.tsx ├── package.json ├── app.json └── metro.config.js ├── .gh-assets └── banner.png ├── with-openai ├── .env ├── tsconfig.json ├── app.json └── package.json ├── with-typescript ├── tsconfig.json ├── babel.config.js ├── package.json └── App.tsx ├── with-firebase-saml-login ├── app.json ├── babel.config.js ├── metro.config.js └── package.json ├── with-postpublish-hooks ├── hooks │ └── echo.js ├── babel.config.js ├── package.json ├── App.js ├── app.config.js └── README.md ├── with-gatsby ├── assets │ └── icon.png ├── babel.config.js ├── tsconfig.json ├── App.tsx └── src │ ├── pages │ ├── 404.tsx │ └── index.tsx │ └── components │ └── Header.tsx ├── with-victory-native ├── Roboto.ttf ├── babel.config.js ├── app.config.js ├── webpack.config.js ├── package.json ├── README.md └── App.js ├── navigation ├── assets │ └── images │ │ ├── icon.png │ │ ├── favicon.png │ │ ├── splash.png │ │ └── adaptive-icon.png ├── babel.config.js ├── constants │ └── Colors.js ├── components │ ├── StyledText.js │ └── Themed.js ├── App.js ├── navigation │ └── LinkingConfiguration.js ├── screens │ ├── TabOneScreen.js │ ├── TabTwoScreen.js │ └── NotFoundScreen.js ├── app.json ├── package.json └── hooks │ └── useLoadedAssets.js ├── with-webrtc ├── app.json ├── babel.config.js ├── metro.config.js ├── eas.json ├── index.js ├── package.json ├── App.js └── README.md ├── with-storybook ├── stories │ ├── assets │ │ ├── docs.png │ │ ├── share.png │ │ ├── assets.png │ │ ├── context.png │ │ ├── styling.png │ │ ├── testing.png │ │ ├── theming.png │ │ ├── figma-plugin.png │ │ ├── accessibility.png │ │ ├── addon-library.png │ │ └── youtube.svg │ ├── Gradient.jsx │ ├── Gradient.stories.js │ └── Button.stories.js ├── babel.config.js ├── .storybook │ └── preview.js ├── .gitignore ├── App.js └── package.json ├── blank ├── babel.config.js ├── app.json ├── package.json └── App.js ├── with-apollo ├── babel.config.js ├── package.json ├── apollo.js └── README.md ├── with-auth0 ├── babel.config.js └── package.json ├── with-camera ├── babel.config.js └── package.json ├── with-custom-font ├── assets │ └── fonts │ │ └── Inter-Black.otf ├── babel.config.js ├── package.json └── App.js ├── with-formik ├── babel.config.js ├── package.json └── README.md ├── with-icons ├── babel.config.js ├── package.json └── App.js ├── with-maps ├── babel.config.js ├── package.json └── App.js ├── with-moti ├── babel.config.js └── package.json ├── with-pdf ├── babel.config.js ├── app.json ├── metro.config.js ├── eas.json ├── index.js ├── package.json ├── App.js └── README.md ├── with-preact ├── babel.config.js ├── package.json ├── App.js └── webpack.config.js ├── with-realm ├── babel.config.js ├── metro.config.js ├── app │ ├── styles │ │ └── colors.ts │ ├── models │ │ └── Task.ts │ └── components │ │ └── TaskList.tsx ├── eas.json ├── index.js └── package.json ├── with-sqlite ├── babel.config.js ├── package.json └── README.md ├── with-svg ├── babel.config.js ├── assets │ └── expo.svg ├── App.js ├── package.json ├── metro.config.js ├── webpack.config.js └── README.md ├── with-descope ├── babel.config.js └── package.json ├── with-native-base ├── babel.config.js ├── App.js ├── package.json └── README.md ├── with-new-arch ├── babel.config.js ├── README.md ├── package.json └── app.json ├── with-processing ├── babel.config.js ├── package.json └── App.js ├── with-reanimated ├── babel.config.js ├── package.json ├── README.md └── App.js ├── with-tailwindcss ├── babel.config.js ├── package.json ├── App.js └── README.md ├── with-tfjs-camera ├── babel.config.js ├── package.json ├── src │ ├── LoadingView.js │ ├── PredictionList.js │ ├── useTensorFlow.js │ └── CustomTensorCamera.js ├── App.js └── README.md ├── with-workbox ├── babel.config.js ├── src │ └── serviceWorkerRegistration.native.js ├── App.js └── package.json ├── with-facebook-auth ├── babel.config.js └── package.json ├── with-google-vision ├── babel.config.js ├── package.json └── README.md ├── with-splash-screen ├── babel.config.js ├── app.config.js └── package.json ├── with-tab-navigation ├── babel.config.js ├── package.json └── README.md ├── with-twitter-auth ├── babel.config.js ├── backend │ └── package.json └── package.json ├── with-video-background ├── babel.config.js ├── README.md └── package.json ├── with-drawer-navigation ├── babel.config.js ├── package.json └── README.md ├── with-formdata-image-upload ├── babel.config.js ├── backend │ ├── .env.example │ ├── package.json │ ├── README.md │ └── index.js ├── package.json └── README.md ├── with-react-native-elements ├── babel.config.js ├── package.json └── README.md ├── with-react-three-fiber ├── babel.config.js ├── package.json └── README.md ├── with-styled-components ├── babel.config.js ├── package.json ├── App.js └── README.md ├── with-webbrowser-redirect ├── babel.config.js ├── package.json ├── app.config.js └── README.md ├── with-yarn-workspaces ├── apps │ └── mobile │ │ ├── babel.config.js │ │ ├── .gitignore │ │ ├── webpack.config.js │ │ ├── index.js │ │ ├── App.js │ │ ├── package.json │ │ └── metro.config.js ├── packages │ └── expo-custom │ │ ├── src │ │ └── index.tsx │ │ ├── tsconfig.json │ │ └── package.json ├── package.json └── .gitignore ├── with-firebase-storage-upload ├── babel.config.js ├── metro.config.js ├── package.json └── README.md ├── with-nativewind ├── babel.config.js ├── tailwind.config.js ├── App.js ├── package.json └── README.md ├── with-router ├── babel.config.js ├── app.json ├── README.md └── package.json ├── with-html ├── tailwind.config.js ├── package.json ├── babel.config.js ├── README.md └── App.js ├── with-zustand ├── package.json ├── store.js ├── README.md └── App.js ├── with-magic ├── package.json └── README.md ├── .gitignore └── .github └── ISSUE_TEMPLATE ├── bug_report.md └── new-example-idea.yml /with-aws-storage-upload/aws-exports.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /with-aws-storage-upload/.gitignore: -------------------------------------------------------------------------------- 1 | aws-exports -------------------------------------------------------------------------------- /with-socket-io/backend/index.html: -------------------------------------------------------------------------------- 1 | Open it in Expo! 2 | -------------------------------------------------------------------------------- /with-react-router/web/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 2 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /with-router-menus/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /with-aws-storage-upload/amplify/backend/storage/expoupload/storage-params.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /with-router-tailwind/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /with-dev-client/ios/Podfile.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo.jsEngine": "hermes" 3 | } 4 | -------------------------------------------------------------------------------- /with-nextjs/App.js: -------------------------------------------------------------------------------- 1 | // Use next.js page for the mobile app 2 | export { default } from './pages' -------------------------------------------------------------------------------- /with-router-tailwind/src/global.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; -------------------------------------------------------------------------------- /with-three/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-three/icon.jpg -------------------------------------------------------------------------------- /with-tv/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": {}, 3 | "extends": "expo/tsconfig.base" 4 | } 5 | -------------------------------------------------------------------------------- /.gh-assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/.gh-assets/banner.png -------------------------------------------------------------------------------- /with-openai/.env: -------------------------------------------------------------------------------- 1 | # You can get your key from https://platform.openai.com/api-keys 2 | OPENAI_API_KEY=YOUR_KEY -------------------------------------------------------------------------------- /with-openai/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": {}, 3 | "extends": "expo/tsconfig.base" 4 | } 5 | -------------------------------------------------------------------------------- /with-typescript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": {}, 3 | "extends": "expo/tsconfig.base" 4 | } 5 | -------------------------------------------------------------------------------- /with-firebase-saml-login/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "scheme": "samlfirebaseexample" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /with-postpublish-hooks/hooks/echo.js: -------------------------------------------------------------------------------- 1 | module.exports = ({ config, log }) => { 2 | log(config.message); 3 | } 4 | -------------------------------------------------------------------------------- /with-gatsby/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-gatsby/assets/icon.png -------------------------------------------------------------------------------- /with-dev-client/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/assets/icon.png -------------------------------------------------------------------------------- /with-victory-native/Roboto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-victory-native/Roboto.ttf -------------------------------------------------------------------------------- /navigation/assets/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/navigation/assets/images/icon.png -------------------------------------------------------------------------------- /with-dev-client/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/assets/favicon.png -------------------------------------------------------------------------------- /with-dev-client/assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/assets/splash.png -------------------------------------------------------------------------------- /navigation/assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/navigation/assets/images/favicon.png -------------------------------------------------------------------------------- /navigation/assets/images/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/navigation/assets/images/splash.png -------------------------------------------------------------------------------- /with-webrtc/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "plugins": [ 4 | "@config-plugins/react-native-webrtc" 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /with-storybook/stories/assets/docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/docs.png -------------------------------------------------------------------------------- /with-storybook/stories/assets/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/share.png -------------------------------------------------------------------------------- /with-tv/assets/images/icon-1280x768.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-tv/assets/images/icon-1280x768.png -------------------------------------------------------------------------------- /with-tv/assets/images/icon-1920x720.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-tv/assets/images/icon-1920x720.png -------------------------------------------------------------------------------- /with-tv/assets/images/icon-2320x720.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-tv/assets/images/icon-2320x720.png -------------------------------------------------------------------------------- /with-tv/assets/images/icon-400x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-tv/assets/images/icon-400x240.png -------------------------------------------------------------------------------- /with-dev-client/assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/assets/adaptive-icon.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "expo" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /with-storybook/stories/assets/assets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/assets.png -------------------------------------------------------------------------------- /with-storybook/stories/assets/context.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/context.png -------------------------------------------------------------------------------- /with-storybook/stories/assets/styling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/styling.png -------------------------------------------------------------------------------- /with-storybook/stories/assets/testing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/testing.png -------------------------------------------------------------------------------- /with-storybook/stories/assets/theming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/theming.png -------------------------------------------------------------------------------- /with-tv/assets/images/icon-3840x1440.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-tv/assets/images/icon-3840x1440.png -------------------------------------------------------------------------------- /with-tv/assets/images/icon-4640x1440.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-tv/assets/images/icon-4640x1440.png -------------------------------------------------------------------------------- /blank/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /navigation/assets/images/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/navigation/assets/images/adaptive-icon.png -------------------------------------------------------------------------------- /with-dev-client/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/debug.keystore -------------------------------------------------------------------------------- /with-apollo/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-auth0/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-camera/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-custom-font/assets/fonts/Inter-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-custom-font/assets/fonts/Inter-Black.otf -------------------------------------------------------------------------------- /with-formik/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-gatsby/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-icons/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-maps/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-moti/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-pdf/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-preact/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-react-router/react-router.js: -------------------------------------------------------------------------------- 1 | export { 2 | BrowserRouter as Router, 3 | Switch, 4 | Route, 5 | Link 6 | } from 'react-router-dom'; 7 | -------------------------------------------------------------------------------- /with-realm/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-sqlite/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-storybook/stories/assets/figma-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/figma-plugin.png -------------------------------------------------------------------------------- /with-svg/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ["babel-preset-expo"], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-three/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-tv/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-webrtc/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-custom-font/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-descope/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-dev-client/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-native-base/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-new-arch/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-processing/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-react-router/react-router.native.js: -------------------------------------------------------------------------------- 1 | export { 2 | NativeRouter as Router, 3 | Switch, 4 | Route, 5 | Link 6 | } from 'react-router-native'; 7 | -------------------------------------------------------------------------------- /with-reanimated/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'] 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-socket-io/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-storybook/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-storybook/stories/assets/accessibility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/accessibility.png -------------------------------------------------------------------------------- /with-storybook/stories/assets/addon-library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-storybook/stories/assets/addon-library.png -------------------------------------------------------------------------------- /with-tailwindcss/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-tfjs-camera/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-typescript/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-workbox/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-facebook-auth/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ["babel-preset-expo"], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-google-vision/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-react-router/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-splash-screen/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-tab-navigation/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-twitter-auth/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-victory-native/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-video-background/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-aws-storage-upload/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-drawer-navigation/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-firebase-saml-login/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-formdata-image-upload/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-postpublish-hooks/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-react-native-elements/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-react-three-fiber/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-styled-components/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ["babel-preset-expo"], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-webbrowser-redirect/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/noop-file.swift: -------------------------------------------------------------------------------- 1 | // 2 | // @generated 3 | // A blank Swift file must be created for native modules with Swift files to work correctly. 4 | // 5 | -------------------------------------------------------------------------------- /with-formdata-image-upload/backend/.env.example: -------------------------------------------------------------------------------- 1 | AWS_ACCESS_KEY_ID= 2 | AWS_SECRET_ACCESS_KEY= 3 | AWS_BUCKET= 4 | -------------------------------------------------------------------------------- /with-router-menus/src/components/dropdown-menu.tsx: -------------------------------------------------------------------------------- 1 | // Native components cannot be styled and instead use the system's native styles. 2 | export * from "zeego/dropdown-menu"; 3 | -------------------------------------------------------------------------------- /with-dev-client/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /with-nextjs/babel.config.js: -------------------------------------------------------------------------------- 1 | // babel.config.js 2 | module.exports = function (api) { 3 | api.cache(true); 4 | return { 5 | presets: ["babel-preset-expo"], 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /with-pdf/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "plugins": [ 4 | "@config-plugins/react-native-blob-util", 5 | "@config-plugins/react-native-pdf" 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /with-router-tailwind/src/app/_layout.tsx: -------------------------------------------------------------------------------- 1 | import "../global.css"; 2 | import { Slot } from "expo-router"; 3 | 4 | export default function Layout() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /with-yarn-workspaces/apps/mobile/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-firebase-storage-upload/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @interface AppDelegate : EXAppDelegateWrapper 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /with-nativewind/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | plugins: ['nativewind/babel'], 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /with-router/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ["babel-preset-expo"], 5 | plugins: ["expo-router/babel"], 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /with-pdf/metro.config.js: -------------------------------------------------------------------------------- 1 | // Learn more https://docs.expo.dev/guides/customizing-metro 2 | const { getDefaultConfig } = require('expo/metro-config'); 3 | 4 | module.exports = getDefaultConfig(__dirname); 5 | -------------------------------------------------------------------------------- /with-router/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "scheme": "acme", 4 | "web": { 5 | "bundler": "metro" 6 | }, 7 | "plugins": [ 8 | "expo-router" 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /with-dev-client/metro.config.js: -------------------------------------------------------------------------------- 1 | // Learn more https://docs.expo.io/guides/customizing-metro 2 | const { getDefaultConfig } = require('expo/metro-config'); 3 | 4 | module.exports = getDefaultConfig(__dirname); 5 | -------------------------------------------------------------------------------- /with-dev-client/react-native.config.js: -------------------------------------------------------------------------------- 1 | // File created by expo-dev-client/app.plugin.js 2 | 3 | module.exports = { 4 | dependencies: { 5 | ...require('expo-dev-client/dependencies'), 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /with-realm/metro.config.js: -------------------------------------------------------------------------------- 1 | // Learn more https://docs.expo.dev/guides/customizing-metro 2 | const { getDefaultConfig } = require('expo/metro-config'); 3 | 4 | module.exports = getDefaultConfig(__dirname); 5 | -------------------------------------------------------------------------------- /with-webrtc/metro.config.js: -------------------------------------------------------------------------------- 1 | // Learn more https://docs.expo.dev/guides/customizing-metro 2 | const { getDefaultConfig } = require('expo/metro-config'); 3 | 4 | module.exports = getDefaultConfig(__dirname); 5 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /with-twitter-auth/backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "node index.js" 4 | }, 5 | "dependencies": { 6 | "express": "^4.17.1", 7 | "twitter-lite": "^0.9.4" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/drawable-hdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/drawable-hdpi/splashscreen_image.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/drawable-mdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/drawable-mdpi/splashscreen_image.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/drawable/splashscreen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/image.png -------------------------------------------------------------------------------- /with-workbox/src/serviceWorkerRegistration.native.js: -------------------------------------------------------------------------------- 1 | // No-op on native. For offline support in native apps, check out expo-updates. 2 | 3 | export function register(config) {} 4 | 5 | export function unregister() {} 6 | -------------------------------------------------------------------------------- /blank/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "blank", 4 | "slug": "blank", 5 | "version": "1.0.0", 6 | "platforms": [ 7 | "ios", 8 | "android", 9 | "web" 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /with-realm/app/styles/colors.ts: -------------------------------------------------------------------------------- 1 | const colors = { 2 | darkBlue: '#2A3642', 3 | purple: '#6E60F9', 4 | gray: '#B5B5B5', 5 | white: '#FFFFFF', 6 | black: '#000000', 7 | }; 8 | 9 | export default colors; 10 | -------------------------------------------------------------------------------- /with-router-menus/src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | -------------------------------------------------------------------------------- /with-yarn-workspaces/apps/mobile/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/**/* 2 | .expo/* 3 | npm-debug.* 4 | *.jks 5 | *.p8 6 | *.p12 7 | *.key 8 | *.mobileprovision 9 | *.orig.* 10 | web-build/ 11 | 12 | # macOS 13 | .DS_Store 14 | -------------------------------------------------------------------------------- /with-dev-client/android/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Android/IntelliJ 6 | # 7 | build/ 8 | .idea 9 | .gradle 10 | local.properties 11 | *.iml 12 | *.hprof 13 | 14 | # Bundle artifacts 15 | *.jsbundle 16 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/image.png -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zeus-Aphrodite/reactnativeApp/HEAD/with-dev-client/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png -------------------------------------------------------------------------------- /with-html/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./App.{js,jsx,ts,tsx}', './screens/**/*.{js,jsx,ts,tsx}'], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | }; 9 | -------------------------------------------------------------------------------- /with-victory-native/app.config.js: -------------------------------------------------------------------------------- 1 | export default ({ config }) => ({ 2 | ...config, 3 | splash: { 4 | image: 5 | "https://github.com/expo/expo/blob/master/templates/expo-template-blank/assets/splash.png?raw=true", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /with-yarn-workspaces/packages/expo-custom/src/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | // @ts-ignore 3 | import { Text } from 'react-native'; 4 | 5 | export function MyView() { 6 | return Hello from the first package; 7 | } 8 | -------------------------------------------------------------------------------- /with-nativewind/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./App.{js,jsx,ts,tsx}', './screens/**/*.{js,jsx,ts,tsx}'], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | }; 9 | -------------------------------------------------------------------------------- /with-firebase-saml-login/metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig } = require('@expo/metro-config'); 2 | 3 | const defaultConfig = getDefaultConfig(__dirname); 4 | 5 | defaultConfig.resolver.sourceExts.push('cjs'); 6 | 7 | module.exports = defaultConfig; -------------------------------------------------------------------------------- /with-firebase-storage-upload/metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig } = require('@expo/metro-config'); 2 | 3 | const defaultConfig = getDefaultConfig(__dirname); 4 | 5 | defaultConfig.resolver.sourceExts.push('cjs'); 6 | 7 | module.exports = defaultConfig; -------------------------------------------------------------------------------- /with-router-menus/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "scheme": "acme", 4 | "userInterfaceStyle": "automatic", 5 | "orientation": "default", 6 | "web": { 7 | "output": "static", 8 | "bundler": "metro" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /with-router-menus/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: [ 5 | ["babel-preset-expo", { jsxImportSource: "nativewind" }], 6 | "nativewind/babel", 7 | ], 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /with-router-menus/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "@/*": ["./src/*"] 6 | } 7 | }, 8 | "extends": "expo/tsconfig.base", 9 | "include": ["global.d.ts", "**/*.ts", "**/*.tsx"] 10 | } 11 | -------------------------------------------------------------------------------- /with-router-tailwind/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: [ 5 | ["babel-preset-expo", { jsxImportSource: "nativewind" }], 6 | "nativewind/babel", 7 | ], 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /with-router-tailwind/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "@/*": ["./src/*"] 6 | } 7 | }, 8 | "extends": "expo/tsconfig.base", 9 | "include": ["global.d.ts", "**/*.ts", "**/*.tsx"] 10 | } 11 | -------------------------------------------------------------------------------- /with-nativewind/App.js: -------------------------------------------------------------------------------- 1 | import { View, Text } from 'react-native'; 2 | 3 | export default function App() { 4 | return ( 5 | 6 | Universal React with Expo 7 | 8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /with-yarn-workspaces/apps/mobile/webpack.config.js: -------------------------------------------------------------------------------- 1 | const { createWebpackConfigAsync } = require('expo-yarn-workspaces/webpack'); 2 | 3 | module.exports = async function(env, argv) { 4 | const config = await createWebpackConfigAsync(env, argv); 5 | return config; 6 | }; 7 | -------------------------------------------------------------------------------- /with-yarn-workspaces/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "start-app": "yarn workspace mobile start", 5 | "watch-packages": "yarn workspaces run build" 6 | }, 7 | "workspaces": [ 8 | "apps/*", 9 | "packages/*" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /with-dev-client/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /with-router-menus/metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig } = require("expo/metro-config"); 2 | const { withNativeWind } = require("nativewind/metro"); 3 | 4 | const config = getDefaultConfig(__dirname); 5 | 6 | module.exports = withNativeWind(config, { input: "./src/global.css" }); 7 | -------------------------------------------------------------------------------- /with-router-tailwind/metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig } = require("expo/metro-config"); 2 | const { withNativeWind } = require("nativewind/metro"); 3 | 4 | const config = getDefaultConfig(__dirname); 5 | 6 | module.exports = withNativeWind(config, { input: "./src/global.css" }); 7 | -------------------------------------------------------------------------------- /with-video-background/README.md: -------------------------------------------------------------------------------- 1 | # Video Background Example 2 | 3 | Video backgrounds are common in mobile apps. This shows you how to do it universally with Expo. 4 | 5 | ## How to use 6 | 7 | - Install: `yarn` 8 | 9 | - Run Project Locally: `yarn start` or `npm run start` 10 | 11 | -------------------------------------------------------------------------------- /blank/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-web": "~0.19.6" 8 | }, 9 | "devDependencies": { 10 | "@babel/core": "^7.19.3" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff 3 | #FFFFFF 4 | #023c69 5 | #ffffff 6 | -------------------------------------------------------------------------------- /with-router-tailwind/README.md: -------------------------------------------------------------------------------- 1 | # Expo Router and Tailwind CSS 2 | 3 | Use [Expo Router](https://docs.expo.dev/router/introduction/) with [Nativewind](https://www.nativewind.dev/v4/overview/) styling. 4 | 5 | ## 🚀 How to use 6 | 7 | ```sh 8 | npx create-expo-app -e with-router-tailwind 9 | ``` 10 | -------------------------------------------------------------------------------- /with-yarn-workspaces/packages/expo-custom/tsconfig.json: -------------------------------------------------------------------------------- 1 | // @generated by expo-module-scripts 2 | { 3 | "extends": "expo-module-scripts/tsconfig.base", 4 | "compilerOptions": { 5 | "outDir": "./build" 6 | }, 7 | "include": ["./src"], 8 | "exclude": ["**/__mocks__/*", "**/__tests__/*"] 9 | } 10 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | HelloWorld 3 | contain 4 | false 5 | -------------------------------------------------------------------------------- /with-openai/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "scheme": "acme", 4 | "web": { 5 | "output": "server", 6 | "bundler": "metro" 7 | }, 8 | "plugins": [ 9 | [ 10 | "expo-router", 11 | { 12 | "origin": "https://n" 13 | } 14 | ] 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /with-socket-io/backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "socket-io-expo-backend", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "start": "node index.js" 7 | }, 8 | "license": "MIT", 9 | "dependencies": { 10 | "express": "^4.17.1", 11 | "socket.io": "^4.3.1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/HelloWorld.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | -------------------------------------------------------------------------------- /with-zustand/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-web": "~0.19.6", 8 | "zustand": "^3.6.7" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /navigation/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: [ 5 | [ 6 | "babel-preset-expo", 7 | { 8 | // Use React 17 automatic JSX runtime. 9 | jsxRuntime: "automatic", 10 | }, 11 | ], 12 | ], 13 | }; 14 | }; 15 | -------------------------------------------------------------------------------- /with-camera/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-camera": "~14.0.1", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /with-icons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@expo/vector-icons": "^14.0.0", 4 | "expo": "^50.0.1", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-maps/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-maps": "1.8.0", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-nextjs/pages/_app.js: -------------------------------------------------------------------------------- 1 | import Head from "next/head"; 2 | 3 | export default function App({ Component, pageProps }) { 4 | return ( 5 | <> 6 | 7 | 8 | 9 | 10 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /with-tailwindcss/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-web": "~0.19.6", 8 | "tailwind-rn": "^3.0.1" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /with-router-tailwind/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ["./src/**/*.{js,jsx,ts,tsx}"], 4 | presets: [require("nativewind/preset")], 5 | theme: { 6 | extend: {}, 7 | }, 8 | future: { 9 | hoverOnlyWhenSupported: true, 10 | }, 11 | plugins: [], 12 | }; 13 | -------------------------------------------------------------------------------- /with-socket-io/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-web": "~0.19.6", 8 | "socket.io-client": "^4.3.2" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-video-background/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-av": "~13.10.3", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-google-vision/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-image-picker": "~14.7.1", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-styled-components/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-web": "~0.19.6", 8 | "styled-components": "^5.1.0" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /blank/App.js: -------------------------------------------------------------------------------- 1 | import { View, Text } from "react-native"; 2 | 3 | export default function App() { 4 | return ( 5 | 12 | Universal React with Expo 13 | 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /with-formik/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "formik": "~2.2.9", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6", 9 | "yup": "0.32.11" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-new-arch/README.md: -------------------------------------------------------------------------------- 1 | # [New Architecture Example](https://reactnative.dev/docs/the-new-architecture/landing-page) 2 | 3 | ## 🚀 How to use 4 | 5 | > `npx create-expo-app@latest -e with-new-arch` 6 | 7 | - Install packages with `yarn` or `npm install`. 8 | - Run `npx expo run:ios` and/or `npx expo run:android`. Requires native toolchains to be installed. -------------------------------------------------------------------------------- /with-aws-storage-upload/amplify/backend/backend-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "auth": { 3 | "expoexampleamplify25cbcd09": { 4 | "service": "Cognito", 5 | "providerPlugin": "awscloudformation", 6 | "dependsOn": [] 7 | } 8 | }, 9 | "storage": { 10 | "expoupload": { 11 | "service": "S3", 12 | "providerPlugin": "awscloudformation" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /with-postpublish-hooks/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-postpublish-slack-notify": "1.2.0", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /with-native-base/App.js: -------------------------------------------------------------------------------- 1 | import { NativeBaseProvider, Box, Text } from 'native-base'; 2 | 3 | export default function App() { 4 | return ( 5 | 6 | 7 | Expo with NativeBase 8 | 9 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /with-postpublish-hooks/App.js: -------------------------------------------------------------------------------- 1 | import { View, Text } from "react-native"; 2 | 3 | export default function App() { 4 | return ( 5 | 12 | Universal React with Expo 13 | 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /with-moti/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "moti": "~0.22.0", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-reanimated": "~3.6.0", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-nativewind/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "nativewind": "^2.0.10", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.18.6", 12 | "tailwindcss": "^3.1.8" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-router/README.md: -------------------------------------------------------------------------------- 1 | # Expo Router Example 2 | 3 | Use [`expo-router`](https://docs.expo.dev/router/introduction/) to build native navigation using files in the `app/` directory. 4 | 5 | ## 🚀 How to use 6 | 7 | ```sh 8 | npx create-expo-app -e with-router 9 | ``` 10 | 11 | ## 📝 Notes 12 | 13 | - [Expo Router: Docs](https://docs.expo.dev/router/introduction/) 14 | -------------------------------------------------------------------------------- /with-yarn-workspaces/apps/mobile/index.js: -------------------------------------------------------------------------------- 1 | import { registerRootComponent } from 'expo'; 2 | 3 | import App from './App'; 4 | 5 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 6 | // It also ensures that whether you load the app in Expo Go or in a native build, 7 | // the environment is set up appropriately 8 | registerRootComponent(App); 9 | -------------------------------------------------------------------------------- /with-custom-font/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-font": "~11.10.2", 5 | "expo-splash-screen": "~0.26.3", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-pdf/eas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cli": { 3 | "version": ">= 0.42.4" 4 | }, 5 | "build": { 6 | "development": { 7 | "developmentClient": true, 8 | "distribution": "internal" 9 | }, 10 | "preview": { 11 | "distribution": "internal" 12 | }, 13 | "production": {} 14 | }, 15 | "submit": { 16 | "production": {} 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /with-realm/eas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cli": { 3 | "version": ">= 0.42.4" 4 | }, 5 | "build": { 6 | "development": { 7 | "developmentClient": true, 8 | "distribution": "internal" 9 | }, 10 | "preview": { 11 | "distribution": "internal" 12 | }, 13 | "production": {} 14 | }, 15 | "submit": { 16 | "production": {} 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /with-storybook/.storybook/preview.js: -------------------------------------------------------------------------------- 1 | /** @type { import('@storybook/react').Preview } */ 2 | const preview = { 3 | parameters: { 4 | actions: { argTypesRegex: "^on[A-Z].*" }, 5 | controls: { 6 | matchers: { 7 | color: /(background|color)$/i, 8 | date: /Date$/, 9 | }, 10 | }, 11 | }, 12 | }; 13 | 14 | export default preview; 15 | -------------------------------------------------------------------------------- /with-twitter-auth/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-auth-session": "~5.4.0", 5 | "expo-random": "~13.6.0", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-webrtc/eas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cli": { 3 | "version": ">= 0.42.4" 4 | }, 5 | "build": { 6 | "development": { 7 | "developmentClient": true, 8 | "distribution": "internal" 9 | }, 10 | "preview": { 11 | "distribution": "internal" 12 | }, 13 | "production": {} 14 | }, 15 | "submit": { 16 | "production": {} 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /with-gatsby/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "jsx": "react-native", 5 | "lib": [ 6 | "dom", 7 | "esnext" 8 | ], 9 | "moduleResolution": "node", 10 | "noEmit": true, 11 | "skipLibCheck": true, 12 | "resolveJsonModule": true 13 | }, 14 | "extends": "expo/tsconfig.base" 15 | } 16 | -------------------------------------------------------------------------------- /with-react-router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-web": "~0.19.6", 8 | "react-router-dom": "5.3.0", 9 | "react-router-native": "5.2.1" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-magic/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@magic-sdk/react-native": "^6.2.0", 4 | "expo": "^50.0.1", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6", 9 | "react-native-webview": "13.6.4" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-webbrowser-redirect/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-linking": "~6.2.2", 5 | "expo-web-browser": "~12.8.1", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-formdata-image-upload/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-constants": "~15.4.5", 5 | "expo-image-picker": "~14.7.1", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /with-auth0/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-auth-session": "~5.4.0", 5 | "expo-random": "~13.6.0", 6 | "jwt-decode": "2.2.0", 7 | "react": "18.2.0", 8 | "react-dom": "18.2.0", 9 | "react-native": "0.73.2", 10 | "react-native-web": "~0.19.6" 11 | }, 12 | "devDependencies": { 13 | "@babel/core": "^7.19.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /with-pdf/index.js: -------------------------------------------------------------------------------- 1 | import 'expo-dev-client'; 2 | 3 | import { registerRootComponent } from "expo"; 4 | 5 | import App from "./App"; 6 | 7 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 8 | // It also ensures that whether you load the app in the Expo client or in a native build, 9 | // the environment is set up appropriately 10 | registerRootComponent(App); 11 | -------------------------------------------------------------------------------- /with-webrtc/index.js: -------------------------------------------------------------------------------- 1 | import 'expo-dev-client'; 2 | 3 | import { registerRootComponent } from "expo"; 4 | 5 | import App from "./App"; 6 | 7 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 8 | // It also ensures that whether you load the app in the Expo client or in a native build, 9 | // the environment is set up appropriately 10 | registerRootComponent(App); 11 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /with-dev-client/index.js: -------------------------------------------------------------------------------- 1 | import "expo-dev-client"; 2 | 3 | import { registerRootComponent } from "expo"; 4 | 5 | import App from "./App"; 6 | 7 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 8 | // It also ensures that whether you load the app in the Expo client or in a native build, 9 | // the environment is set up appropriately 10 | registerRootComponent(App); 11 | -------------------------------------------------------------------------------- /with-html/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@expo/html-elements": "^0.3.0", 4 | "expo": "^50.0.1", 5 | "nativewind": "^2.0.10", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.18.6", 13 | "tailwindcss": "^3.1.8" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /with-processing/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-gl": "~13.6.0", 5 | "expo-processing": "^2.0.6", 6 | "processing-js": "^1.6.6", 7 | "react": "18.2.0", 8 | "react-dom": "18.2.0", 9 | "react-native": "0.73.2", 10 | "react-native-web": "~0.19.6" 11 | }, 12 | "devDependencies": { 13 | "@babel/core": "^7.19.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /with-router-tailwind/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "scheme": "acme", 4 | "userInterfaceStyle": "automatic", 5 | "orientation": "default", 6 | "web": { 7 | "output": "static", 8 | "bundler": "metro" 9 | }, 10 | "plugins": [ 11 | [ 12 | "expo-router", 13 | { 14 | "origin": "https://n" 15 | } 16 | ] 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /with-router-menus/src/app/modal.tsx: -------------------------------------------------------------------------------- 1 | import { StatusBar } from "expo-status-bar"; 2 | import { ScrollView, View } from "react-native"; 3 | 4 | export default function Modal() { 5 | return ( 6 | <> 7 | 8 | 9 | 10 | 11 | 12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /with-typescript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-web": "~0.19.6" 8 | }, 9 | "devDependencies": { 10 | "@babel/core": "^7.19.3", 11 | "@types/react": "~18.2.14", 12 | "@types/react-native": "~0.70.6", 13 | "typescript": "^5.1.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /with-victory-native/webpack.config.js: -------------------------------------------------------------------------------- 1 | const createExpoWebpackConfigAsync = require("@expo/webpack-config"); 2 | 3 | module.exports = async function (env, argv) { 4 | const config = await createExpoWebpackConfigAsync( 5 | { 6 | ...env, 7 | babel: { 8 | dangerouslyAddModulePathsToTranspile: ["victory-native"], 9 | }, 10 | }, 11 | argv 12 | ); 13 | return config; 14 | }; 15 | -------------------------------------------------------------------------------- /with-native-base/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "native-base": "^3.4.28", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-safe-area-context": "4.8.2", 9 | "react-native-svg": "14.1.0", 10 | "react-native-web": "~0.19.6" 11 | }, 12 | "devDependencies": { 13 | "@babel/core": "^7.19.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /with-reanimated/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@expo/metro-runtime": "^3.1.1", 4 | "expo": "^50.0.1", 5 | "expo-status-bar": "~1.11.1", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-reanimated": "~3.6.0", 10 | "react-native-web": "~0.19.6" 11 | }, 12 | "devDependencies": { 13 | "@babel/core": "^7.19.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /with-webbrowser-redirect/app.config.js: -------------------------------------------------------------------------------- 1 | export default ({ config }) => ({ 2 | ...config, 3 | icon: 4 | "https://github.com/expo/expo/blob/master/templates/expo-template-blank/assets/icon.png?raw=true", 5 | splash: { 6 | image: 7 | "https://github.com/expo/expo/blob/master/templates/expo-template-blank/assets/splash.png?raw=true", 8 | }, 9 | scheme: "expo.examples.with-webbrowser-redirect", 10 | }); 11 | -------------------------------------------------------------------------------- /with-html/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ["babel-preset-expo"], 5 | plugins: [ 6 | // Must come before the nativewind plugin 7 | "@expo/html-elements/babel", 8 | [ 9 | "nativewind/babel", 10 | { 11 | allowModuleTransform: ["@expo/html-elements"], 12 | }, 13 | ], 14 | ], 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /with-splash-screen/app.config.js: -------------------------------------------------------------------------------- 1 | export default ({ config }) => ({ 2 | ...config, 3 | icon: 4 | "https://github.com/expo/expo/blob/master/templates/expo-template-blank/assets/icon.png?raw=true", 5 | splash: { 6 | image: 7 | "https://github.com/expo/expo/blob/master/templates/expo-template-blank/assets/splash.png?raw=true", 8 | resizeMode: "contain", 9 | backgroundColor: "#ffffff", 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /with-facebook-auth/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-auth-session": "~5.4.0", 5 | "expo-random": "~13.6.0", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3" 13 | }, 14 | "scripts": { 15 | "start": "expo start" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /with-realm/index.js: -------------------------------------------------------------------------------- 1 | import 'expo-dev-client'; 2 | import 'react-native-get-random-values'; 3 | 4 | import { registerRootComponent } from "expo"; 5 | 6 | import App from "./App"; 7 | 8 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 9 | // It also ensures that whether you load the app in the Expo client or in a native build, 10 | // the environment is set up appropriately 11 | registerRootComponent(App); 12 | -------------------------------------------------------------------------------- /with-firebase-storage-upload/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-clipboard": "~5.0.1", 5 | "expo-image-picker": "~14.7.1", 6 | "firebase": "^9.6.9", 7 | "react": "18.2.0", 8 | "react-dom": "18.2.0", 9 | "react-native": "0.73.2", 10 | "react-native-web": "~0.19.6", 11 | "uuid": "3.4.0" 12 | }, 13 | "devDependencies": { 14 | "@babel/core": "^7.19.3" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /with-realm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "expo start --dev-client", 4 | "android": "expo run:android", 5 | "ios": "expo run:ios" 6 | }, 7 | "dependencies": { 8 | "@realm/react": "^0.4.3", 9 | "expo": "^50.0.1", 10 | "expo-dev-client": "~3.3.6", 11 | "react": "18.2.0", 12 | "react-native": "0.73.2", 13 | "react-native-get-random-values": "~1.8.0", 14 | "realm": "^11.7.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /with-splash-screen/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-asset": "~9.0.2", 5 | "expo-constants": "~15.4.5", 6 | "expo-splash-screen": "~0.26.3", 7 | "expo-updates": "~0.24.8", 8 | "react": "18.2.0", 9 | "react-dom": "18.2.0", 10 | "react-native": "0.73.2", 11 | "react-native-web": "~0.19.6" 12 | }, 13 | "devDependencies": { 14 | "@babel/core": "^7.19.3" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /with-nextjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "next": "~14.0.4", 5 | "react": "18.2.0", 6 | "react-dom": "18.2.0", 7 | "react-native": "0.73.2", 8 | "react-native-web": "~0.19.6" 9 | }, 10 | "devDependencies": { 11 | "@babel/core": "^7.19.3", 12 | "@expo/next-adapter": "^6.0.0" 13 | }, 14 | "scripts": { 15 | "start": "next dev", 16 | "build": "next build" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /with-victory-native/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@expo/webpack-config": "^19.0.0", 4 | "expo": "^50.0.1", 5 | "expo-font": "~11.10.2", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-svg": "14.1.0", 10 | "react-native-web": "~0.19.6", 11 | "victory-native": "^35.5.5" 12 | }, 13 | "devDependencies": { 14 | "@babel/core": "^7.19.3" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /with-apollo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@apollo/client": "^3.4.16", 4 | "@apollo/link-context": "^2.0.0-beta.3", 5 | "@react-native-picker/picker": "2.6.1", 6 | "expo": "^50.0.1", 7 | "graphql": "^15.0.0", 8 | "react": "18.2.0", 9 | "react-dom": "18.2.0", 10 | "react-native": "0.73.2", 11 | "react-native-web": "~0.19.6" 12 | }, 13 | "devDependencies": { 14 | "@babel/core": "^7.19.3" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /with-preact/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "preact": "10.4.1", 5 | "preact-responder-event-plugin": "1.0.16", 6 | "react": "18.2.0", 7 | "react-dom": "18.2.0", 8 | "react-native": "0.73.2", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3", 13 | "@expo/webpack-config": "^19.0.0", 14 | "webpack-bundle-analyzer": "3.7.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /with-formdata-image-upload/backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "file-upload-example-backend", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "aws-sdk": "^2.7.13", 13 | "dotenv": "^2.0.0", 14 | "express": "^4.14.0", 15 | "multer": "^1.2.0", 16 | "multer-s3": "^2.5.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /with-nextjs/next.config.js: -------------------------------------------------------------------------------- 1 | const { withExpo } = require("@expo/next-adapter"); 2 | 3 | /** @type {import('next').NextConfig} */ 4 | const nextConfig = withExpo({ 5 | reactStrictMode: true, 6 | swcMinify: true, 7 | transpilePackages: [ 8 | "react-native", 9 | "expo", 10 | // Add more React Native / Expo packages here... 11 | ], 12 | experimental: { 13 | forceSwcTransforms: true, 14 | }, 15 | }); 16 | 17 | module.exports = nextConfig; 18 | -------------------------------------------------------------------------------- /with-svg/assets/expo.svg: -------------------------------------------------------------------------------- 1 | Expo icon -------------------------------------------------------------------------------- /with-tv/App.tsx: -------------------------------------------------------------------------------- 1 | import { StyleSheet, Text, View } from 'react-native'; 2 | 3 | export default function App() { 4 | return ( 5 | 6 | Open up App.tsx to start working on your app! 7 | 8 | ); 9 | } 10 | 11 | const styles = StyleSheet.create({ 12 | container: { 13 | flex: 1, 14 | backgroundColor: '#fff', 15 | alignItems: 'center', 16 | justifyContent: 'center', 17 | }, 18 | }); 19 | -------------------------------------------------------------------------------- /with-maps/App.js: -------------------------------------------------------------------------------- 1 | import { View } from "react-native"; 2 | import MapView from "react-native-maps"; 3 | 4 | export default function App() { 5 | return ( 6 | 13 | 19 | 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /with-typescript/App.tsx: -------------------------------------------------------------------------------- 1 | import { StyleSheet, Text, View } from 'react-native'; 2 | 3 | export default function App() { 4 | return ( 5 | 6 | Open up App.tsx to start working on your app! 7 | 8 | ); 9 | } 10 | 11 | const styles = StyleSheet.create({ 12 | container: { 13 | flex: 1, 14 | backgroundColor: '#fff', 15 | alignItems: 'center', 16 | justifyContent: 'center', 17 | }, 18 | }); 19 | -------------------------------------------------------------------------------- /with-zustand/store.js: -------------------------------------------------------------------------------- 1 | import create from "zustand"; 2 | 3 | const initialState = { 4 | items: [], 5 | }; 6 | 7 | export const useStore = create((set, get) => { 8 | return Object.assign(initialState, { 9 | items: [], 10 | addItem(text) { 11 | const items = get().items; 12 | set({ items: [...items, { text, id: Math.random() }] }); 13 | }, 14 | }); 15 | }); 16 | 17 | export function useReset() { 18 | useStore.setState(initialState); 19 | } 20 | -------------------------------------------------------------------------------- /with-preact/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { StyleSheet, Text, View } from 'react-native'; 3 | 4 | export default function App() { 5 | return ( 6 | 7 | Demo Preact + Expo web 8 | 9 | ); 10 | } 11 | 12 | const styles = StyleSheet.create({ 13 | container: { 14 | flex: 1, 15 | backgroundColor: '#fff', 16 | alignItems: 'center', 17 | justifyContent: 'center', 18 | }, 19 | }); 20 | -------------------------------------------------------------------------------- /with-dev-client/ios/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | .xcode.env.local 25 | 26 | # Bundle artifacts 27 | *.jsbundle 28 | 29 | # CocoaPods 30 | /Pods/ 31 | -------------------------------------------------------------------------------- /with-postpublish-hooks/app.config.js: -------------------------------------------------------------------------------- 1 | export default ({ config }) => ({ 2 | ...config, 3 | hooks: { 4 | postPublish: [ 5 | { 6 | file: "./hooks/echo", 7 | config: { 8 | message: "hello brent", 9 | }, 10 | }, 11 | { 12 | file: "expo-postpublish-slack-notify", 13 | config: { 14 | webhookUrl: "https://hooks.slack.com/your-webhook-info-here", 15 | }, 16 | }, 17 | ], 18 | }, 19 | }); 20 | -------------------------------------------------------------------------------- /navigation/constants/Colors.js: -------------------------------------------------------------------------------- 1 | const tintColorLight = "#2f95dc"; 2 | const tintColorDark = "#fff"; 3 | 4 | export default { 5 | light: { 6 | text: "#000", 7 | background: "#fff", 8 | tint: tintColorLight, 9 | tabIconDefault: "#ccc", 10 | tabIconSelected: tintColorLight, 11 | }, 12 | dark: { 13 | text: "#fff", 14 | background: "#000", 15 | tint: tintColorDark, 16 | tabIconDefault: "#ccc", 17 | tabIconSelected: tintColorDark, 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /with-svg/App.js: -------------------------------------------------------------------------------- 1 | import { View } from "react-native"; 2 | 3 | // From https://simpleicons.org/?q=expo 4 | import ExpoLogo from "./assets/expo.svg"; 5 | 6 | export default function App() { 7 | return ( 8 | 16 | 17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /with-storybook/stories/Gradient.jsx: -------------------------------------------------------------------------------- 1 | import Constants from "expo-constants"; 2 | import { LinearGradient } from "expo-linear-gradient"; 3 | import { Text } from "react-native"; 4 | 5 | export const Gradient = ({}) => { 6 | return ( 7 | <> 8 | 12 | Expo Config: {JSON.stringify(Constants.expoConfig)} 13 | 14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /with-svg/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "react": "18.2.0", 5 | "react-dom": "18.2.0", 6 | "react-native": "0.73.2", 7 | "react-native-svg": "14.1.0", 8 | "react-native-svg-transformer": "^0.14.3", 9 | "react-native-web": "~0.19.6" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "^7.19.3", 13 | "@expo/metro-config": "~0.17.1", 14 | "@expo/webpack-config": "^19.0.0", 15 | "@svgr/webpack": "^5.5.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /with-three/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "expo": "^50.0.1", 4 | "expo-asset": "~9.0.2", 5 | "expo-file-system": "~16.0.4", 6 | "expo-gl": "~13.6.0", 7 | "expo-modules-core": "~1.11.7", 8 | "expo-three": "^7.0.0", 9 | "react": "18.2.0", 10 | "react-dom": "18.2.0", 11 | "react-native": "0.73.2", 12 | "react-native-web": "~0.19.6", 13 | "three": "^0.145.0" 14 | }, 15 | "devDependencies": { 16 | "@babel/core": "^7.19.3" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /with-gatsby/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { StyleSheet, Text, View } from 'react-native'; 3 | 4 | export default function App() { 5 | return ( 6 | 7 | Open up App.tsx to start working on your app! 8 | 9 | ); 10 | } 11 | 12 | const styles = StyleSheet.create({ 13 | container: { 14 | flex: 1, 15 | backgroundColor: '#fff', 16 | alignItems: 'center', 17 | justifyContent: 'center', 18 | }, 19 | }); 20 | -------------------------------------------------------------------------------- /with-sqlite/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "expo start", 4 | "android": "expo start --android", 5 | "ios": "expo start --ios", 6 | "web": "expo start --web" 7 | }, 8 | "dependencies": { 9 | "expo": "^50.0.1", 10 | "expo-sqlite": "~13.2.1", 11 | "react": "18.2.0", 12 | "react-dom": "18.2.0", 13 | "react-native": "0.73.2", 14 | "react-native-web": "~0.19.6" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "^7.19.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /with-tailwindcss/App.js: -------------------------------------------------------------------------------- 1 | import { SafeAreaView, Text, View } from "react-native"; 2 | import tailwind from "tailwind-rn"; 3 | 4 | export default function App() { 5 | return ( 6 | 7 | 8 | 9 | Hello Tailwind 👋 10 | 11 | 12 | 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /with-react-native-elements/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@expo/vector-icons": "^14.0.0", 4 | "expo": "^50.0.1", 5 | "expo-font": "~11.10.2", 6 | "expo-splash-screen": "~0.26.3", 7 | "react": "18.2.0", 8 | "react-dom": "18.2.0", 9 | "react-native": "0.73.2", 10 | "react-native-elements": "^3.4.2", 11 | "react-native-safe-area-context": "4.8.2", 12 | "react-native-web": "~0.19.6" 13 | }, 14 | "devDependencies": { 15 | "@babel/core": "^7.19.3" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /with-firebase-saml-login/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "serve": "serve ./backend/firebase-wrapper-app.html" 4 | }, 5 | "dependencies": { 6 | "@react-native-async-storage/async-storage": "1.21.0", 7 | "expo": "^50.0.1", 8 | "expo-linking": "~6.2.2", 9 | "expo-web-browser": "~12.8.1", 10 | "firebase": "^9.6.9", 11 | "react": "18.2.0", 12 | "react-native": "0.73.2" 13 | }, 14 | "devDependencies": { 15 | "@babel/core": "^7.19.3", 16 | "serve": "^13.0.2" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /with-nextjs/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { StyleSheet, Text, View } from "react-native"; 3 | 4 | export default function App() { 5 | return ( 6 | 7 | Welcome to Expo + Next.js 👋 8 | 9 | ); 10 | } 11 | 12 | const styles = StyleSheet.create({ 13 | container: { 14 | flex: 1, 15 | justifyContent: "center", 16 | alignItems: "center", 17 | }, 18 | text: { 19 | fontSize: 16, 20 | }, 21 | }); 22 | -------------------------------------------------------------------------------- /with-aws-storage-upload/amplify/.config/project-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "projectName": "expoexampleamplify", 3 | "version": "3.0", 4 | "frontend": "javascript", 5 | "javascript": { 6 | "framework": "react-native", 7 | "config": { 8 | "SourceDir": "/", 9 | "DistributionDir": "/", 10 | "BuildCommand": "npm run-script build", 11 | "StartCommand": "npm run-script start" 12 | } 13 | }, 14 | "providers": [ 15 | "awscloudformation" 16 | ] 17 | } -------------------------------------------------------------------------------- /with-victory-native/README.md: -------------------------------------------------------------------------------- 1 | # victory-native 2 | 3 | ## How to use 4 | 5 | ## Running the app 6 | 7 | - Run `yarn` or `npm install` 8 | - Run `yarn start` or `npm run start`, to try it out! 9 | 10 | ## The idea behind the example 11 | 12 | Expo includes `react-native-svg`, which is the only native dependency for `victory-native`. This demo shows that it's as simple as adding a supported version of `victory-native` and then using it as suggested in the docs. The code in `App.js` is copied directly out of the `victory-native` example app. 13 | -------------------------------------------------------------------------------- /with-dev-client/ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /with-react-three-fiber/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@react-three/fiber": "^8.3.1", 4 | "expo": "^50.0.1", 5 | "expo-asset": "~9.0.2", 6 | "expo-file-system": "~16.0.4", 7 | "expo-gl": "~13.6.0", 8 | "expo-modules-core": "~1.11.7", 9 | "expo-three": "^6.2.0", 10 | "react": "18.2.0", 11 | "react-dom": "18.2.0", 12 | "react-native": "0.73.2", 13 | "react-native-web": "~0.19.6", 14 | "three": "^0.145.0" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "^7.19.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /with-storybook/.gitignore: -------------------------------------------------------------------------------- 1 | # Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # Expo 7 | .expo/ 8 | dist/ 9 | web-build/ 10 | 11 | # Native 12 | *.orig.* 13 | *.jks 14 | *.p8 15 | *.p12 16 | *.key 17 | *.mobileprovision 18 | 19 | # Metro 20 | .metro-health-check* 21 | 22 | # debug 23 | npm-debug.* 24 | yarn-debug.* 25 | yarn-error.* 26 | 27 | # macOS 28 | .DS_Store 29 | *.pem 30 | 31 | # local env files 32 | .env*.local 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | -------------------------------------------------------------------------------- /with-storybook/App.js: -------------------------------------------------------------------------------- 1 | import { StatusBar } from 'expo-status-bar'; 2 | import { StyleSheet, Text, View } from 'react-native'; 3 | 4 | export default function App() { 5 | return ( 6 | 7 | Open up App.js to start working on your app! 8 | 9 | 10 | ); 11 | } 12 | 13 | const styles = StyleSheet.create({ 14 | container: { 15 | flex: 1, 16 | backgroundColor: '#fff', 17 | alignItems: 'center', 18 | justifyContent: 'center', 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /with-gatsby/src/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Text } from 'react-native'; 3 | import { useREM } from 'react-native-web-hooks'; 4 | 5 | import Layout from '../components/Layout'; 6 | import SEO from '../components/SEO'; 7 | 8 | const NotFoundPage = () => ( 9 | 10 | 11 | NOT FOUND 12 | You just hit a route that doesn't exist... the sadness. 13 | 14 | ) 15 | 16 | export default NotFoundPage 17 | -------------------------------------------------------------------------------- /navigation/components/StyledText.js: -------------------------------------------------------------------------------- 1 | import { Platform } from "react-native"; 2 | 3 | import { Text } from "./Themed"; 4 | 5 | export function MonoText(props) { 6 | return ( 7 | 22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /with-new-arch/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "expo start --dev-client", 4 | "android": "expo run:android", 5 | "ios": "expo run:ios", 6 | "web": "expo start --web" 7 | }, 8 | "dependencies": { 9 | "expo": "^50.0.1", 10 | "expo-build-properties": "~0.11.0", 11 | "expo-image": "~1.10.4", 12 | "expo-linear-gradient": "~12.7.0", 13 | "expo-splash-screen": "~0.26.3", 14 | "expo-status-bar": "~1.11.1", 15 | "react": "18.2.0", 16 | "react-native": "0.73.2" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "^7.20.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .expo 2 | .vscode 3 | node_modules 4 | bun.lockb 5 | yarn-error.log 6 | yarn.lock 7 | package-lock.json 8 | 9 | # Web 10 | web-build 11 | web-report 12 | 13 | # Electron 14 | dist 15 | 16 | # Gatsby 17 | .cache 18 | with-gatsby/public 19 | 20 | # Next.js 21 | .next 22 | with-nextjs/out 23 | 24 | # Native 25 | */ios/Pods 26 | 27 | # Websockets 28 | */backend/.env 29 | 30 | # local env files 31 | */.env*.local 32 | 33 | 34 | .DS_Store 35 | report.html 36 | 37 | # Maintenance logs 38 | .sdk-upgrade-logs 39 | .sdk-fix-logs 40 | 41 | 42 | /with-router-menus/ios 43 | /with-router-menus/android -------------------------------------------------------------------------------- /with-tfjs-camera/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@react-native-async-storage/async-storage": "1.21.0", 4 | "@tensorflow-models/mobilenet": "^2.1.0", 5 | "@tensorflow/tfjs": "^3.10.0", 6 | "@tensorflow/tfjs-react-native": "^0.7.0", 7 | "expo": "^50.0.1", 8 | "expo-camera": "~14.0.1", 9 | "expo-gl": "~13.6.0", 10 | "react": "18.2.0", 11 | "react-dom": "18.2.0", 12 | "react-native": "0.73.2", 13 | "react-native-fs": "^2.16.6", 14 | "react-native-web": "~0.19.6" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "^7.19.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /with-dev-client/ios/HelloWorld/Supporting/Expo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EXUpdatesCheckOnLaunch 6 | ALWAYS 7 | EXUpdatesEnabled 8 | 9 | EXUpdatesLaunchWaitMs 10 | 0 11 | EXUpdatesSDKVersion 12 | 48.0.0 13 | EXUpdatesURL 14 | https://exp.host/@keith-kurak/helloworld 15 | 16 | -------------------------------------------------------------------------------- /with-svg/metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig } = require('@expo/metro-config'); 2 | 3 | const defaultConfig = getDefaultConfig(__dirname); 4 | 5 | // Remove svg from the asset extensions. 6 | defaultConfig.resolver.assetExts = defaultConfig.resolver.assetExts.filter((ext) => ext !== 'svg'); 7 | // And add it to the source code extensions. 8 | defaultConfig.resolver.sourceExts.push('svg'); 9 | 10 | // Add a custom babel transformer which converts svg files to React components. 11 | defaultConfig.transformer.babelTransformerPath = require.resolve('react-native-svg-transformer'); 12 | 13 | module.exports = defaultConfig; 14 | -------------------------------------------------------------------------------- /with-router-menus/src/app/_layout.tsx: -------------------------------------------------------------------------------- 1 | import "../global.css"; 2 | 3 | import RootLayout from "@/components/root-layout"; 4 | import Ionicons from "@expo/vector-icons/Ionicons"; 5 | import MaterialIcons from "@expo/vector-icons/MaterialCommunityIcons"; 6 | import { useFonts } from "expo-font"; 7 | import React from "react"; 8 | 9 | export const unstable_settings = { 10 | initialRouteName: "index", 11 | }; 12 | 13 | export default function Layout() { 14 | const [isLoaded] = useFonts({ 15 | ...Ionicons.font, 16 | ...MaterialIcons.font, 17 | }); 18 | if (!isLoaded) return null; 19 | 20 | return ; 21 | } 22 | -------------------------------------------------------------------------------- /with-descope/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "expo start", 4 | "android": "expo run:android", 5 | "ios": "expo run:ios", 6 | "web": "expo start --web" 7 | }, 8 | "dependencies": { 9 | "expo": "~50.0.4", 10 | "expo-auth-session": "~5.0.2", 11 | "expo-random": "~13.2.0", 12 | "jwt-decode": "^4.0.0", 13 | "react": "18.2.0", 14 | "react-dom": "18.2.0", 15 | "react-native": "0.72.5", 16 | "react-native-screens": "~3.22.0", 17 | "react-native-webview": "13.2.2", 18 | "core-js": "~3.34.0" 19 | }, 20 | "devDependencies": { 21 | "@babel/core": "^7.19.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /with-dev-client/eas.json: -------------------------------------------------------------------------------- 1 | { 2 | "builds": { 3 | "android": { 4 | "release": { 5 | "workflow": "generic", 6 | "gradleCommand": ":app:bundleRelease" 7 | }, 8 | "development": { 9 | "workflow": "generic", 10 | "distribution": "internal", 11 | "gradleCommand": ":app:assembleDebug" 12 | } 13 | }, 14 | "ios": { 15 | "release": { 16 | "workflow": "generic" 17 | }, 18 | "development": { 19 | "workflow": "generic", 20 | "distribution": "internal", 21 | "schemeBuildConfiguration": "Debug" 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /with-router-menus/src/components/header.tsx: -------------------------------------------------------------------------------- 1 | import { MoreMenu, PageMenu, SortMenu } from "@/components/menus"; 2 | import { MaterialIcons } from "./icons"; 3 | 4 | export function Header() { 5 | return ( 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /with-yarn-workspaces/apps/mobile/App.js: -------------------------------------------------------------------------------- 1 | import { StatusBar } from "expo-status-bar"; 2 | import React from "react"; 3 | import { StyleSheet, Text, View } from "react-native"; 4 | import { MyView } from "expo-custom"; 5 | 6 | export default function App() { 7 | return ( 8 | 9 | Hello from the application 10 | 11 | 12 | 13 | ); 14 | } 15 | 16 | const styles = StyleSheet.create({ 17 | container: { 18 | flex: 1, 19 | backgroundColor: "#fff", 20 | alignItems: "center", 21 | justifyContent: "center", 22 | }, 23 | }); 24 | -------------------------------------------------------------------------------- /with-dev-client/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # react-native-reanimated 11 | -keep class com.swmansion.reanimated.** { *; } 12 | -keep class com.facebook.react.turbomodule.** { *; } 13 | 14 | # Add any project specific keep options here: 15 | -------------------------------------------------------------------------------- /with-styled-components/App.js: -------------------------------------------------------------------------------- 1 | import styled from "styled-components/native"; 2 | import { View, Text } from "react-native"; 3 | 4 | export default function App() { 5 | return ( 6 | 7 | Expo with 💅 Styled Components 8 | iOS • Android • web 9 | 10 | ); 11 | } 12 | 13 | const Container = styled(View)` 14 | flex: 1; 15 | background-color: papayawhip; 16 | justify-content: center; 17 | align-items: center; 18 | `; 19 | 20 | const Title = styled(Text)` 21 | font-size: 24px; 22 | font-weight: 500; 23 | color: ${(props) => props.color}; 24 | `; 25 | -------------------------------------------------------------------------------- /with-tv/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "with-tv", 3 | "version": "1.0.0", 4 | "dependencies": { 5 | "expo": "^50.0.6", 6 | "expo-splash-screen": "~0.26.3", 7 | "expo-status-bar": "~1.11.1", 8 | "react": "18.2.0", 9 | "react-dom": "18.2.0", 10 | "react-native": "npm:react-native-tvos@^0.73.4-0" 11 | }, 12 | "devDependencies": { 13 | "@babel/core": "~7.20.0", 14 | "@react-native-tvos/config-tv": "^0.0.6", 15 | "@types/react": "~18.2.14", 16 | "typescript": "^5.3.0" 17 | }, 18 | "expo": { 19 | "install": { 20 | "exclude": [ 21 | "react-native" 22 | ] 23 | } 24 | }, 25 | "private": true 26 | } 27 | -------------------------------------------------------------------------------- /with-dev-client/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'HelloWorld' 2 | 3 | apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle"); 4 | useExpoModules() 5 | 6 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 7 | applyNativeModulesSettingsGradle(settings) 8 | 9 | include ':app' 10 | includeBuild(new File(["node", "--print", "require.resolve('react-native-gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile()) 11 | -------------------------------------------------------------------------------- /with-new-arch/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "with-new-arch", 4 | "slug": "with-new-arch", 5 | "ios": { 6 | "supportsTablet": true, 7 | "bundleIdentifier": "com.example.with-new-arch" 8 | }, 9 | "android": { 10 | "package": "com.example.withnewarch" 11 | }, 12 | "web": { 13 | "favicon": "./assets/favicon.png" 14 | }, 15 | "plugins": [ 16 | [ 17 | "expo-build-properties", 18 | { 19 | "ios": { 20 | "newArchEnabled": true 21 | }, 22 | "android": { 23 | "newArchEnabled": true 24 | } 25 | } 26 | ] 27 | ] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /with-yarn-workspaces/packages/expo-custom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "expo-custom", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "build/index.js", 6 | "types": "build/index.d.ts", 7 | "sideEffects": false, 8 | "scripts": { 9 | "build": "expo-module build", 10 | "clean": "expo-module clean", 11 | "lint": "expo-module lint", 12 | "test": "expo-module test", 13 | "prepublishOnly": "expo-module prepublishOnly", 14 | "expo-module": "expo-module" 15 | }, 16 | "jest": { 17 | "preset": "expo-module-scripts" 18 | }, 19 | "dependencies": { 20 | }, 21 | "devDependencies": { 22 | "expo-module-scripts": "^3.4.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /with-aws-storage-upload/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@aws-amplify/auth": "^4.3.11", 4 | "@aws-amplify/core": "^4.3.3", 5 | "@aws-amplify/storage": "^4.4.4", 6 | "@react-native-async-storage/async-storage": "1.21.0", 7 | "@react-native-community/netinfo": "11.1.0", 8 | "aws-amplify": "^4.3.3", 9 | "expo": "^50.0.1", 10 | "expo-clipboard": "~5.0.1", 11 | "expo-constants": "~15.4.5", 12 | "expo-image-picker": "~14.7.1", 13 | "react": "18.2.0", 14 | "react-dom": "18.2.0", 15 | "react-native": "0.73.2", 16 | "react-native-web": "~0.19.6" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "^7.19.3" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /with-dev-client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "expo start --dev-client", 4 | "android": "expo run:android", 5 | "ios": "expo run:ios", 6 | "web": "expo start --web" 7 | }, 8 | "dependencies": { 9 | "expo": "^50.0.1", 10 | "expo-dev-client": "~3.3.6", 11 | "expo-splash-screen": "~0.26.3", 12 | "expo-status-bar": "~1.11.1", 13 | "expo-updates": "~0.24.8", 14 | "react": "18.2.0", 15 | "react-dom": "18.2.0", 16 | "react-native": "0.73.2", 17 | "react-native-web": "~0.19.6" 18 | }, 19 | "devDependencies": { 20 | "@babel/core": "^7.19.3" 21 | }, 22 | "name": "with-dev-client", 23 | "version": "1.0.0" 24 | } 25 | -------------------------------------------------------------------------------- /with-tfjs-camera/src/LoadingView.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { ActivityIndicator, StyleSheet, Text, View } from "react-native"; 3 | 4 | export function LoadingView({ children, message = '' }) { 5 | return ( 6 | 7 | 8 | {!!message && {message}} 9 | {children} 10 | 11 | 12 | 13 | ); 14 | } 15 | 16 | const styles = StyleSheet.create({ 17 | container: { flex: 1, justifyContent: "center", alignItems: "center" }, 18 | text: { fontSize: 18, textAlign: "center", marginRight: 8 }, 19 | }); 20 | -------------------------------------------------------------------------------- /with-tv/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "plugins": [ 4 | [ 5 | "@react-native-tvos/config-tv", 6 | { 7 | "androidTVBanner": "./assets/images/icon-400x240.png", 8 | "appleTVImages": { 9 | "icon": "./assets/images/icon-1280x768.png", 10 | "iconSmall": "./assets/images/icon-400x240.png", 11 | "topShelf": "./assets/images/icon-1920x720.png", 12 | "topShelf2x": "./assets/images/icon-3840x1440.png", 13 | "topShelfWide": "./assets/images/icon-2320x720.png", 14 | "topShelfWide2x": "./assets/images/icon-4640x1440.png" 15 | } 16 | } 17 | ] 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /with-yarn-workspaces/apps/mobile/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mobile", 3 | "version": "1.0.0", 4 | "private": true, 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "expo start", 8 | "android": "expo start --android", 9 | "ios": "expo start --ios", 10 | "web": "expo start --web", 11 | "build": "echo 'Nothing to build'" 12 | }, 13 | "dependencies": { 14 | "expo": "^50.0.1", 15 | "expo-custom": "*", 16 | "expo-status-bar": "~1.11.1", 17 | "react": "18.2.0", 18 | "react-dom": "18.2.0", 19 | "react-native": "0.73.2", 20 | "react-native-web": "~0.19.6" 21 | }, 22 | "devDependencies": { 23 | "@babel/core": "^7.19.3" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /with-pdf/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "expo start --dev-client", 4 | "android": "expo run:android", 5 | "ios": "expo run:ios" 6 | }, 7 | "dependencies": { 8 | "expo": "^50.0.1", 9 | "expo-dev-client": "~3.3.6", 10 | "expo-splash-screen": "~0.26.3", 11 | "expo-status-bar": "~1.11.1", 12 | "fbjs": "^3.0.2", 13 | "react": "18.2.0", 14 | "react-native": "0.73.2", 15 | "react-native-blob-util": "^0.13.18", 16 | "react-native-pdf": "^6.6.2" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "^7.19.3", 20 | "@config-plugins/react-native-blob-util": "^0.0.0", 21 | "@config-plugins/react-native-pdf": "^0.0.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /with-webrtc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "expo start --dev-client", 4 | "android": "expo run:android", 5 | "ios": "expo run:ios" 6 | }, 7 | "dependencies": { 8 | "expo": "^50.0.1", 9 | "expo-dev-client": "~3.3.6", 10 | "expo-splash-screen": "~0.26.3", 11 | "expo-status-bar": "~1.11.1", 12 | "react": "18.2.0", 13 | "react-dom": "18.2.0", 14 | "react-native": "0.73.2", 15 | "react-native-web": "~0.19.6", 16 | "react-native-webrtc": "^106.0.6" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "^7.19.3", 20 | "@config-plugins/react-native-webrtc": "^6.0.0" 21 | }, 22 | "name": "with-webrtc", 23 | "version": "1.0.0" 24 | } 25 | -------------------------------------------------------------------------------- /with-yarn-workspaces/apps/mobile/metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig } = require('expo/metro-config'); 2 | const path = require('path'); 3 | 4 | // Find the workspace root, this can be replaced with `find-yarn-workspace-root` 5 | const workspaceRoot = path.resolve(__dirname, '../..'); 6 | const projectRoot = __dirname; 7 | 8 | const config = getDefaultConfig(projectRoot); 9 | 10 | // 1. Watch all files within the monorepo 11 | config.watchFolders = [workspaceRoot]; 12 | // 2. Let Metro know where to resolve packages, and in what order 13 | config.resolver.nodeModulesPaths = [ 14 | path.resolve(projectRoot, 'node_modules'), 15 | path.resolve(workspaceRoot, 'node_modules'), 16 | ]; 17 | 18 | module.exports = config; -------------------------------------------------------------------------------- /with-nextjs/.gitignore: -------------------------------------------------------------------------------- 1 | # @generated: @expo/next-adapter@2.1.0 2 | node_modules/**/* 3 | .expo/* 4 | npm-debug.* 5 | *.jks 6 | *.p8 7 | *.p12 8 | *.key 9 | *.mobileprovision 10 | *.orig.* 11 | web-build/ 12 | web-report/ 13 | 14 | # debug 15 | yarn-debug.log* 16 | yarn-error.log* 17 | 18 | # macOS 19 | .DS_Store 20 | 21 | # misc 22 | .DS_Store 23 | .env* 24 | 25 | .next 26 | 27 | # @generated: @expo/next-adapter@2.1.52 28 | /.expo/* 29 | # Expo Web 30 | /web-build/* 31 | # Expo Native 32 | *.jks 33 | *.p8 34 | *.p12 35 | *.key 36 | *.mobileprovision 37 | *.orig.* 38 | # Next.js 39 | /.next/* 40 | /out/ 41 | # Next.js production 42 | /build/ 43 | # Next.js dependencies 44 | /.pnp 45 | .pnp.js 46 | # @end @expo/next-adapter 47 | -------------------------------------------------------------------------------- /navigation/App.js: -------------------------------------------------------------------------------- 1 | import "react-native-gesture-handler"; 2 | 3 | import { StatusBar } from "expo-status-bar"; 4 | import { SafeAreaProvider } from "react-native-safe-area-context"; 5 | 6 | import { useLoadedAssets } from "./hooks/useLoadedAssets"; 7 | import Navigation from "./navigation"; 8 | import { useColorScheme } from "react-native"; 9 | 10 | export default function App() { 11 | const isLoadingComplete = useLoadedAssets(); 12 | const colorScheme = useColorScheme(); 13 | 14 | if (!isLoadingComplete) { 15 | return null; 16 | } else { 17 | return ( 18 | 19 | 20 | 21 | 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /with-native-base/README.md: -------------------------------------------------------------------------------- 1 | # NativeBase example 2 | 3 | ![Supports iOS](https://img.shields.io/badge/iOS-000.svg?style=flat-square&logo=APPLE&labelColor=999999&logoColor=fff) 4 | ![Supports Android](https://img.shields.io/badge/Android-000.svg?style=flat-square&logo=ANDROID&labelColor=A4C639&logoColor=fff) 5 | ![Supports Web](https://img.shields.io/badge/web-4630EB.svg?style=flat-square&logo=GOOGLE-CHROME&labelColor=4285F4&logoColor=fff) 6 | 7 | ## 🚀 How to use 8 | 9 | - Create a new project with the following command: 10 | 11 | ```sh 12 | npx create-react-native-app -t with-native-base 13 | ``` 14 | 15 | - Run `yarn start` or `npm run start` to try it out. 16 | 17 | ## 📝 Notes 18 | 19 | - [NativeBase docs](https://docs.nativebase.io/) 20 | -------------------------------------------------------------------------------- /with-workbox/App.js: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { View, Text } from "react-native"; 3 | 4 | import * as serviceWorkerRegistration from "./src/serviceWorkerRegistration"; 5 | 6 | export default function App() { 7 | return ( 8 | 15 | Universal (offline) React with Expo 16 | 17 | ); 18 | } 19 | 20 | // If you want your app to work offline and load faster, you can change 21 | // unregister() to register() below. Note this comes with some pitfalls. 22 | // Learn more about service workers: https://cra.link/PWA 23 | serviceWorkerRegistration.register(); 24 | -------------------------------------------------------------------------------- /with-drawer-navigation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@react-native-community/masked-view": "^0.1.11", 4 | "@react-native-masked-view/masked-view": "0.3.0", 5 | "@react-navigation/bottom-tabs": "^6.4.0", 6 | "@react-navigation/drawer": "^6.5.0", 7 | "@react-navigation/native": "^6.0.13", 8 | "expo": "^50.0.1", 9 | "react": "18.2.0", 10 | "react-dom": "18.2.0", 11 | "react-native": "0.73.2", 12 | "react-native-gesture-handler": "~2.14.0", 13 | "react-native-reanimated": "~3.6.0", 14 | "react-native-safe-area-context": "4.8.2", 15 | "react-native-screens": "~3.29.0", 16 | "react-native-web": "~0.19.6" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "^7.19.3" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /with-storybook/stories/assets/youtube.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /navigation/navigation/LinkingConfiguration.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Learn more about deep linking with React Navigation 3 | * https://reactnavigation.org/docs/deep-linking 4 | * https://reactnavigation.org/docs/configuring-links 5 | */ 6 | import * as Linking from "expo-linking"; 7 | 8 | export default { 9 | prefixes: [Linking.createURL("/")], 10 | config: { 11 | screens: { 12 | Root: { 13 | screens: { 14 | TabOne: { 15 | screens: { 16 | TabOneScreen: "one", 17 | }, 18 | }, 19 | TabTwo: { 20 | screens: { 21 | TabTwoScreen: "two", 22 | }, 23 | }, 24 | }, 25 | }, 26 | NotFound: "*", 27 | }, 28 | }, 29 | }; 30 | -------------------------------------------------------------------------------- /with-router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "with-router", 3 | "version": "1.0.0", 4 | "main": "expo-router/entry", 5 | "scripts": { 6 | "start": "expo start" 7 | }, 8 | "dependencies": { 9 | "expo": "^50.0.1", 10 | "expo-constants": "~15.4.5", 11 | "expo-linking": "~6.2.2", 12 | "expo-router": "~3.4.3", 13 | "expo-splash-screen": "~0.26.3", 14 | "expo-status-bar": "~1.11.1", 15 | "react": "18.2.0", 16 | "react-dom": "18.2.0", 17 | "react-native": "0.73.2", 18 | "react-native-gesture-handler": "~2.14.0", 19 | "react-native-safe-area-context": "4.8.2", 20 | "react-native-screens": "~3.29.0", 21 | "react-native-web": "~0.19.6" 22 | }, 23 | "devDependencies": { 24 | "@babel/core": "^7.20.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /with-svg/webpack.config.js: -------------------------------------------------------------------------------- 1 | const createExpoWebpackConfigAsync = require("@expo/webpack-config"); 2 | 3 | module.exports = async function (env, argv) { 4 | const config = await createExpoWebpackConfigAsync(env, argv); 5 | 6 | // Push a rule to convert SVGs to React components. 7 | config.module.rules.forEach((rule) => { 8 | if (rule.oneOf) { 9 | rule.oneOf.unshift({ 10 | test: /\.svg$/, 11 | exclude: /node_modules/, 12 | use: [ 13 | { 14 | loader: require.resolve("@svgr/webpack"), 15 | options: { 16 | viewBox: false, 17 | }, 18 | }, 19 | ], 20 | }); 21 | } 22 | }); 23 | config.resolve.extensions.push(".svg"); 24 | 25 | return config; 26 | }; 27 | -------------------------------------------------------------------------------- /with-aws-storage-upload/README.md: -------------------------------------------------------------------------------- 1 | # AWS Amplify with Storage Example 2 | 3 | This example demonstrates how to use the AWS Amplify to provision and use the APIs to capture image with Expo and, upload and download images with S3. 4 | 5 | > Check out the [AWS Amplify](https://docs.amplify.aws/) docs. 6 | 7 | Try it at https://exp.host/@ykbryan/aws-storage-upload 8 | 9 | ## How to use 10 | 11 | ### Setup AWS account 12 | 13 | - Create a new AWS account 14 | - Run `npm install -g @aws-amplify/cli` to install Amplify CLI 15 | - Run `amplify init` to initilise a new Amplify project 16 | - Run `amplify push` to deploy the Storage and Auth resources in AWS 17 | 18 | ### Running the app 19 | 20 | - Run `yarn` or `npm install` 21 | - Run `yarn start` or `npm run start` to try it out. 22 | -------------------------------------------------------------------------------- /with-yarn-workspaces/.gitignore: -------------------------------------------------------------------------------- 1 | # Expo 2 | .expo 3 | __generated__ 4 | web-build 5 | 6 | # macOS 7 | .DS_Store 8 | 9 | # Node 10 | node_modules 11 | npm-debug.log 12 | yarn-error.log 13 | 14 | # Ruby 15 | .direnv 16 | 17 | # Emacs 18 | *~ 19 | 20 | # Vim 21 | .*.swp 22 | .*.swo 23 | .*.swn 24 | .*.swm 25 | 26 | # Sublime Text 27 | *.sublime-project 28 | *.sublime-workspace 29 | 30 | # Xcode 31 | *.pbxuser 32 | !default.pbxuser 33 | *.xccheckout 34 | *.xcscmblueprint 35 | xcuserdata 36 | 37 | # Android Studio 38 | *.iml 39 | .gradle 40 | .idea/libraries 41 | .idea/workspace.xml 42 | .idea/gradle.xml 43 | .idea/misc.xml 44 | .idea/modules.xml 45 | .idea/vcs.xml 46 | 47 | # Eclipse 48 | .project 49 | .settings 50 | 51 | # VSCode 52 | .history/ 53 | 54 | # packages 55 | packages/*/build -------------------------------------------------------------------------------- /with-openai/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "with-openai", 3 | "version": "1.0.0", 4 | "main": "expo-router/entry", 5 | "scripts": { 6 | "start": "expo start" 7 | }, 8 | "dependencies": { 9 | "expo": "^50.0.1", 10 | "expo-constants": "~15.4.0", 11 | "expo-linking": "~6.2.1", 12 | "expo-router": "~3.4.1", 13 | "expo-splash-screen": "~0.26.0", 14 | "expo-status-bar": "~1.11.0", 15 | "react": "18.2.0", 16 | "react-dom": "18.2.0", 17 | "react-native": "0.73.2", 18 | "react-native-safe-area-context": "4.8.2", 19 | "react-native-screens": "~3.29.0", 20 | "react-native-web": "~0.19.6" 21 | }, 22 | "devDependencies": { 23 | "@types/react": "~18.2.14", 24 | "typescript": "^5.3.0", 25 | "@babel/core": "^7.20.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /with-reanimated/README.md: -------------------------------------------------------------------------------- 1 | # Reanimated example 2 | 3 |

4 | 5 | Supports Expo iOS 6 | 7 | Supports Expo Android 8 | 9 |

10 | 11 | ## 🚀 How to use 12 | 13 | > `npx create-react-native-app my-app -t with-reanimated` 14 | 15 | - Run `yarn` or `npm install` 16 | - Run `yarn start` or `npm run start` to try it out. 17 | 18 | ## 📝 Notes 19 | 20 | - [`react-native-reanimated` docs](https://docs.swmansion.com/react-native-reanimated/) 21 | -------------------------------------------------------------------------------- /with-storybook/stories/Gradient.stories.js: -------------------------------------------------------------------------------- 1 | import { Gradient } from "./Gradient"; 2 | 3 | // More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export 4 | export default { 5 | title: "Example/Gradient", 6 | component: Gradient, 7 | parameters: { 8 | // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout 9 | layout: "centered", 10 | }, 11 | // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs 12 | tags: ["autodocs"], 13 | }; 14 | 15 | // More on writing stories with args: https://storybook.js.org/docs/react/writing-stories/args 16 | export const Primary = { 17 | args: {}, 18 | }; 19 | -------------------------------------------------------------------------------- /with-router-menus/src/components/icons.tsx: -------------------------------------------------------------------------------- 1 | import UpstreamIonicons from "@expo/vector-icons/Ionicons"; 2 | import UpstreamMaterialIcons from "@expo/vector-icons/MaterialCommunityIcons"; 3 | import React from "react"; 4 | import { useColorScheme } from "react-native"; 5 | 6 | export function MaterialIcons( 7 | props: React.ComponentProps 8 | ) { 9 | const theme = useColorScheme(); 10 | return ( 11 | 15 | ); 16 | } 17 | 18 | export function Ionicons(props: React.ComponentProps) { 19 | const theme = useColorScheme(); 20 | return ( 21 | 22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /with-dev-client/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package com.helloworld; 8 | 9 | import android.content.Context; 10 | import com.facebook.react.ReactInstanceManager; 11 | 12 | /** 13 | * Class responsible of loading Flipper inside your React Native application. This is the release 14 | * flavor of it so it's empty as we don't want to load Flipper. 15 | */ 16 | public class ReactNativeFlipper { 17 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 18 | // Do nothing as we don't want to initialize Flipper on Release. 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /with-magic/README.md: -------------------------------------------------------------------------------- 1 | # Magic Example 2 | 3 |

4 | 5 | Supports Expo iOS 6 | 7 | Supports Expo Android 8 |

9 | 10 | ## 🚀 How to use 11 | 12 | - Install with `yarn` or `npm install`. 13 | - Create your own app on [Magic.link](https://magic.link). 14 | - Open `App.js` and replace `MAGIC_KEY` with your publishable key. 15 | - Run `yarn start` or `npm run start` to try it out. 16 | 17 | ## 📝 Notes 18 | 19 | - [Magic React Native docs](https://docs.magic.link/client-sdk/react-native) 20 | -------------------------------------------------------------------------------- /with-socket-io/backend/index.js: -------------------------------------------------------------------------------- 1 | const app = require('express')(); 2 | const http = require('http').Server(app); 3 | const io = require('socket.io')(http); 4 | 5 | // Add messages when sockets open and close connections 6 | io.on('connection', socket => { 7 | console.log(`[${socket.id}] socket connected`); 8 | socket.on('disconnect', reason => { 9 | console.log(`[${socket.id}] socket disconnected - ${reason}`); 10 | }); 11 | }); 12 | 13 | // Broadcast the current server time as global message, every 1s 14 | setInterval(() => { 15 | io.sockets.emit('time-msg', { time: new Date().toISOString() }); 16 | }, 1000); 17 | 18 | // Show the index.html by default 19 | app.get('/', (req, res) => res.sendFile('index.html')); 20 | 21 | // Start the express server 22 | http.listen(3000, function(){ 23 | console.log('listening on *:3000'); 24 | }); 25 | -------------------------------------------------------------------------------- /with-tfjs-camera/App.js: -------------------------------------------------------------------------------- 1 | import { Camera } from "expo-camera"; 2 | import React from "react"; 3 | import { Button } from 'react-native'; 4 | 5 | import { LoadingView } from "./src/LoadingView"; 6 | import { ModelView } from "./src/ModelView"; 7 | import { useTensorFlowLoaded } from "./src/useTensorFlow"; 8 | 9 | export default function App() { 10 | const isLoaded = useTensorFlowLoaded(); 11 | const [permission, requestPermission] = Camera.useCameraPermissions(); 12 | 13 | if (!permission?.granted) { 14 | return ( 15 | 16 |