Our team has embarked on a project leveraging serverless solutions like AWS Lambda and API Gateway, along with Auth0 for managing user authentication. At this point, we are exploring our options for the frontend and I am uncertain which route to take.
One option is to serve static content via S3 integrated with CloudFront while using plain JavaScript with fetch calls to interact with our APIs.
The alternative is to implement a modern frontend framework such as React or Angular, delivering it as a single-page application.
I find the S3 path appealing due to its simplicity and cost efficiency; however, I have concerns about how manageable it will be as our project scales. Has anyone faced similar choices before? What options would you suggest and why?
I would really appreciate any thoughts on performance, complexity in development, and long-term maintenance implications.
interesting dilemma! what’s your team’s skillset like? are your devs more comfy with vanilla js, or do they already know react/angular? also, what kind of user interactions are you plannig? that’ll help determine if the SPA complexity is worth it.
This sounds familiar! How complex is your UI? Are you building simple forms and dashboards, or something more interactive? Also, what’s your user base size? S3 + CloudFront scales great, but debugging vanilla JS gets messy fast. What’s your timeline?
I’ve used both approaches in serverless setups, and it really comes down to how complex your state management gets - not just what seems easier upfront. S3 static hosting works great for content-heavy apps or dashboards where users are mostly doing basic CRUD stuff. But once you’re dealing with complex form validation, real-time updates, or complicated user workflows, managing state across multiple vanilla JS files becomes a nightmare. For maintenance, modern frameworks give you way better error handling and debugging tools, especially when you’re working with Auth0 callbacks. Plus the build tools help optimize your bundles for CloudFront. I’d suggest starting with something lightweight like Vue.js - you get the component structure without Angular’s bloat, and it’s much easier to maintain than vanilla JS as your app grows.