Remix + React Native Web

Experiments integrating React Native Web (RNW) into a Remix app.

Related discussion: Usage with React Native (+ Web)

Branches

Monorepo examples with Expo

These branches use lerna/yarn workspaces to enable remix and expo to utilize a shared UI package. To get these branches up and running:

  1. yarn && yarn bootstrap
  2. Run remix: cd packages/app-remix && yarn dev
  3. Run expo: cd packages/app-remix && yarn start
    • or yarn ios, yarn android, etc (see Expo docs for details)

Branches encountering hydration errors

These branches were created to investigate mysterious hydration errors encountered when trying to use react-native-web in a Remix app.

Investigation has seemed to isolate all of these issues to the StyleSheet implementation in react-native-web, but it is unclear what in that implementation would cause errors specifically just in Remix apps. See https://github.com/mikeylemmon/cra-rnw-ssr for an express-based app that does not encounter the errors.

More discussion here: Usage with React Native (+ Web) [comment #3777340]


Welcome to Remix!

Development

From your terminal:

npm run dev

This starts your app in development mode, rebuilding assets on file changes.

Deployment

First, build your app for production:

npm run build

Then run the app in production mode:

npm start

Now you'll need to pick a host to deploy it to.

DIY

If you're familiar with deploying node applications, the built-in Remix app server is production-ready.

Make sure to deploy the output of remix build

  • build/
  • public/build/

Using a Template

When you ran npx create-remix@latest there were a few choices for hosting. You can run that again to create a new project, then copy over your app/ folder to the new project that's pre-configured for your target server.

cd ..
# create a new project, and pick a pre-configured host
npx create-remix@latest
cd my-new-remix-app
# remove the new project's app (not the old one!)
rm -rf app
# copy your app over
cp -R ../my-old-remix-app/app app