react-native/Examples/UIExplorer
Frédéric Sagnes 4a3857ef1d Use JSStringCreateWithUTF8CString and skip NSString decoding when loading the bundle
Summary: public

Benchmarking our startup path has shown we spend a lot of time decoding strings (iPhone 4S / iPhone 5):

* reading a 2MB JS bundle: 35ms / 15ms
* decoding is to an `NSString`: 186ms / 78ms
* transforming that to a `JSString`: 29ms / 10ms

Instead of going through an `NSString` transformation, we generate a null-terminated bundle (0.1ms / 0.05ms to copy the data) and use `JSStringCreateWithUTF8CString` (121ms / 53ms) to generate the string. That makes decoding 70% faster.

Reviewed By: javache

Differential Revision: D2541140

fb-gh-sync-id: 09a016b8edfd46a9b62682c76705564d2024e75e
2015-10-16 08:11:25 -07:00
..
AnimatedGratuitousApp [RN] New AnimationExample 2015-09-03 12:52:56 -08:00
Navigator Fix 16 linter warnings in Examples/ 2015-10-16 04:03:23 -07:00
UIExplorer Fix command to re-generate the static bundle in Examples 2015-10-16 03:41:02 -07:00
UIExplorer.xcodeproj Allow image extensions when loading from asset catalogs 2015-10-09 07:55:26 -07:00
UIExplorerIntegrationTests De-batch native->js calls and react updates 2015-10-13 06:44:25 -07:00
UIExplorerUnitTests Use JSStringCreateWithUTF8CString and skip NSString decoding when loading the bundle 2015-10-16 08:11:25 -07:00
android/app Make Android examples depend on source again 2015-10-14 07:48:25 -07:00
AccessibilityAndroidExample.android.js Release React Native for Android 2015-09-14 18:13:39 +01:00
AccessibilityIOSExample.js Fix 16 linter warnings in Examples/ 2015-10-16 04:03:23 -07:00
ActionSheetIOSExample.js Fix 16 linter warnings in Examples/ 2015-10-16 04:03:23 -07:00
ActivityIndicatorIOSExample.js [Flow] Properly fix new errors as of Flow v0.10. 2015-04-27 14:56:21 -08:00
AdSupportIOSExample.js [ReactNative] expose missing haste modules through 'react-native' node module 2015-06-30 18:57:26 -08:00
AlertIOSExample.js [ReactNative] Add prompt to AlertIOS 2015-05-13 13:24:36 -07:00
AnimatedExample.js [RN] New AnimationExample 2015-09-03 12:52:56 -08:00
AppStateIOSExample.js Fix 16 linter warnings in Examples/ 2015-10-16 04:03:23 -07:00
AssetScaledImageExample.js [Image] Improved loading of Assets Library and Photos Framework images. 2015-07-21 05:32:48 -08:00
AsyncStorageExample.js [Async] Enable async/await and update UIExplorer and tests 2015-08-04 05:35:13 -08:00
BorderExample.js Move color processing to JS 2015-09-17 17:20:45 -07:00
CameraRollExample.ios.js [Image] Improved loading of Assets Library and Photos Framework images. 2015-07-21 05:32:48 -08:00
CameraRollView.ios.js [CameraRoll] support fetching videos from the camera roll 2015-06-01 15:57:32 -08:00
DatePickerIOSExample.js [Flow] Fix or suppress errors in react-native for Flow v0.13.0 2015-06-22 09:48:15 -08:00
ExampleTypes.js React native fixups 2015-09-18 10:36:24 -07:00
GeolocationExample.js [ReactNative] Replace console.error with alert on UIExplorer Geolocation example 2015-06-09 17:03:29 -08:00
ImageCapInsetsExample.js [React Native] Sync from github 2015-03-27 22:09:11 -08:00
ImageEditingExample.js [React Native] open source ImageEditingManager native module 2015-07-29 15:57:48 -08:00
ImageExample.js enabled border width and border color (sync diff) 2015-09-30 21:02:56 -07:00
LayoutEventsExample.js Better text descriptions for examples 2015-09-15 14:55:27 -07:00
LayoutExample.js Migrate unit tests from FBReactKitModules to FBReactKit 2015-07-07 16:39:35 -08:00
ListViewExample.js - [react-packager] Switch from Q to Bluebird as promises library | Pilwon Huh 2015-03-31 22:48:18 -07:00
ListViewGridLayoutExample.js Add ListView Grid Layout Example to UIExplorer Examples 2015-07-16 06:02:15 -08:00
ListViewPagingExample.js [Animated][BREAKING_CHANGE] Convert <TouchableOpacity> to Animated 2015-07-20 16:44:36 -08:00
MapViewExample.js [ReactNative] expose missing haste modules through 'react-native' node module 2015-06-30 18:57:26 -08:00
ModalExample.js Enable transparent modal presentation with <Modal /> 2015-08-14 04:47:12 -08:00
NavigatorIOSColorsExample.js Fix one warning 2015-09-30 21:02:25 -07:00
NavigatorIOSExample.js [Nav] Add support for bar button icons and left buttons 2015-05-07 08:03:21 -08:00
NetInfoExample.js [react_native] Implement connectivity module 2015-06-02 05:41:16 -08:00
PanResponderExample.js PanResponderExample fix for responding to events 2015-10-09 17:31:25 -07:00
PickerIOSExample.js [Flow] Fix or suppress errors in react-native for Flow v0.13.0 2015-06-22 09:48:15 -08:00
PointerEventsExample.js Better text descriptions for examples 2015-09-15 14:55:27 -07:00
ProgressBarAndroidExample.android.js Release React Native for Android 2015-09-14 18:13:39 +01:00
ProgressViewIOSExample.js [Flow] Fix or suppress errors in react-native for Flow v0.13.0 2015-06-22 09:48:15 -08:00
PushNotificationIOSExample.js Updates from Wed 1 Apr 2015-04-01 18:37:03 -07:00
README.md Add docs for examples 2015-10-12 16:16:39 +01:00
ScrollViewExample.js Fixes #3060 2015-10-02 14:32:23 -07:00
ScrollViewSimpleExample.js Get back 100% in sync with fb codebase 2015-09-16 10:30:53 -07:00
SegmentedControlIOSExample.js Update SegmentedControlIOSExample.js 2015-07-08 12:52:04 -08:00
SliderIOSExample.js [React Native] Sync from github 2015-03-27 22:09:11 -08:00
StatusBarIOSExample.js [StatusBar] Add ability to toggle the network activity indicator in the status bar + example in UIExplorer 2015-07-23 16:22:56 -08:00
SwitchAndroidExample.android.js Fix 16 linter warnings in Examples/ 2015-10-16 04:03:23 -07:00
SwitchIOSExample.js Fix 16 linter warnings in Examples/ 2015-10-16 04:03:23 -07:00
TabBarIOSExample.js Managed assets support for RCTConvert 2015-09-29 09:21:39 -07:00
TextExample.android.js Fix background color issue 2015-09-29 09:22:19 -07:00
TextExample.ios.js Implemented inline image support for <Text> 2015-10-08 11:56:25 -07:00
TextInputExample.android.js Log React warnings internally, fix warnings in Android tests 2015-10-09 09:33:24 -07:00
TextInputExample.ios.js [SyncDiff] [react_native] Revamp text input example for oss 2015-08-22 14:23:30 -08:00
TimerExample.js Fix 16 linter warnings in Examples/ 2015-10-16 04:03:23 -07:00
ToastAndroidExample.android.js Update ToastAndroidExample.android.js 2015-10-12 10:16:27 -07:00
ToolbarAndroidExample.android.js add remote image support to toolbar 2015-09-30 09:21:27 -07:00
TouchableExample.js Better text descriptions for examples 2015-09-15 14:55:27 -07:00
TransformExample.js [transform] add perspective property to transform 2015-07-15 08:08:29 -08:00
UIExplorerApp.android.js Release React Native for Android 2015-09-14 18:13:39 +01:00
UIExplorerApp.ios.js [react_native] Refactor UIExplorerList to fix UIExplorerApp 2015-07-23 06:58:18 -08:00
UIExplorerBlock.js Fixed text background color 2015-05-28 09:31:57 -08:00
UIExplorerButton.js Add Timer example 2015-09-11 02:00:31 -07:00
UIExplorerList.android.js Open source ViewPagerAndroid 2015-10-06 20:01:21 -07:00
UIExplorerList.ios.js Move SnapshotView to SnapshotViewIOS and create an unimplemented android version 2015-10-13 11:48:38 -07:00
UIExplorerListBase.js [react_native] Refactor UIExplorerList to fix UIExplorerApp 2015-07-23 06:58:18 -08:00
UIExplorerPage.js [React Native] Fix padding in UIExplorer 2015-07-03 02:24:56 -08:00
UIExplorerTitle.js [React Native] Fix padding in UIExplorer 2015-07-03 02:24:56 -08:00
VibrationIOSExample.js [React Native] Sync from github 2015-03-27 22:09:11 -08:00
ViewExample.js Better text descriptions for examples 2015-09-15 14:55:27 -07:00
ViewPagerAndroidExample.android.js Open source ViewPagerAndroid 2015-10-06 20:01:21 -07:00
WebViewExample.js Fixed WebView example 2015-08-27 14:08:17 -08:00
XHRExample.android.js Get back 100% in sync with fb codebase 2015-09-16 10:30:53 -07:00
XHRExample.ios.js Added logic to detect text encoding for downloaded data 2015-09-16 10:25:06 -07:00
bunny.png add remote image support to toolbar 2015-09-30 09:21:27 -07:00
createExamplePage.js [ReactNative][SyncDiff] Add option to make examples platform specific 2015-09-01 04:56:05 -08:00
flux@3x.png Managed assets support for RCTConvert 2015-09-29 09:21:39 -07:00
hawk.png add remote image support to toolbar 2015-09-30 09:21:27 -07:00

README.md

UIExplorer

The UIExplorer is a sample app that showcases React Native views and modules.

Running this app

Before running the app, make sure you ran:

cd react-native
npm install

Running on iOS

Mac OS and Xcode are required.

  • Open Examples/UIExplorer/UIExplorer.xcodeproj in Xcode
  • Hit the Run button

See Running on device if you want to use a physical device.

Running on Android

You'll need to have all the prerequisites (SDK, NDK) for Building React Native installed.

Start an Android emulator (Genymotion is recommended).

cd react-native
./gradlew :Examples:UIExplorer:android:app:installDebug
./packager/packager.sh

Note: Building for the first time can take a while.

Open the UIExplorer app in your emulator.

See Running on Device in case you want to use a physical device.

Built from source

Building the app on both iOS and Android means building the React Native framework from source. This way you're running the latest native and JS code the way you see it in your clone of the github repo.

This is different from apps created using react-native init which have a dependency on a specific version of React Native JS and native code, declared in a package.json file (and build.gradle for Android apps).