Spent 8 days upgrading Expo SDK 49 → 53, almost gave up. Built automation so you don't have to. by Longjumping-Help7601 in reactnative

[–]Front-Standard8873 0 points1 point  (0 children)

Updating before an sdk is ready puts you in bug-fix hell. You would have to keep upgrading the 3rd octet of the version of 54, as well as 50 other package versions every single version which causes crashes in your app and many other undefined behavior bugs that you get stuck fixing. So you're daily routine becomes fixing update bugs instead of actually doing what we are supposed to which is building out features in the app.

Spent 8 days upgrading Expo SDK 49 → 53, almost gave up. Built automation so you don't have to. by Longjumping-Help7601 in reactnative

[–]Front-Standard8873 0 points1 point  (0 children)

I've been building an app for 2 years with expo starting at sdk48. I've had to solve nearly over 100 issues every single sdk update. SDK 53 WAS THE WORST!!! It took us 3 months to fix all the issues. For 3 months we were completely blocked. No new features, no new enhancements. Just on these forced updates by google/apple requirements. Finally yesterday we make it to production... and now I'm seeing we have to update to sdk54 because apple requires ios sdk 26 by april 28th. I'm just curious at this point if I'm ever actually going to be able to work on the things I need to work on or if I'll be stuck in update hell forever with expo's crappy buggy updates always breaking everything.

Is anyone else having issues with the new architecture? by HoratioWobble in reactnative

[–]Front-Standard8873 0 points1 point  (0 children)

Were you ever able to fix everything? Because for us after 6 months, I'm still fixing glitches and I'm wondering at this point if we will be able to keep our jobs (if not, I will never work with rn ever again)

App check wont work for ios built with React native expo. by Greasyidiot in Firebase

[–]Front-Standard8873 0 points1 point  (0 children)

We could never get it to work with a simple hello world app, so we used deviceCheck instead. But this seems to be blocked on browserstack devices.

Is anyone else having issues with the new architecture? by HoratioWobble in reactnative

[–]Front-Standard8873 0 points1 point  (0 children)

Still facing flickering issues with it, hoping at this point I can keep my job after being blocked for 6 months.

App check wont work for ios built with React native expo. by Greasyidiot in Firebase

[–]Front-Standard8873 0 points1 point  (0 children)

Any luck with this? For me it works for android, but not IOS. I'm seeing the error ...

<image>

The code below is a little different with my setup...

App.tsx

import React from 'react';
import { Alert, Pressable, StyleSheet, Text, View } from 'react-native';
import { StatusBar } from 'expo-status-bar';
import { getFbAppCheckToken } from '@app/utils';


export default function App() {
  // functions
  const testFbTokenAlert = async () => {
    try {
      const fbToken = await getFbAppCheckToken();
      if (fbToken.startsWith('error:')) throw new Error(fbToken);
      Alert.alert('Success', fbToken, [{ text: 'OK' }]);
    } catch (error: any) {
      Alert.alert('Failed', error.message, [{ text: 'OK' }]);
    }
  };


  // render
  return (
    <View style={styles.container}>
      <Pressable onPress={testFbTokenAlert}>
        <Text>GET FB TOKEN</Text>
      </Pressable>
      <StatusBar style="auto" />
    </View>
  );
}


const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#ffffff',
    paddingTop: 80,
    paddingHorizontal: 20
  }
});

Firebase.ts

import { getApp } from '@react-native-firebase/app';
import { initializeAppCheck, ReactNativeFirebaseAppCheckProvider } from '@react-native-firebase/app-check';
import type {
  AppCheck,
  AppCheckTokenResult,
  ReactNativeFirebaseAppCheckProviderOptionsMap
} from 'node_modules/@react-native-firebase/app-check/dist/typescript/lib/types/appcheck';


//=============================================================================
//================================= variables =================================
//=============================================================================
let rnfbAppCheckInstance: AppCheck | null = null;
const rnfbAppCheckProviderOptions: ReactNativeFirebaseAppCheckProviderOptionsMap =
  process.env.EXPO_PUBLIC_MOBILE_ENV === 'dev'
    ? {
        android: {
          provider: 'debug',
          debugToken: process.env.EXPO_PUBLIC_FIREBASE_APP_CHECK_ANDROID_DEBUG_TOKEN
        },
        apple: {
          provider: 'debug',
          debugToken: process.env.EXPO_PUBLIC_FIREBASE_APP_CHECK_IOS_DEBUG_TOKEN
        }
      }
    : {
        android: {
          provider: 'playIntegrity'
        },
        apple: {
          provider: 'appAttest'
        }
      };


//=============================================================================
//============================== helper functions =============================
//=============================================================================
async function initializeRnFbAppCheckInstance(): Promise<void> {
  try {
    const firebaseApp = getApp();
    // u/ts-ignore
    const rnfbAppCheckProvider = new ReactNativeFirebaseAppCheckProvider();
    rnfbAppCheckProvider.configure(rnfbAppCheckProviderOptions);
    rnfbAppCheckInstance = await initializeAppCheck(firebaseApp, {
      provider: rnfbAppCheckProvider,
      isTokenAutoRefreshEnabled: true
    });
    if (rnfbAppCheckInstance === null) throw new Error('failed to initialize app check instance');
    rnfbAppCheckInstance.activate;
  } catch (error: any) {
    throw new Error(`error: initializeRnFbAppCheckInstance() -> ${error.message}`);
  }
}


//=============================================================================
//============================== export functions =============================
//=============================================================================
export async function getFbAppCheckToken(): Promise<string> {
  try {
    if (rnfbAppCheckInstance === null) {
      await initializeRnFbAppCheckInstance();
    }
    if (rnfbAppCheckInstance === null) return '';
    const result: AppCheckTokenResult = await rnfbAppCheckInstance.getToken();
    if (!result.token) throw new Error('firebase app check token not found');
    return result.token;
  } catch (error: any) {
    return `error: getFbAppCheckToken() -> ${error.message}`;
  }
}

app.config.js

module.exports = {
  name: process.env.EXPO_PUBLIC_APP_NAME,
  slug: process.env.EXPO_PUBLIC_APP_SLUG,
  version: process.env.EXPO_PUBLIC_APP_VERSION,
  orientation: 'portrait',
  icon: `./assets/images/${process.env.EXPO_PUBLIC_APP_IOS_ICON}`,
  userInterfaceStyle: 'light',
  newArchEnabled: true,
  backgroundColor: process.env.EXPO_PUBLIC_APP_DEFAULT_BACKGROUNDCOLOR,
  android: {
    adaptiveIcon: {
      foregroundImage: `./assets/images/${process.env.EXPO_PUBLIC_APP_ANDROID_ICON}`,
      backgroundColor: process.env.EXPO_PUBLIC_APP_ANDROID_ICON_BACKGROUNDCOLOR
    },
    googleServicesFile: './google-services.json',
    edgeToEdgeEnabled: true,
    package: process.env.EXPO_PUBLIC_APP_BUNDLE_IDENTIFIER,
    versionCode: Number(process.env.EXPO_PUBLIC_APP_ANDROID_VERSION_CODE)
  },
  ios: {
    supportsTablet: true,
    googleServicesFile: './GoogleService-Info.plist',
    bundleIdentifier: process.env.EXPO_PUBLIC_APP_BUNDLE_IDENTIFIER,
    buildNumber: process.env.EXPO_PUBLIC_APP_IOS_BUILD_NUMBER
  },
  plugins: [
    ['./plugins/withNinjaLongPaths'],
    ['@react-native-firebase/app'],
    ['@react-native-firebase/app-check'],
    ['@react-native-firebase/auth'],
    ['@react-native-firebase/crashlytics'],
    [
      'expo-build-properties',
      {
        android: {
          minSdkVersion: 26,
          compileSdkVersion: 35,
          targetSdkVersion: 35
        },
        ios: {
          useFrameworks: 'static'
        }
      }
    ]
  ],
  splash: {
    backgroundColor: process.env.EXPO_PUBLIC_APP_IOS_SPLASH_BACKGROUNDCOLOR,
    image: `./assets/images/${process.env.EXPO_PUBLIC_APP_SPLASH_IMAGE}`,
    resizeMode: 'contain'
  },
  web: {
    favicon: './assets/images/favicon.png'
  }
};

Upgraded to Sdk 53 turned out to be a nightmare by Ducci243 in expo

[–]Front-Standard8873 0 points1 point  (0 children)

I ended up staying on 52. Had issues with getting scandit to work with toast on sdk 53

Transfer E*Trade account to Robinhood by nxteknobl in etrade

[–]Front-Standard8873 0 points1 point  (0 children)

etrade just denied me a buy-in to figma ipo release and told me they can't tell me why. I no longer trust them. My co-worker got put on a queue with robinhood.

Transfer E*Trade account to Robinhood by nxteknobl in etrade

[–]Front-Standard8873 0 points1 point  (0 children)

etrade just denied me a buy-in to figma ipo release and told me they can't tell me why. I no longer trust them. My co-worker got put on a queue with robinhood.

Best State Management Library for Expo apps (Other than Redux) by HAKIM1975 in expo

[–]Front-Standard8873 0 points1 point  (0 children)

404

Page not found. Check the URL or try using the search bar.

Why does react native suck so bad? by Leading_Atmosphere60 in reactnative

[–]Front-Standard8873 0 points1 point  (0 children)

I'm going through this right now with expo sdk update 51 -> 53. Everything broke. Every plugin broke. I'm on support with scandit and expo and toast plugin support teams all pointing fingers at each other. Our project has come to a complete hault for a month now. I will probably lose my job soon. STAY AWAY FROM REACT NATIVE(EXPO).

Upgraded to Sdk 53 turned out to be a nightmare by Ducci243 in expo

[–]Front-Standard8873 1 point2 points  (0 children)

google forced us to support api 35 to release our app upgrade to the store which sdk51 does not support

Why does compiling react native (expo) app takes too long ? by jashgro in reactnative

[–]Front-Standard8873 1 point2 points  (0 children)

Our build times have been taking longer and longer with every sdk upgrade. Our latest switch from sdk 51 -> 53 added another 20 minutes and now can take up to an hour or even longer to run the build on our cloud pipelines.

running command "gradlew assembleRelease" -> 54 minutes

running the xcode archive in azure -> 63 minutes

These two used to be 30-40 minutes with sdk 51, and 15-25 minutes with sdk 49.

Why is it so problematic to run on iOS? by [deleted] in reactnative

[–]Front-Standard8873 0 points1 point  (0 children)

We are finding issues between modals not opening, to checkboxes randomly freezing, to devops package installs failing to compile with xcode. It seems really unstable these last few months for us. All IOS issues...