Coder Social home page Coder Social logo

react-native-newrelic's Introduction

react-native-newrelic

New Relic event reporting for react native.

also check out https://github.com/wix/sentry-monitor

Features

  • overrideConsole will send all console.log, warn and errors to New Relic.
  • reportUncaughtExceptions will send uncaught Javascript exceptions to New Relic.

More to come!

Installation

Install react-native-newrelic

npm install react-native-newrelic --save

iOS

1. Install New RelicAgent in your project as a pod

In the Podfile for your project, add the following line: pod 'NewRelicAgent' Make sure Xcode is closed and run: pod install

2. Add the project to Xcode

In the project navigator:

  • Right click Libraries
  • Add Files to [your project's name]
  • Go to node_modules/react-native-newrelic
  • Add the .xcodeproj file In the project navigator, select your project.
  • Add the libRNNewRelic.a to your project's Build Phases ➜ Link Binary With Libraries
  • Click .xcodeproj file you added before in the project navigator and go the Build Settings tab. Make sure 'All' is toggled on (instead of 'Basic').

3. In your AppDelegate.m

Add the following:

-(void)setupNewRelic{
  NSString* token;
  if(isDebug) {
    token = @"<your new relic dev token (optional)>";
  } else {
    token = @"<your new relic production token";
  }
  [NewRelicAgent startWithApplicationToken:token];
}

And add the following line to the top of your didFinishLaunchingWithOptions function:

  [self setupNewRelic];

4. Add a prefix header to your iOS project

Add a PrefixHeader.pch file as explained here Your file should look like this:

#ifdef __OBJC__ 

#import <NewRelicAgent/NewRelic.h>

#endif

Android (gradle only)

1. Add NewRelic agent to your Android project

This link describes how to add the original NewRelic agent to your project. This guide only requires a part of the original steps (some of the steps are already integrated in react-native-newrelic:

In MainApplication.java import Newrelic and override the following method:

import com.newrelic.agent.android.NewRelic;

public class MainApplication extends Application implements ReactApplication {

...

public void onCreate() {
	super.onCreate();
	NewRelic.withApplicationToken("yourApplicationToken").start(this);
}

...

}

Create newrelic.properties in your root android dir:

com.newrelic.application_token= yourApplicationToken

Get your application token from newrelic.com

2. Add the react-native-newrelic module to your Android project

In settings.gradle:

include ':react-native-newrelic'
project(':react-native-newrelic').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-newrelic/android')

In your project level build.gradle:

dependencies {
	...
	classpath "com.newrelic.agent.android:agent-gradle-plugin:5.11.+"
	...
 }

In your app level build.gradle:

apply plugin: 'newrelic'


dependencies {
	...
	compile project(":react-native-newrelic")
	compile fileTree(dir: "node_modules/react-native-newrelic/android/libs", include: ["*.jar"])
	...
}

Add new RNNewRelicPackage() to your list of packages in getPackages() in MainApplication.java :

@Override
public List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(... new RNNewRelicPackage());
}

Configuration

Add the following to your app root (e.g. app.ios.js ):

import {default as newRelic} from 'react-native-newrelic';
newRelic.init({
  overrideConsole: true,
  reportUncaughtExceptions: true,
    globalAttributes: {
      'this-string': 'will be sent with every event that is being reported'
    }
});

Credits to @DanielZlotin for the initial version

react-native-newrelic's People

Contributors

danielzlotin avatar doronpr avatar guyca avatar jwarby avatar novotnej avatar rotemmiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-newrelic's Issues

Disable Feature Flag "URLSessionInstrumentation" on Android

I want to disable the feature flag "URLSessionInstrumentation". On iOS, I can accomplish this by adding the line
[NewRelic disableFeatures:NRFeatureFlag_NSURLSessionInstrumentation];
in the AppDelegate.m.

How do I do this on Android?

Edit: I want to disable the feature flag, because I must reduce the "x-php-ob-level" header from 3 to 2.

Setting up New Relic (iOS) - Not clear on AppDelegate.m 'setup'

Can you advise further based on the Readme instructions? Variables are not declared isDebug, NewRelicAgent?

 * Copyright (c) 2015-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

#import "AppDelegate.h"

#import "RCTBundleURLProvider.h"
#import "RCTRootView.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [self setupNewRelic];

  NSURL *jsCodeLocation;

  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"TestingNewRelic"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  return YES;
}

- (void)setupNewRelic{
  NSString* token;
  if(isDebug) { // Error for isDebug
    token = @"<your new relic dev token (optional)>";
  } else {
    token = @"<your new relic production token";
  }
  [NewRelicAgent startWithApplicationToken:token]; // Error for NewRelicAgent
}

@end```

Our installation process has changed, please see https://docs.newreli...

I'm trying to install this on iOS. I made sure everything is in order, but every time I try to build it fails.

It is failing due to some "user defined" error located in NewRelicAgent.h

#error "Our installation process has changed, please see https://docs.newrelic.com/docs/mobile-apps/ios-1-upgrade"

image

Cannot find Symbol new RNNewRelicPackage

After following your guidance i got this error when try to build my RN project:

s_rn/MainApplication.java:74: error: cannot find symbol
        new RNNewRelicPackage()

Please need your advice. Thanks

Android - Didn't find class "com.newrelic.agent.android.instrumentation.okhttp3.OkHttp3Instrumentation"

I have followed the installation instructions for Android to the letter and I receive the following crash report (ironically through New Relic) using the latest master branch code, react-native 0.42.0:

Didn't find class "com.newrelic.agent.android.instrumentation.okhttp3.OkHttp3Instrumentation" on path: DexPathList[[zip file "/data/app/com.spaces_whitelabel.mobile.peg-1/base.apk"],nativeLibraryDirectories=[/data/app/com.spaces_whitelabel.mobile.peg-1/lib/x86, /system/fake-libs, /data/app/com.spaces_whitelabel.mobile.peg-1/base.apk!/lib/x86, /system/lib, /vendor/lib]]

Do let me know if you need any more debug/project-specific information.

Many thanks

How to desymbolicate javascript? (Source-Maps)

Hey guys,

I'm already using new relic for a web app, and I'm currently trying to get Crash reports from my react-native mobile app..

I was able to install react-native-newrelic and see some crash reports, but the crash reports do not contain de-symbolicated info such as the javascript file that initiated the crash, or the line of code where the crash happened..

How do you guys deal with that? Do you see a fully functional stack-trace on your new-relic Crash reports dashboard? If so how?

Thank you.

iOS - NewRelic extension trying to call missing function "recordEven:attributes" from SDK.

When following installation instructions, the app fails to compile for iOS.
The SDK is missing the class method NewRelicAgent record:attributes

Do the installation steps need to be updated? Does a specific node module version need to match a specific NewRelicAgent pod version?

Line where build fails:

RCT_EXPORT_METHOD(send: (NSString*)name :(NSDictionary*)args){
  [NewRelicAgent recordEvent:name attributes:args];    //<-- This function does not exist.  Build Fails.
}

Entire source file:

//
//  RNNewRelic.m
//  RNNewRelic
//
//  Created by Daniel Zlotin on 26/04/2016.
//  Copyright © 2016 Wix.com. All rights reserved.
//

#import "RNNewRelic.h"

@implementation RNNewRelic

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(send: (NSString*)name :(NSDictionary*)args){
  [NewRelicAgent recordEvent:name attributes:args];    //<-- This function does not exist.  Build Fails.
}


RCT_EXPORT_METHOD(setAttribute: (NSString*)name: (NSString*)value){
  [NewRelicAgent setAttribute:name value:value];
}

// Logs a message to the native console
RCT_EXPORT_METHOD(nativeLog:(NSString *)msg){
  NSLog(@"%@", msg);
}

@end

Android build failed on react-native 0.54.2

Hey guys, I've just upgrade react-native to 0.54.2 and its giving me a compilation error on Android
This seems to be hapening on v1.1.1 of react-native-newrelic

RNUtils.java:43: error: incompatible types: ReadableArray cannot be converted to ReadableNativeArray hashMap.put(key, toArrayList(readableNativeMap.getArray(key)));

Code License

What is the license type for this code? It says MIT in your package.json file, but i don't see a license file. Just wanted to verify. Thanks!

iOS compile issues - 'NewRelicAgent/NewRelic.h' file not found

I am trying to add the new relic agent by following the instructions. I am not able to build the application as I am getting the below compile error in my project's prefix header file and in the RNNewRelic.xcodeproj file

"'NewRelicAgent/NewRelic.h' file not found"

image

Has anyone else faced this issue?

Error when upgrading to react-native 0.59

Hi, I am trying to upgrade to react-native 0.59.8
I am getting this error:

> Task :app:newRelicConfigDebug
[newrelic.error] Error encountered while configuring the New Relic agent
org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method execute() for arguments [] on task ':app:compileNewRelicConfigDebug' of type org.gradle.api.tasks.compile.JavaCompile.
        at org.gradle.internal.metaobject.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:179)
        at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:164)
        at org.gradle.api.tasks.compile.JavaCompile_Decorated.invokeMethod(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119)
        at com.newrelic.agent.android.NewRelicConfigTask.newRelicConfigTask(NewRelicConfigTask.groovy:45)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:48)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:704)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:671)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
        at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
        at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
        at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
        at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
        at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
        at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
        at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
        at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
        at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
        at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
        at java.util.Optional.orElseGet(Optional.java:267)
        at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
        at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
        at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
        at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
        at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
        at java.util.Optional.map(Optional.java:215)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
        at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
        at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
        at java.lang.Thread.run(Thread.java:745)

Please help

Wrong configuration on Android

I'm trying to figure out why the logs aren't being sent to New Relic dashboard. I followed all steps described in Readme

Friendly suggestion - try using rnpm

Hi,
If rnpm works for you, this might be a better thing to put on your readme (it's slowly becoming the standard for native linking in React Native).
Feel free to ask if you need some pointers there.

Logging Networking requests via new relic

From checking the new relic docs for android, it is possible to make use of both noticeHttpTransaction and noticeNetworkFailure to track network requests.

Unfortunately these methods are not exposed via react-native-newrelic.

Are these methods that this library would wish to expose via the JavaScript interface in react-native-newrelic? I envision this library exporting these logging methods, and allowing users to add an interceptor into their JavaScript networking library of choice - for example axios.

Or should this sort of logic be implemented natively? i.e. I believe react-native uses okhttp under the hood, and it could be configured with interceptors that directly call the new relic library. This may be the 'best' solution if we expect any overhead in adding the logging interceptors within the JavaScript side.

/cc @DanielZlotin It would be interesting to hear your thoughts on this; A PR can be whipped up if need be 👍

Can't configure iOS

In the iOS instructions it says:

Add the libRNNewRelic.a to your project's Build Phases ➜ Link Binary With Libraries

But where is the file?

Also, what should I do in that panel?

Click .xcodeproj file you added before in the project navigator and go the Build Settings tab. Make sure 'All' is toggled on (instead of 'Basic').

Then?

Am I missing something obvious?

Android build failed on react-native 0.47+

node_modules/react-native-newrelic/android/src/main/java/com/wix/rnnewrelic/RNNewRelicPackage.java:23: error: method does not override or implement a method from a supertype                 
    @Override                                              
    ^                                                      
1 error

Cannot compile (NewRelicAgent/NewRelic.h not found)

I suspect importing React line, because since some new react-native version, imports need to be in this style
#import <React/RCTBridgeModule.h>
instead of
#import "RCTBridgeModule.h"
which occurs in RNNewRelic.h file

It took a lot of time but I managed it to work. I skipped adding your RNNewRelic.xcproject and copied both RNNewRelic.h and .m in my file structure and changed that import line and I didn't import libRNNewRelic.a.

Looks like it works. I believe your readme file needs some improvement, I would be happy to help if you need some. Good job guys, you have my star.
trubi

Readme file typo

Section iOS -> Add the project to Xcode ->
Shouldn't be the name of the file libRNNewRelic.a instead of libRNDNewRelic.a ?

What's with the indentation?

lib/NewRelic.js has some of the oddest formatting I have ever seen. It looks minimized but I don't think it is. Is this the result of an IDE doing something strange?

Could not build module 'Darwin'

I followed the process mentioned in Github repo but upon creating the build I was getting the above-mentioned error and the build failed. Also, on Android, I followed the same set of steps but the events were not triggered as I couldn't see any data on new relic platform.

Please help me out.

Does not build on Android with buildToolsVersion 25

The latest Android Studio and Gradle require buildToolsVersion 25 and this library does not build with that version.

Scenario: A project is using this library as a dependency. The project updates to latest RN (0.47.2) as well as Android Studio 2.2.3. This library will prevent building the project because the buildToolsVersion is too low.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.