SDK Version: 42
Platforms(Android/iOS/web/all): Android & iOS
I’m using EAS and SDK 42. And I got this problem with my Assets not loading when not online. On Android Vector Icons do not show when offline. And on iPhone it just hangs on AppLoading.
Is there any changes in AppLoading or any caching that has changed?
It seems like assets or some assets are not cached anymore and makes this thing happen.
And being able to work offline is pretty crucial for the app.
App.js goes here:
import AppLoading from 'expo-app-loading';
import * as SplashScreen from 'expo-splash-screen';
import { Asset } from 'expo-asset';
import * as Font from 'expo-font';
import React, { useState } from 'react';
import { StyleSheet, View, Text, Platform, } from 'react-native';
import { StatusBar } from 'expo-status-bar';
import { Ionicons, MaterialIcons, FontAwesome, MaterialCommunityIcons, Foundation } from '@expo/vector-icons';
import AppNavigator from './navigation/AppNavigator';
import Routes from './assets/data/data.json';
import { AppearanceProvider, Appearance } from 'react-native-appearance';
import * as Localization from 'expo-localization';
import i18n from 'i18n-js';
import Translations from './assets/data/translations.json';
export default function App(props) {
Text.defaultProps = Text.defaultProps || {};
Text.defaultProps.allowFontScaling = false;
Text.defaultProps.style = {fontFamily: 'montserrat-regular'};
const [isLoadingComplete, setLoadingComplete] = useState(false);
i18n.translations = Translations;
i18n.locale = Localization.locale;
i18n.fallbacks = true;
if (!isLoadingComplete && !props.skipLoadingScreen) {
return (
<AppearanceProvider>
<AppLoading
startAsync={loadResourcesAsync}
onError={handleLoadingError}
onFinish={() => handleFinishLoading(setLoadingComplete)}
/>
</AppearanceProvider>
);
} else {
return (
<AppearanceProvider>
<View style={styles.container}>
<StatusBar
// style= {'light'}
style= {Appearance.getColorScheme() === 'dark' ? 'dark' : 'light'}
hidden={false}
animated={false}
networkActivityIndicatorVisible={true}
// backgroundColor = {Appearance.getColorScheme() === 'dark' ? '#333' : 'black'}
translucent={true}
/>
<AppNavigator />
</View>
</AppearanceProvider>
);
}
}
async function loadResourcesAsync() {
await Promise.all([
Asset.loadAsync([
require('./assets/images/splash.png'),
require('./assets/images/splash-dark.png'),
require('./assets/images/icon.png'),
require('./assets/images/icon-adaptive.png'),
require('./assets/images/vegan.png'),
require('./assets/images/vegetarian.png'),
require('./assets/images/vegetarian-dark.png'),
require('./assets/images/cauldron.png'),
require('./assets/images/cauldron-dark.png'),
require('./assets/images/tabacos.png'),
require('./assets/images/tabacos-lightgray.png'),
require('./assets/images/qr-400.png'),
// require('./assets/images/yellow.png'),
// require('./assets/images/loading.gif'),
]),
Font.loadAsync({
...Ionicons.font,
...MaterialIcons.font,
...FontAwesome.font,
...MaterialCommunityIcons.font,
...Foundation.font,
'montserrat-regular': require('./assets/fonts/Montserrat-Regular.ttf'),
'montserrat-bold': require('./assets/fonts/Montserrat-Bold.ttf'),
'montserrat-black': require('./assets/fonts/Montserrat-Black.ttf'),
}),
]);
}
function handleLoadingError(error) {
console.warn(error);
}
function handleFinishLoading(setLoadingComplete) {
setLoadingComplete(true);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: Appearance.getColorScheme() === 'dark' ? 'black' : 'white',
},
});