Experimenting with awesome React Native + Expo features.

Related tags

GUI expo-mega-demo
Overview

Expo Mega Demo

Experimenting with new awesome React Native + Expo features.

Work in progress. More info soon.

A preview video (click the image): Watch the video

Core features:

⚠️ Caution! Many features used in this demo are in early, experimental stage and they're not ready for production. Use on your own risk.

  • Uses Expo custom managed workflow. Prebuilds on Expo SDK 43 pre-alpha template.
  • All native changes (even these unusual) and patches are covered with config plugins and yarn postinstall script.
  • Uses Expo Dev Client, react-navigation, ui-kitten
  • Bluetooth communication using react-native-ble-plx with config plugin
  • Color picker using Expo GL, made from this tutorial from William Candillon, but rewritten to Reanimated v2
  • Music Picker is an expo-module written using Swift "Sweet" API. More info soon.
  • JSI real-time Audio streaming, taken from this PR, thank you Marc!
  • Player controls stolen from NCL (internal Expo rn-tester equivalent).
  • FFT is calculated in the JS thread. The spectrum bin heights are written to SharedValues and animated with Reanimated 2.

    There is plan to use react-native-multithreading and calculate it in a separate thread. But even without that, the JS keeps around 57-59 fps.

  • Hardware: Arduino Uno and the HM-10 BLE 4.0 module. Read more in the Hardware README.

How to run

First time:

  1. Make sure you have Expo and all the stuff installed and configured (including Xcode)
  2. yarn install
  3. yarn prebuild
  4. Copy AppDelegate.m from patches dir to ios/expomegademo directory - see below why.
  5. yarn run:ios

Just to start the bundler (without rebuilding client): run yarn start.

Known issues

Most of them are caused by using very early SDK 43 stuff, which is not yet published, and other published packages are not yet compatible.

  • expo-dev-client config plugin is not yet working with SDK 43 alpha.
    • It hangs the CLI for Android at the dangerousMod -> Main Activity so the -p ios must be added to the prebuild command.
    • It messes up the AppDelegate.m. Workign version can be found in ./patches/AppDelegate.m - need to be copied manually.
  • Frequency bin labels are wrong 🤷 . Eventually I needed to display them in log scale and I am too lazy to think about how to recalculate everything properly.
  • Modifying the sound.onAudioSampleReceived callback and the Reanimated 2 stuff requires at least picking the song again to reload properly, sometimes whole app restart is needed.
  • Does not work on emulator.
  • Not yet works for Android
    • No JSI-related expo-av changes applied.
    • The MusicPicker module isn't implemented yet for that platform (there's a copy-pasted expo-haptics code ¯_(ツ)_/¯)

Applied patches

See the postinstall.js script and the plugins section of app.json to see how the patches are applied

  • patch-package for expo-gl and related libraries - needed, because of migration from @unimodules/core to expo-modules-core
  • new expo-modules-autolinking requires modules to be specified in package.json dependencies. I don't want to copy my custom native modules to node_modules they are deleted after being copied there by yarn.
  • by default, expo modules are built with xcframework if available, but that does not work for patched expo-gl, so its xcframework is deleted force build from source.
  • expo-gl installs wrong expo-modules-core dependency in its own node_modules - it is deleted, the global node_modules one is correct.
  • expo-cli built-in plugins sets the Push Notifications capability even when expo-notifications are not installed and I see no way to disable it. Another plugin was written to delete that entitlement.
  • iOS requires another Info.plist value about Media Library usage permission - a config plugin takes care of that
  • The custom_native_modules directory needs to be added to autolinking paths in Podfile. A config plugin takes care of that.
  • The AppDelegate.m is being broken by expo-dev-client config plugin, wrote another config plugin to copy the patched file - it does not work, still need to copy it manually.
You might also like...

Experimenting with Project Loom

Project Loom Lab Experiments with Project Loom's features based on these JEP(draft)s: Structured Concurrency Virtual Threads Experiments For these exp

Dec 23, 2022

Expo application with detox to run e2e using Github Workflow

Expo e2e Demo Application template to demonstrate how to run e2e in an Expo Managed application using Detox Tested using: MacOS 12.1 Monterrey, M1 Pro

Oct 24, 2022

Spring Native provides beta support for compiling Spring applications to native executables using GraalVM native-image compiler.

Spring Native provides beta support for compiling Spring applications to native executables using GraalVM native-image compiler.

Spring Native provides beta support for compiling Spring applications to native executables using GraalVM native-image compiler.

Jan 6, 2023

React native wrapper for Jitsi Meet SDK Library that rely on the native view (Activity / ViewController)

react-native-jitsi-meet-sdk React native wrapper for Jitsi Meet SDK Library. This Library implements the Jitsi SDK with a native activity on the Andro

May 2, 2022

KakaoSDK Bridge for React, React-Native, RNW

KakaoSDK Bridge for React, React-Native, RNW

KakaoSDK for React, React-Native Use Dependencies iOS Android Web 2.5.0 2.5.0 1.39.14 처음 설치 시 주의 사항 (React-Native 만) 해당 모듈은 Swift로 되어있어서 그냥 가동 시 작동이 안

May 2, 2022

The react-native Baidu voice library provides voice recognition, voice wake-up and voice synthesis interfaces. react-native百度语音库,提供语音识别,语音唤醒以及语音合成接口。

The react-native Baidu voice library provides voice recognition, voice wake-up and voice synthesis interfaces. react-native百度语音库,提供语音识别,语音唤醒以及语音合成接口。

react-native-baidu-asr react-native-baidu-asr It is a Baidu speech library under React Native, which can perform speech recognition, speech wake-up an

Oct 12, 2022

A lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app.

PipelinR PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your awesome Java app. PipelinR has been battle-proven on production, as

Jan 8, 2023

an awesome automation test framework

an awesome automation test framework

PnxTest PnxTest is a Java-based test automation framework that unites all testing layers: Mobile applications, WEB applications, REST services. Due to

Jul 29, 2022

An awesome Spring Boot Starter!

 An awesome Spring Boot Starter!

spring-boot-tony-starter An awesome Spring Boot Starter! Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Proje

Sep 13, 2022

PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app.

PipelinR PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your awesome Java app. PipelinR has been battle-proven on production, as

Jan 8, 2023

This app is simple and awesome notepad. It is a quick notepad editing experience when writing notes,emails,message,shoppings and to do list.

This app is simple and awesome notepad. It is a quick notepad editing experience when writing notes,emails,message,shoppings and to do list.

This app is simple and awesome notepad. It is a quick notepad editing experience when writing notes,emails,message,shoppings and to do list.It is easy to use and enjoy hassle free with pen and paper.

Jan 18, 2022

The lightweight library for compress image, video, and audio with an awesome experience

The lightweight library for compress image, video, and audio with an awesome experience

Would you like to support me? react-native-compressor Compress videos, images and audio before upload react-native-compressor package is a set of func

Jan 1, 2023

MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab changing, and more. You can enjoy a smooth transition from legacy native code to Flutter with it.

MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab changing, and more. You can enjoy a smooth transition from legacy native code to Flutter with it.

中文 README MixStack MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab

Dec 19, 2022

AES-GCM encryption/decryption for React Native

react-native-aes-gcm-crypto AES-GCM encryption/decryption for React Native Requirements iOS = 13.0 Android = 26 Installation npm install react-nativ

Dec 2, 2022

A React Native project starter with Typescript, a theme provider with hook to easy styling component, a folder architecture ready and some configs to keep a codebase clean.

React Native Boilerplate Folder structure : src ├── assets │   ├── audios │   ├── fonts │   ├── icons │   └── images ├── components │   ├── Layout.tsx

Sep 1, 2022

Lightweight React Native UI Components inspired on Vant

vant-react-native Install yarn add vant-react-native Or npm install vant-react-native Usage import React, { Component } from 'react'; import { View, T

Sep 29, 2022

Admob for React Native with powerful hooks and components

React Native Admob ⚠️ Please note, this package is under active development, which means it may be not stable to apply on production. Please use this

Jan 6, 2023

React Native wrapper around Indy SDK Java and Objective-C wrappers.

React Native Indy SDK React Native Indy SDK wrapper. Installation with npm: $ npm install indy-sdk-react-native --save with Yarn: $ yarn add indy-sdk-

Dec 5, 2022
Comments
  • Upgrade to Expo SDK 45

    Upgrade to Expo SDK 45

    This PR includes only necessary changes to build and run this on SDK 45. There are still some minor things to fix, but I'll do this separately when I have time.

    I'm impressed with how much code I could get rid of after performing this upgrade (+3231 / -16353) 🎉

    opened by barthap 0
  • chore: Update to Expo SDK 43

    chore: Update to Expo SDK 43

    Closes #1

    SDK 43 has been released.

    • Updated dependencies - ran expo upgrade
    • Deleted custom prebuild template - it's no longer needed
    • Got rid of no longer needed patches, including expo-gl and AppDelegate
    • Patched react-native-ble-plx for Xcode 13 / iOS 15 - https://github.com/dotintent/react-native-ble-plx/issues/899
    • Updated README
    opened by barthap 0
  • Fix colour picker for Android

    Fix colour picker for Android

    Fix colour picker screen using new 'Gesture' and 'GestureDetector' from RNGH2. Note that ColourWheel disappears when navigate away and back again for some reason.

    opened by nicredshaw 0
  • [Android] Fix Reanimated/GL color picker, update RNGH

    [Android] Fix Reanimated/GL color picker, update RNGH

    • The picker is not working on Android
    • The react-native-gesture-handler displays a warning about using the old API. Need to migrate it to use the new one
    opened by barthap 3
Owner
Bartłomiej Klocek
Bartłomiej Klocek
An IDE built specifically for Modding Minecraft Java Edition, containing many useful features that will be helpful for modders.

Modding-IDE An IDE built specifically for Modding Minecraft Java Edition, containing many useful features that will be helpful for modders. Trello: ht

null 11 Jul 16, 2022
Android Resource Manager application to manage and analysis your app resources with many features like image resize, Color, Dimens and code Analysis

AndroidResourceManager Cross-Platform tools to manage your resources as an Android Developer, AndroidResourceManager - ARM provide five main services

Amr Hesham 26 Nov 16, 2022
An IDE built specifically for Modding Minecraft Java Edition, containing many useful features that will be helpful for modders.

Railroad IDE Railroad IDE is an IDE that is made specifically for Minecraft Development including Forge Mods, and Fabric Mods! This IDE is made to hel

null 25 Dec 8, 2022
Lobby System Template for a multiplayer java game, with chat and other features, using JavaFX and socket TCP (will be extended to UDP).

JavaFX-MultiplayerLobbySystem JavaFX lobby system for multiplayer games with chat, ready toggle and kick buttons, using socket TCP by default. Demo Cr

Michele Righi 7 May 8, 2022
A maven plugin to include features from jmeter-plugins.org for JMeterPluginsCMD Command Line Tool to create graphs, export csv files from jmeter result files and Filter Result tool.

jmeter-graph-tool-maven-plugin A maven plugin to create graphs using the JMeter Plugins CMDRunner from JMeter result files (*.jtl or *.csv) or using F

Vincent DABURON 6 Nov 3, 2022
Provides lobby features for mc servers running BedWars1058 in bungee mode.

BedWarsProxy is a plugin for Bungeecord networks that are running BedWars1058 in BUNGEE mode. This plugin provides features for lobby servers: join gu

Andrei Dascălu 18 Dec 26, 2022
🌄 Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

React Native Photo Editor (RNPE) ?? Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and Ph

Baron Ha. 243 Jan 4, 2023
An awesome native wheel picker component for React Native.

⛏️ react-native-picky An awesome native wheel picker component for react-native. Features Supports multiple columns ✅ Supports looping ✅ Native Androi

null 28 Dec 4, 2022
Sceneform React Native AR Component using ARCore and Google Filament as 3D engine. This the Sceneform Maintained Component for React Native

Discord Server Join us on Discord if you need a hand or just want to talk about Sceneform and AR. Features Remote and local assets Augmented Faces Clo

SceneView Open Community 42 Dec 17, 2022
With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any other file server

React Native In-App update With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any o

Nepein Andrey 7 Dec 21, 2022