All Projects → seantempesta → Expo Cljs Template

seantempesta / Expo Cljs Template

Licence: epl-1.0
Expo template for Clojurescript React Native

Programming Languages

clojure
4091 projects
clojurescript
191 projects

Projects that are alternatives of or similar to Expo Cljs Template

expo-three-orbit-controls
🎥 Three.js Orbit Controls (Camera) bridged into React Native
Stars: ✭ 43 (-84.7%)
Mutual labels:  expo
notebook
Web based Clojure notebook application/-library.
Stars: ✭ 96 (-65.84%)
Mutual labels:  reagent
Lyrics King React Native
Lyrics King is React Native song lyrics search app, built with Expo. Designed with Adobe XD.
Stars: ✭ 261 (-7.12%)
Mutual labels:  expo
uzual-mobile
Feed your brains with habits for a better mood
Stars: ✭ 67 (-76.16%)
Mutual labels:  expo
react-native-expo-starter-kit
🚀 A React Native (Expo) boilerplate app to get you up and running very, very quickly 🚀
Stars: ✭ 66 (-76.51%)
Mutual labels:  expo
expo-reason-starter
This project allows you to quickly get started with building mobile apps in ReasonML/ReScript
Stars: ✭ 16 (-94.31%)
Mutual labels:  expo
react pyconlunch
Companion React Native app for Pycon Lunch app
Stars: ✭ 80 (-71.53%)
Mutual labels:  expo
Stylefy
Clojure(Script) library for styling user interface components with ease.
Stars: ✭ 273 (-2.85%)
Mutual labels:  reagent
expo-with-storybook-howto
How to setup an Expo-based React Native project to use Storybook
Stars: ✭ 41 (-85.41%)
Mutual labels:  expo
Instagram
A universal instagram clone built with Expo
Stars: ✭ 258 (-8.19%)
Mutual labels:  expo
electron-app
Electron app with deps.edn, figwheel.main, reagent, and test integration
Stars: ✭ 29 (-89.68%)
Mutual labels:  reagent
boilerplate
Fullstack boilerplate using Typescript, React, Node & GraphQL
Stars: ✭ 738 (+162.63%)
Mutual labels:  expo
taro-playground
The Taro Playground App is a cross-platform application developed using Taro, to help developers develop and debug Taro applications.
Stars: ✭ 33 (-88.26%)
Mutual labels:  expo
react-universal
Minimal React+Redux boilerplate for web, mobile, and desktop app development with social-login ready
Stars: ✭ 18 (-93.59%)
Mutual labels:  expo
React Native User Profile
🎨 A react native mobile starter kit, Examples of user profiles screens to help you write component and design
Stars: ✭ 259 (-7.83%)
Mutual labels:  expo
react-flappy-bird
A side-scroller where the player controls a bird, attempting to fly between columns of green pipes without hitting them.
Stars: ✭ 55 (-80.43%)
Mutual labels:  expo
CRUDReactNativeSQLite
CRUD de app em React Native utilizando armazenamento local com SQLite
Stars: ✭ 16 (-94.31%)
Mutual labels:  expo
Expo Github Action
Expo CLI in your GitHub Actions workflow
Stars: ✭ 281 (+0%)
Mutual labels:  expo
Rn Tourguide
🚩Make an interactive step by step tour guide for your react-native app (a rewrite of react-native-copilot)
Stars: ✭ 269 (-4.27%)
Mutual labels:  expo
expo-soundcloud-clone
soundcloud clone built with expo
Stars: ✭ 47 (-83.27%)
Mutual labels:  expo

Clojars Project

Expo

Create React Native apps in Clojurescript with Expo. Impress your friends and build truly native apps across iOS and Android in a sane language!

Status

+ [expo "34.0.3"]
+ [org.omcljs/om "1.0.0-beta1"]
+ [reagent "0.8.1"]
+ [re-frame "0.10.8"]
+ [rum "0.11.1"]
- [boot *broken*]

Pull requests welcome! I don't know enough about Boot (or have enough time to learn) to support them!

Features

  • Reusable codebase for iOS and Android
  • Fast development feedback loops with REPL live coding (via Figwheel)
  • Easily test and publish your apps without installing XCode or Android Studio
  • Source map support when debugging Clojurescript
  • Supports React wrappers Reagent and Om.Next

Need help?

Dependencies (install these first)

Usage

1. Create your project

lein new expo your-project +reagent
lein new expo your-project +om
lein new expo your-project +rum

2. Change into your project's directory

cd your-project

3. Install npm dependencies

yarn install

4. Start figwheel

To auto-compile Clojurescript code and provide a development REPL

lein figwheel

5. Start expo and open the project's directory

$ expo start

From here you can Publish, Share, or run the app on a device. See Expo's documentation for more info.

6. [optional] Set lan-ip option via file:

Create file named .lan-ip with your ip. This ip will be used by figwheel to connect via websockets. If this file is not present it gets the ip from the system.

In linux you can execute the following line to create the file.

source lan-ip.sh

If this doesn't work (arch and ubuntu confirmed not to work), manually put your computer's IP address in .lan-ip and open firewall ports 19000, 19001. If you use Cncomplicated Firewall, it's sudo ufw allow 19000/tcp

To add new assets or npm modules

  1. Just js/require it somewhere in your code:
    (def cljs-logo (js/require "./assets/images/cljs.png"))
    (def FontAwesome (js/require "@expo/vector-icons/FontAwesome"))
  1. Reload simulator or device

Publishing

1. Clean the build directory

lein clean

2. Create a production build

lein prod-build

3. Open Publish with expo

$ expo publish

Externs

Production builds use advanced closure compilation which sometimes cause problems with javascript interop (details). In the past we ran a custom script to try and prepare a proper externs file, but I've found it to be very problematic and am now recommending the following:

  • Try out the :externs-inference setting in the clojurescript compiler. It should be enabled by default in newer versions of this template.
  • Use an interop package like cljs-oops for all js interop as dot references can get mangled (.-property js-object)
  • Add your externs manually to

Upgrading

As this is only an initial template, you'll want to upgrade to newer versions of expo. Honestly, it's usually as easy as reading the latest blog post for the new version and following the upgrade directions at the bottom. It usually comes down to:

  1. Updating the sdkVersion in app.json
  2. Updating the react dependencies in package.json
  3. Deleting your .node_modules directory
  4. Running yarn to install the updated dependencies
  5. Run expo start -c

Sometimes you'll need to upgrade clojurescript rendering dependencies (reagent and om-next), and in that case I recommend checking the issues/commits in this project for solutions.

Tips

  • Make sure you disable "Live Reload" and "Hot Reload" from the Developer Menu. (Figwheel does this better!)

Inspired by

License

Copyright © 2017 Sean Tempesta

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].