I can answer this question cause this is actually my area of specialization .
To answer your question, it depends on what kind of App it is, but for majority of Apps, even a Shared Hosting platform will do.
It started as a mobile PIN sharing App for BlackBerry Messenger back when BlackBerry was popular. So it was a basic Social Network with just CRUD operations.
I hosted it on a 2GB HDD and 2GB Bandwidth Shared Hosting plan, and it was fine for about a year.
After a year, the user base grew and I started running out of bandwidth, so I upgraded to a 6GB HDD and 20GB Bandwidth plan. But at this time the growth was a lot faster so within 2-3 months, I started running out of Bandwidth again plus HDD this time.
I then realized it would cost me too much to keep upgrading my hosting plan since the App was 100% free.
So I migrated to Hostgator and used their Baby Plan with Unlimited SSD and Bandwidth. This served the App for years. The Bandwidth growth peaked at 500GB/Month.
Eventually BlackBerry died out and I had to rebuild the App for Android. But I had to step up the App due to competition. So I decided to Add the ability for users to Chat with Each other in App instead of on BBM.
At first, I used QuickBlox to handle Instant Messaging but due to the BB user base that still had my App, I was quickly running out of the free plan. Plus the messaging was not reliable.
That was when I decided to learn NodeJS and manually build a basic Chat Server from scratch that would focus more on reliability. I also realized I could not run a NodeJS App on Hostgator Shared Hosting plan or even most other Shared Hosting company.
And then VPS entered into the game. I got a $5 server from Digital Ocean. Was forced to learn some basic Server Administration just so I can setup all required servers (Apache/Nginx, MySQL, VS-FTP, Postfix etc). I was then able to run my NodeJS Chat server and that's where the App resides till this day.
So as you can see, for an App of that size, even a $5 VPS with 1GB RAM has been working perfectly fine. RAM usage is usually at 700-800MB. And 1GB in SWAP. (I have not had the time to optimize this server well).
Who knows, probably if I decide to add inApp Video Calls and I decide to develop the Media server locally, I might upgrade to a Dedicated Server.