8
igoro00
3y

So I made an update to my React Native app. I changed UI of a couple of screen, added a few animations here and there, refactored how my graphQL resolvers work in the backend(no breaking changes), changed how data gets loaded into the database etc.

It worked in dev so I figured hey let's deploy it. Today is(was because it's now 3am but more on that later) a national holiday so no one goes to work so no one will use my app so I have an entire day to deploy.

I started at 15:00(because i woke up at 13:00 lol). I tested the update once again in dev and proceeded to deploy it to prod. I merged backend to master, built docker images, did migrations on the db, restarted docker-compose with new images. And now for the app. I run ./gradlew assembleRelease and it starts complaining that react-native-gesture-handler is not installed. Ugh, rm -rf node_modules && yarn install. It worked. But now gradlew crashes and logs don't tell me anything. Google tells me to change a bunch of gradle settings but none of them work. Fast forward 5h, it's around 20:00 and I isolated the issue to, again, react-native-gesture-handler. They updated from 2.2.4 to 2.3.0 which didn't fucking compile. 2 more hours passed (now 22:00) and I got v2.3.1 working which fixed the problem in 2.3.0 but made my app crash on startup. YOUR FUCKING LIBRARY GETS 250K WEEKLY DOWNLOADS AND YOU DONT EVEN BOTHER CHECKING IF IT COMPILES IN PROD ON ANDROID?! WHAT THE FUCK software-mansion?

After I solved that, my app didn't crash. Now it threw an error "Type errors: Network Request Failed" every time I fetch my legacy REST API(older parts use rest and newer use graphql. I'll refactor that in the next update). I'll spare you the debugging hell i went through but another 5h passed. Its 3am. My config had misspelled url to prod but good for dev... I hate myself and even more so react-native-gesture-handler.

Comments
  • 2
    Oh and btw, people came to work at 6am and still had problems because I was too sleep deprived to test everything again in production
  • 2
    Ah, classic react-native-reanimated. Gotta check those dependencies before release! Because that should be OUR job in addition to writing the UI, API, database procedures, batch jobs, and more! Amirite?
  • 0
    @fullstackchris you don't even read the source code of every library before every release? Pffff amateur, what do we (not) pay you for?

    Oh and yes, it was reanimated that didn't compile, gesture-handler just didn't want to get imported. They say on Github it's because expo 43 doesn't support something they rely on and it should be there in expo 44. Well 1. I'm using bare workflow, you shouldn't care about expo. 2. If you depend on expo and it doesn't work with the newest expo version yet then why the fuck did you release that?!
Add Comment