From 0b3edf69c6d21b84cf33ffd51d2d9e68df3fd657 Mon Sep 17 00:00:00 2001 From: ANKIT JAISWAL Date: Mon, 9 Mar 2026 15:00:00 +0530 Subject: [PATCH 1/5] Updated to new arch --- android/build.gradle | 28 +++--- .../quickfirebase/QuickFirebasePackage.java | 44 ++++++--- .../gds/quickfirebase/RNQuickFirebase.java | 73 ++++++++------- index.js | 49 ++-------- ios/RNQuickFirebase.h | 14 +-- ios/RNQuickFirebase.m | 89 ------------------- ios/RNQuickFirebase.podspec | 10 ++- package.json | 16 +++- 8 files changed, 118 insertions(+), 205 deletions(-) delete mode 100644 ios/RNQuickFirebase.m diff --git a/android/build.gradle b/android/build.gradle index 66c9bf2..7d2f3fe 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,3 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - buildscript { repositories { google() @@ -7,28 +5,29 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.5.4' + classpath 'com.android.tools.build:gradle:8.1.0' } } apply plugin: 'com.android.library' -def DEFAULT_TARGET_SDK_VERSION = 33 +def DEFAULT_COMPILE_SDK_VERSION = 34 +def DEFAULT_MIN_SDK_VERSION = 23 +def DEFAULT_TARGET_SDK_VERSION = 34 def DEFAULT_FIREBASE_BOM_VERSION = "32.7.2" -def DEFAULT_SUPPORT_LIB_VERSION = "34.0.0" - - android { + compileSdkVersion rootProject.hasProperty('compileSdkVersion') ? rootProject.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION + defaultConfig { - minSdkVersion 23 + minSdkVersion rootProject.hasProperty('minSdkVersion') ? rootProject.minSdkVersion : DEFAULT_MIN_SDK_VERSION targetSdkVersion rootProject.hasProperty('targetSdkVersion') ? rootProject.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION - versionCode 1 - versionName "1.0" } + lintOptions { abortOnError false } + def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION if (agpVersion.tokenize('.')[0].toInteger() >= 7) { namespace "com.gds.quickfirebase" @@ -38,18 +37,15 @@ android { repositories { mavenLocal() maven { - // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$projectDir/../../../node_modules/react-native/android" } google() + mavenCentral() } dependencies { - //noinspection GradleCompatible - def firebaseBOMVersion = rootProject.hasProperty('firebaseBOMVersion') ? rootProject.firebaseBOMVersion : DEFAULT_FIREBASE_BOM_VERSION - def supportLibVersion = rootProject.hasProperty('supportLibVersion') ? rootProject.supportLibVersion : DEFAULT_SUPPORT_LIB_VERSION - implementation "com.android.support:appcompat-v7:$supportLibVersion" - implementation "com.facebook.react:react-native:+" + def firebaseBOMVersion = rootProject.hasProperty('firebaseBOMVersion') ? rootProject.firebaseBOMVersion : DEFAULT_FIREBASE_BOM_VERSION + implementation "com.facebook.react:react-android" implementation platform("com.google.firebase:firebase-bom:$firebaseBOMVersion") implementation "com.google.firebase:firebase-auth" implementation('com.google.firebase:firebase-analytics') { diff --git a/android/src/main/java/com/gds/quickfirebase/QuickFirebasePackage.java b/android/src/main/java/com/gds/quickfirebase/QuickFirebasePackage.java index dbf3880..97d47e0 100644 --- a/android/src/main/java/com/gds/quickfirebase/QuickFirebasePackage.java +++ b/android/src/main/java/com/gds/quickfirebase/QuickFirebasePackage.java @@ -1,25 +1,43 @@ package com.gds.quickfirebase; -import com.facebook.react.ReactPackage; -import com.facebook.react.bridge.JavaScriptModule; +import androidx.annotation.NonNull; + +import com.facebook.react.TurboReactPackage; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.uimanager.ViewManager; +import com.facebook.react.module.model.ReactModuleInfo; +import com.facebook.react.module.model.ReactModuleInfoProvider; + +import java.util.HashMap; +import java.util.Map; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +public class QuickFirebasePackage extends TurboReactPackage { -public class QuickFirebasePackage implements ReactPackage { @Override - public List createNativeModules(ReactApplicationContext reactContext) { - List modules = new ArrayList<>(); - modules.add(new RNQuickFirebase(reactContext)); - return modules; + public NativeModule getModule(@NonNull String name, @NonNull ReactApplicationContext reactContext) { + if (name.equals(RNQuickFirebase.NAME)) { + return new RNQuickFirebase(reactContext); + } + return null; } @Override - public List createViewManagers(ReactApplicationContext reactContext) { - return Collections.emptyList(); + public ReactModuleInfoProvider getReactModuleInfoProvider() { + return () -> { + final Map moduleInfos = new HashMap<>(); + moduleInfos.put( + RNQuickFirebase.NAME, + new ReactModuleInfo( + RNQuickFirebase.NAME, + RNQuickFirebase.class.getName(), + false, // canOverrideExistingModule + false, // needsEagerInit + false, // hasConstants + false, // isCxxModule + true // isTurboModule + ) + ); + return moduleInfos; + }; } } diff --git a/android/src/main/java/com/gds/quickfirebase/RNQuickFirebase.java b/android/src/main/java/com/gds/quickfirebase/RNQuickFirebase.java index eec4cfb..6fb3fa0 100644 --- a/android/src/main/java/com/gds/quickfirebase/RNQuickFirebase.java +++ b/android/src/main/java/com/gds/quickfirebase/RNQuickFirebase.java @@ -4,10 +4,10 @@ import androidx.annotation.NonNull; import android.os.Bundle; import android.text.TextUtils; + import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.module.annotations.ReactModule; @@ -24,40 +24,43 @@ import java.util.concurrent.TimeUnit; +// RNQuickFirebaseSpec is generated by Codegen from src/NativeRNQuickFirebase.ts +// It will be available after the first build of a consuming app with New Architecture enabled. @SuppressLint("MissingPermission") -@ReactModule(name = "RNQuickFirebase") -public class RNQuickFirebase extends ReactContextBaseJavaModule { +@ReactModule(name = RNQuickFirebase.NAME) +public class RNQuickFirebase extends NativeRNQuickFirebaseSpec { + public static final String NAME = "RNQuickFirebase"; - private ReactApplicationContext reactContext; + private final ReactApplicationContext reactContext; private FirebaseAuth mAuth; private FirebaseAnalytics firebaseAnalytics; private String mVerificationId; - private PhoneAuthProvider.ForceResendingToken mResendToken; - public RNQuickFirebase(ReactApplicationContext reactContext) { super(reactContext); this.reactContext = reactContext; mAuth = FirebaseAuth.getInstance(); firebaseAnalytics = FirebaseAnalytics.getInstance(reactContext); - } @Override + @NonNull public String getName() { - return "RNQuickFirebase"; + return NAME; } + @Override @ReactMethod - public void sendOTP(String phone, final Promise promise) { - PhoneAuthOptions phoneAuthOptions = new PhoneAuthOptions.Builder(mAuth).setPhoneNumber(phone) - .setTimeout(60L, TimeUnit.SECONDS).setActivity(reactContext.getCurrentActivity()) + public void sendOTP(String phone, Promise promise) { + PhoneAuthOptions phoneAuthOptions = new PhoneAuthOptions.Builder(mAuth) + .setPhoneNumber(phone) + .setTimeout(60L, TimeUnit.SECONDS) + .setActivity(reactContext.getCurrentActivity()) .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) { - } @Override @@ -75,52 +78,60 @@ public void onCodeSent(@NonNull String verificationId, @NonNull PhoneAuthProvide PhoneAuthProvider.verifyPhoneNumber(phoneAuthOptions); } + @Override @ReactMethod - public void validateOTP(String code,final Promise promise) { + public void validateOTP(String code, Promise promise) { if (!TextUtils.isEmpty(mVerificationId)) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, code); - mAuth.signInWithCredential(credential).addOnCompleteListener(reactContext.getCurrentActivity(), new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - FirebaseUser user = task.getResult().getUser(); - promise.resolve(user.getIdToken(false).getResult().getToken()); - } else { - promise.reject(task.getException()); - } - } - }); + mAuth.signInWithCredential(credential).addOnCompleteListener( + reactContext.getCurrentActivity(), + new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + FirebaseUser user = task.getResult().getUser(); + promise.resolve(user.getIdToken(false).getResult().getToken()); + } else { + promise.reject(task.getException()); + } + } + }); } else { - promise.reject("Please enter valid OTP"); + promise.reject("INVALID_OTP", "Please enter valid OTP"); } } + @Override @ReactMethod - public void signOut(final Promise promise) { + public void signOut(Promise promise) { try { mAuth.signOut(); promise.resolve(true); - }catch(Exception e){ - promise.reject("false"); + } catch (Exception e) { + promise.reject("SIGN_OUT_ERROR", e.getMessage()); } } + @Override @ReactMethod - public void setUserId(String id){ + public void setUserId(String id) { firebaseAnalytics.setUserId(id); } + @Override @ReactMethod public void setUserProperty(String name, String property) { firebaseAnalytics.setUserProperty(name, property); } + @Override @ReactMethod public void logEvent(String name, ReadableMap parameters) { - Bundle parmas = parameters!=null? Arguments.toBundle(parameters):null; - firebaseAnalytics.logEvent(name,parmas); + Bundle params = parameters != null ? Arguments.toBundle(parameters) : null; + firebaseAnalytics.logEvent(name, params); } + @Override @ReactMethod public void setAnalyticsEnabled(boolean enabled) { firebaseAnalytics.setAnalyticsCollectionEnabled(enabled); diff --git a/index.js b/index.js index d951913..90de4c0 100644 --- a/index.js +++ b/index.js @@ -1,47 +1,16 @@ -// -// Copyright © 2017-Present, Gaurav D. Sharma -// All rights reserved. -// 'use strict'; -import { NativeModules } from 'react-native'; -const bridge = NativeModules.RNQuickFirebase; +import { TurboModuleRegistry } from 'react-native'; -const sendOTP = (phone: string): Promise => { - return new Promise((resolve, reject) => - bridge - .sendOTP(phone) - .then(resolve) - .catch(reject) - ); -}; - -const validateOTP = (otp: string): Promise => { - return new Promise((resolve, reject) => - bridge - .validateOTP(otp) - .then(resolve) - .catch(reject) - ); -}; +const bridge = TurboModuleRegistry.getEnforcing('RNQuickFirebase'); +const sendOTP = (phone) => bridge.sendOTP(phone); +const validateOTP = (otp) => bridge.validateOTP(otp); const signOut = () => bridge.signOut(); - -// Firebase Analytics Methods -const setAnalyticsEnabled = (enabled: boolean) => { - return bridge.setAnalyticsEnabled(enabled) -}; -const setUserId = (id) => { - return bridge.setUserId(id) -}; - -const setUserProperty = (name, property) => { - return bridge.setUserProperty(name, property) -}; - -const logEvent = (name, params) =>{ - return bridge.logEvent(name, params) -}; +const setAnalyticsEnabled = (enabled) => bridge.setAnalyticsEnabled(enabled); +const setUserId = (id) => bridge.setUserId(id); +const setUserProperty = (name, property) => bridge.setUserProperty(name, property); +const logEvent = (name, params) => bridge.logEvent(name, params); module.exports = { sendOTP, @@ -50,5 +19,5 @@ module.exports = { setAnalyticsEnabled, setUserId, setUserProperty, - logEvent + logEvent, }; diff --git a/ios/RNQuickFirebase.h b/ios/RNQuickFirebase.h index 7c14124..57f70a9 100644 --- a/ios/RNQuickFirebase.h +++ b/ios/RNQuickFirebase.h @@ -3,14 +3,8 @@ // All rights reserved. // -#import -#if __has_include() - #import - #import - - @interface RNQuickFirebase : NSObject @end -#else - @interface RNQuickFirebase : NSObject @end -#endif - +#import +#import +@interface RNQuickFirebase : NSObject +@end diff --git a/ios/RNQuickFirebase.m b/ios/RNQuickFirebase.m deleted file mode 100644 index 9c628ca..0000000 --- a/ios/RNQuickFirebase.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// Copyright © 2017-Present, Gaurav D. Sharma -// All rights reserved. -// - -#import "RNQuickFirebase.h" -#import -#import - -#if __has_include() -#import - -@interface RNQuickFirebase() -@property (nonatomic, strong) NSString *verificationID; -@end - -@implementation RNQuickFirebase -RCT_EXPORT_MODULE(); - -RCT_EXPORT_METHOD(sendOTP:(NSString*)phone - resolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) { - [[FIRPhoneAuthProvider provider] verifyPhoneNumber:phone - UIDelegate:nil - completion:^(NSString * _Nullable verificationID, NSError * _Nullable error) { - NSLog(@"error %@, verificationID %@", error, verificationID); - if (!error && verificationID) { - self.verificationID = verificationID; - resolve(verificationID); - } else { - reject(error.localizedDescription, error.localizedDescription, error); - } - }]; -} - -RCT_EXPORT_METHOD(validateOTP:(NSString*)otp - resolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) { - FIRAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:self.verificationID - verificationCode:otp]; - [[FIRAuth auth] signInWithCredential:credential - completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { - if (error) { - reject(error.localizedDescription, error.localizedDescription, error); - } else { - [authResult.user getIDTokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error1) { - if (!error1 && token) { - resolve(token); - } else { - reject(error1.localizedDescription, error1.localizedDescription, error1); - } - }]; - } - }]; -} - -RCT_EXPORT_METHOD(signOut) { - NSError *signOutError; - BOOL status = [[FIRAuth auth] signOut:&signOutError]; - if (!status) { - NSLog(@"Error signing out: %@", signOutError); - return; - } -} - - -RCT_EXPORT_METHOD(setUserId:(NSString*) userId) { - [FIRAnalytics setUserID:userId]; -} - -RCT_EXPORT_METHOD(setUserProperty:(NSString*) name - property:(NSString*) property) { - [FIRAnalytics setUserPropertyString:property forName:name]; -} - -RCT_EXPORT_METHOD(logEvent:(NSString*) eventName - property:(NSDictionary*) data) { - [FIRAnalytics logEventWithName:eventName parameters:data]; -} - -RCT_EXPORT_METHOD(setAnalyticsEnabled:(BOOL) enable) { - [FIRAnalytics setAnalyticsCollectionEnabled:enable]; -} - -@end - -#else -@implementation RNQuickFirebase @end -#endif diff --git a/ios/RNQuickFirebase.podspec b/ios/RNQuickFirebase.podspec index ce95627..94601b5 100644 --- a/ios/RNQuickFirebase.podspec +++ b/ios/RNQuickFirebase.podspec @@ -13,12 +13,14 @@ Pod::Spec.new do |s| s.source = { :git => package['repository']['url'], :tag => s.version } s.requires_arc = true - s.platform = :ios, '9.0' + s.platform = :ios, '13.0' s.preserve_paths = 'LICENSE', 'README.md', 'package.json', 'index.js' - s.source_files = '*.{h,m}' + s.source_files = '*.{h,mm}' - s.dependency 'React' s.dependency 'Firebase/Core' s.dependency 'FirebaseAnalytics' -end \ No newline at end of file + s.dependency 'Firebase/Auth' + + install_modules_dependencies(s) +end diff --git a/package.json b/package.json index 2fa145f..f31d5df 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-quick-firebase", - "version": "1.1.4", + "version": "2.0.0", "author": "Gaurav D. Sharma ", "description": "Quick firebase integration with phone auth and analytics", "homepage": "https://github.com/dayitv89/react-native-quick-firebase", @@ -23,11 +23,23 @@ ], "files": [ "index.js", + "src/", "ios/", "android/" ], "peerDependencies": { "react": "*", - "react-native": "*" + "react-native": ">=0.71.0" + }, + "devDependencies": { + "typescript": "^5.0.0" + }, + "codegenConfig": { + "name": "RNQuickFirebaseSpec", + "type": "modules", + "jsSrcsDir": "./src", + "android": { + "javaPackageName": "com.gds.quickfirebase" + } } } From 442c00ea894e1c6bbaec7988fab1adee3aa6d936 Mon Sep 17 00:00:00 2001 From: ANKIT JAISWAL Date: Mon, 9 Mar 2026 15:00:10 +0530 Subject: [PATCH 2/5] Updated to new arch --- ios/RNQuickFirebase.mm | 97 ++++++++++++++++++++++++++++++++++++ src/NativeRNQuickFirebase.ts | 14 ++++++ tsconfig.json | 15 ++++++ 3 files changed, 126 insertions(+) create mode 100644 ios/RNQuickFirebase.mm create mode 100644 src/NativeRNQuickFirebase.ts create mode 100644 tsconfig.json diff --git a/ios/RNQuickFirebase.mm b/ios/RNQuickFirebase.mm new file mode 100644 index 0000000..1184d9b --- /dev/null +++ b/ios/RNQuickFirebase.mm @@ -0,0 +1,97 @@ +// +// Copyright © 2017-Present, Gaurav D. Sharma +// All rights reserved. +// + +#import "RNQuickFirebase.h" +#import +#import +#import +#import + +@interface RNQuickFirebase() +@property (nonatomic, strong) NSString *verificationID; +@end + +@implementation RNQuickFirebase + +RCT_EXPORT_MODULE(); + +- (void)sendOTP:(NSString *)phone + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject +{ + [[FIRPhoneAuthProvider provider] verifyPhoneNumber:phone + UIDelegate:nil + completion:^(NSString * _Nullable verificationID, NSError * _Nullable error) { + if (!error && verificationID) { + self.verificationID = verificationID; + resolve(verificationID); + } else { + reject(error.localizedDescription, error.localizedDescription, error); + } + }]; +} + +- (void)validateOTP:(NSString *)otp + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject +{ + FIRAuthCredential *credential = [[FIRPhoneAuthProvider provider] + credentialWithVerificationID:self.verificationID + verificationCode:otp]; + [[FIRAuth auth] signInWithCredential:credential + completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { + if (error) { + reject(error.localizedDescription, error.localizedDescription, error); + } else { + [authResult.user getIDTokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable tokenError) { + if (!tokenError && token) { + resolve(token); + } else { + reject(tokenError.localizedDescription, tokenError.localizedDescription, tokenError); + } + }]; + } + }]; +} + +- (void)signOut:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject +{ + NSError *signOutError; + BOOL status = [[FIRAuth auth] signOut:&signOutError]; + if (status) { + resolve(@(YES)); + } else { + reject(signOutError.localizedDescription, signOutError.localizedDescription, signOutError); + } +} + +- (void)setUserId:(NSString *)userId +{ + [FIRAnalytics setUserID:userId]; +} + +- (void)setUserProperty:(NSString *)name property:(NSString *)property +{ + [FIRAnalytics setUserPropertyString:property forName:name]; +} + +- (void)logEvent:(NSString *)eventName params:(NSDictionary *)data +{ + [FIRAnalytics logEventWithName:eventName parameters:data]; +} + +- (void)setAnalyticsEnabled:(BOOL)enabled +{ + [FIRAnalytics setAnalyticsCollectionEnabled:enabled]; +} + +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params +{ + return std::make_shared(params); +} + +@end diff --git a/src/NativeRNQuickFirebase.ts b/src/NativeRNQuickFirebase.ts new file mode 100644 index 0000000..ef5c377 --- /dev/null +++ b/src/NativeRNQuickFirebase.ts @@ -0,0 +1,14 @@ +import type { TurboModule } from 'react-native'; +import { TurboModuleRegistry } from 'react-native'; + +export interface Spec extends TurboModule { + sendOTP(phone: string): Promise; + validateOTP(otp: string): Promise; + signOut(): Promise; + setAnalyticsEnabled(enabled: boolean): void; + setUserId(id: string): void; + setUserProperty(name: string, property: string): void; + logEvent(name: string, params: Object): void; +} + +export default TurboModuleRegistry.getEnforcing('RNQuickFirebase'); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f6f1c99 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "commonjs", + "lib": ["esnext"], + "allowJs": true, + "jsx": "react-native", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "baseUrl": "." + }, + "include": ["src", "index.js"] +} From 531c8bb68b3c2b44ce60e342c21fa4b6455f15d2 Mon Sep 17 00:00:00 2001 From: ANKIT JAISWAL Date: Mon, 9 Mar 2026 16:43:53 +0530 Subject: [PATCH 3/5] Updated to new arch --- RNQuickFirebase.podspec | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 RNQuickFirebase.podspec diff --git a/RNQuickFirebase.podspec b/RNQuickFirebase.podspec new file mode 100644 index 0000000..22c751d --- /dev/null +++ b/RNQuickFirebase.podspec @@ -0,0 +1,26 @@ +require 'json' + +package = JSON.parse(File.read('package.json')) + +Pod::Spec.new do |s| + s.name = 'RNQuickFirebase' + s.version = package['version'] + s.summary = package['description'] + s.description = package['description'] + s.license = package['license'] + s.author = package['author'] + s.homepage = package['homepage'] + s.source = { :git => package['repository']['url'], :tag => s.version } + + s.requires_arc = true + s.platform = :ios, '13.0' + + s.preserve_paths = 'LICENSE', 'README.md', 'package.json', 'index.js' + s.source_files = 'ios/*.{h,mm}' + + s.dependency 'Firebase/Core' + s.dependency 'FirebaseAnalytics' + s.dependency 'Firebase/Auth' + + install_modules_dependencies(s) +end From 1e22ebc33ebfb85747b79927334740c2ae961594 Mon Sep 17 00:00:00 2001 From: ANKIT JAISWAL Date: Tue, 10 Mar 2026 12:05:33 +0530 Subject: [PATCH 4/5] Added missing folder --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f31d5df..7793c2e 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,9 @@ "index.js", "src/", "ios/", - "android/" + "android/", + "RNQuickFirebase.podspec", + "tsconfig.json" ], "peerDependencies": { "react": "*", From c2708a1d5b60ea1172c05a7fbe3031d21fbe5cc9 Mon Sep 17 00:00:00 2001 From: ANKIT JAISWAL Date: Tue, 10 Mar 2026 13:18:34 +0530 Subject: [PATCH 5/5] fix: add com.facebook.react plugin for Android Codegen Made-with: Cursor --- android/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/android/build.gradle b/android/build.gradle index 7d2f3fe..ba2cc42 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -10,6 +10,7 @@ buildscript { } apply plugin: 'com.android.library' +apply plugin: 'com.facebook.react' def DEFAULT_COMPILE_SDK_VERSION = 34 def DEFAULT_MIN_SDK_VERSION = 23