I will not do what classic articles do, like what is Vercel just google it guys, the most important thing for me is to give you my feedback about Vercel and hopefully, someone from Vercel team could answer my dark side points.
So I work with Vercel for 2 months now, I didn't really appreciate it as a tool since am into it is infrastructure more than the ready-to-go product but I found it useful in some cases and painful in others.
1- Vercel is easy to use and manipulate, any developer can link the repository to Vercel and here you go ( it supports Nextjs to the moon but also other frameworks)
2- Vercel has great documentation when it comes to features (‘not for the blackHoles’ xD) https://vercel.com/docs, it is one of the best pieces of documentation i ever saw
3- Vercel.json is a must to use because you can manage with an easy keyword the security headers or what to exclude from deployment, redirection, rewrites, cache ( kind of Nginx config 😅)….just anything you have in mind
4- A good support ⭐️ ⭐️ ⭐️ ⭐️
5- For a simple frontend project with NEXTJS, it will be my first choice
6- Fast Server response especially after the cold start, and yes there is a cold start, don’t ever forget that vercel is build based on a serverless solution
1- Cloning repository take sometimes more than 15 minutes when the repository size is just 10.2 MB ( I doubt also bitbucket website, it may have an issue but still not the first time to see this latency )
Update 22/04/2021: seems like after a vercel member read this, the cloning step now doesn’t pass 2sec 😄
2- This a limit AWS lambda but i will be considered as a Vercel limit also, you have a limit of 4kb when it comes to the environment’s variables total size, which means if you have a JSON, it is almost impossible to do it
Workaround for JSON problem:
a- Host your secret file in secret manager and call it in your code
b- You need to encrypt and decrypt the .json file in the code
c- Encrypt just sensitive part of the JSON file like a private key ( i don’t recommend it)
3- No support for the multi-environment you have only a development and production ( preview are not considered as environment)
Workaround for Multi env problem:
All we did is linking the same repository many times to many projects and assign every project to a branch for example
Link repoX to project and we named reposX-dev which is assigned to dev branch
4- After doing the above workaround for multi-environment, every push on a specific branch will trigger a preview deployment on every Vercel project assigned to the same repository which means many queued builds and a lot of wasting time.
Workaround for triggering problem:
We add a script that ignores the build step if the push is not on the specific branch, You can find an example here https://vercel.com/support/articles/how-do-i-use-the-ignored-build-step-field-on-vercel
5- Even with the workaround Vercel will trigger every project assigned to the branch and in the cloning step it will notice the ignore build step script, so not bad but if every cloning step takes 15 minutes …..
6- Payload is limited to 5MB
7- Sometimes and with no explaining reason, you need to delete the link between the repository and Vercel because it stops working.
Another issue, once Vercel rejects the commit of a developer in our Vercel team saying it is not a team member when he is so deleting and re-adding the developer to our team on vercel was the solution 😧,
Finally, the problem was deploying to production URL stopped once with no reason ( it was working) but suddenly no updates were pushed to this URL and as usual, I deleted the URL config in Vercel and re-add it
One last thing this error comes from nowhere sometimes even though we don't use any submodules
error: Server does not allow request for unadvertised object 2ba5281051c3a26430aff07147644556fcc732f9
In the conclusion, I am not here to say vercel is good or bad because in the IT world there is no good or bad tool or trending tool , there is a tool that fit my needs
Excuse my English
Peace from Tunisia ✌️