11 ms·
We switched from Next.js to Astro (and why it might interest you)
- ashrodan 2y agoThis is refreshing as I just built a website using astro with dato
- zoul 2y agoThe complexity fatigue is something that I can certainly relate to. Things like caching, request deduplication and incremental static regeneration across multiple pages can easily lead to site that’s harder to reason about than I would like.
- wetpaws 2y ago[dead]
- swyx 2y agothe technical blogpost i'm really waiting with bated breath for is "We switched from Next.js to Remix (and why)" from chatgpt.com
- e1g 2y agoRejoice, as Remix effectively no longer exists (it’s now all react-router) you won’t get that slop article :)
- pestaa 2y agoI know it's just branding, but I think it's the other way around: react-router is now all remix.
- e1g 2y agoI suppose it depends on framing, but as I understand it in a few years there will be no “remix” as it’s all absorbed by “react-router”.
- evnp 2y agoInteresting, this does indeed seem to be the case: > What we planned to release as Remix v3 is now going to be released as React Router v7. https://remix.run/blog/merging-remix-and-react-router https://remix.run/blog/merging-remix-and-react-router
- yen223 2y agoYeah that migration came out from the left field. As someone who likes Remix, I would also be interested in learning why OpenAI made that switch
- swyx 2y agoive talked to them offline about it and they have promised a writeup is coming. will try to get a podcast too
- thekevan 2y agoI'm an HTML & CSS web developer, my skills started in the 2010s with Bootstrap and have (purposely) stayed there. Yes, I know the advantages of React et al. but I have made a nice niche with my deliberately luddite-ish web development style. My brochure-site level business doesn't necessarily need the latest and greatest thing, as long as I don't skimp on security. Until I read about Astro. I'm finally entering the 2020s and just starting to learn Astro. It's a bit daunting with my (intentional) gaps in skills but I'm finding my way. I'm impressed with the speed and SEO capabilities out of the box. Using markdown is nice. And it meshes with the "next new big" thing when the time comes for me to venture out of the stone age. I'm on board.
- matsemann 2y agoWhat I like about Astro is the same as you, but coming from the opposite side. Day job is writing interactive web apps in react. When making some more static web pages on the side, it feels too much to use react and go the SPA route, especially if it should just be fast and easy to load, and friendly for search engine to crawl. But writing plain html&js makes me miss components for all the reusable parts, or whenever I want some small interactivity (like wanting to add a filter to a large list) it's nice to use what I know, and render it during build time, but possibly ship the components themselves to the browser for interactivity.
- FredPret 2y agoOut of curiosity, do you hand-code or do you use a tool like Bootstrap Studio?
- thekevan 2y agoBy hand but in VS Code, autocomplete does a lot. I'm just now getting up and running with Cursor though.
- gr4vityWall 2y agoI can relate to the complexity fatigue. I think if they were willing to let go of type safety, PHP + jQuery could unironically work just fine for them. I wonder if it's possible to sanely use PHP with TypeScript + Vite with SSG, without making your tooling too complex. Anyway, congrats to them, sounds like they reduced costs and even kept engineers happy with an interesting technical challenge.
- 0xblinq 2y agoInertia.js
- mplanchard 2y agoI think that this recent post makes a nice accompaniment to TFA: https://news.ycombinator.com/item?id=42279172 https://news.ycombinator.com/item?id=42279172
- markhalonen 2y agoI recently evaluated web tech stacks and my thesis is that Next.js is the most powerful and will win in the long run, but right now it's a bit too new for most web projects -- the ones that are low-traffic, simple apps. Migrating your codebase to another version is just not that fun, and I deemed that still too common in Next.js
- reducesuffering 2y agoNext.js is already winning: https://trends.stackoverflow.co/?tags=next.js,ruby-on-rails,django,laravel https://trends.stackoverflow.co/?tags=next.js,ruby-on-rails,... There are many older codebases running those well-established frameworks, but a lot of job positions, new code, and I bet half the recent YC batch web apps, are Next.js. JSX for frontend is so much better than the other templates imo
- the_mitsuhiko 2y agoThere are trends and vibes and Next.js winning. Will it be the thing we will use in three years? Who knows, but I would not necessarily bet on it, because all those technologies eventually are replaced by something else. Next.js in particular is well known already at this point that some people are intentionally choosing not to use it (because they ran into some of the challenges at their previous company).
- joekrill 2y ago> but right now it's a bit too new Too new? It's 8 years old!
- meiraleal 2y agoYour thesis isn't very good. Nextjs has a huge marketing budget and that's it
- CharlieDigital 2y agoI also work at a startup that switched from Next.js to Astro.js. It was around the time of Next.js 12 -> 13 transition. The overall DX was really bad for us when 13 came out and we had struggled with integrating some third party libraries with 12 (Algolia) and decided to move on. If you look at who's using Next.js, you'll see dotcoms like Target.com and Walmart.com are both on Next.js as well as many big name e-commerce retailers. That should tell you about the target audience for Next.js. If you balk at using SAP, Oracle, SharePoint, Teams, or Documentum, then you probably shouldn't use Next.js either.
- joekrill 2y agoBut Astro.js is being used by Ikea, plus a number of other e-commerce retailers. These large companies use all kinds of tech across a huge number of projects. I hardly see how that can really be taken as a signal of the target audience. Most of these companies are using React in some capacity, so does that fall into the same category?
- CharlieDigital 2y agoWe're building an e-commerce retailer platform optimized for SEO so it makes sense for us since the objectives are the same. I also wouldn't compare an Ikea to a Walmart or a Target. The latter surface massive catalogs that span multiple brands. Ikea is no small startup, but I don't put them at the same scale as Walmart and Target in terms of e-commerce. For anyone else that wants to use React (I also advise against this), I'd personally recommend a React Vite SPA.
- tengbretson 2y agoMaybe it's because I'm late enough to the party that I didn't have any applications that needed to be migrated from pages router to app router, but I really cannot relate to so many of these recent articles bemoaning the state of Next.js. Preferring server components, going back to HATEOAS principles, and going back to using forms whenever possible has been great.
- BoorishBears 2y agoI mean pages router resulted in much more sound applications. Most app router applications can't handle something as simple as a timed out server function.
- rafaelmn 2y agoHonestly I came back to frontend after a few years away and then recently got on next.js project. It seems like this has become the way to build SPA applications ? It feels like a major step backwards - the huge complexity of having frontend split between server/client for very questionable benefits feels entirely not worth it to me. There has to be simpler ways to prerender some basic entry points and leave the rest to frontend. Or just do SSR with partial updates. Don't know maybe I'm getting too old but I see no world in which next.js is the optimal solution or frankly even an improvement over what was going on in frontend a few years ago - feels like a regression.
- brailsafe 2y agoNuxt.js felt pretty straightforward to me, with a few minor hiccups. Haven't revisited Next in a while, but it seemed a bit overblown at the time and now. I think people just glob on to whatever their influencer of choice is doing much of the time.
- rglover 2y agoThe way I do it in my framework [1]: 1. Wire up a route in your index.server.js file (the main app startup file). That calls to a res.render() function that receives the component you want to render. 2. When that route is hit, send the HTML/CSS/JS to the client and auto-hydrate in the browser (no need for developer to hand-write that), let the client-side do the rest. Rinse and repeat for moving between routes. No client-side slop, just one easy to understand source of truth on the server. There's (sadly) been a chase in the JS world to cram everything into the browser but you really don't need to. The above is insanely productive and stable, yet a lot of people I talk to about it poo-poo it (or at best, seem disinterested). [1] https://cheatcode.co/joystick https://cheatcode.co/joystick
- Scarbutt 2y agoThe issue with that approach to hydration is that it causes the browser to freeze.
- 2y ago
- bhouston 2y agoI think that Next.js in its current form is not great for DX. I've recently tried out both React-Router v7 (which is sort Remix 3? it is confusing), and TanStack/Start and found them both to have better developer DX than Next.JS. React-Router v7 was the simpler of the two and my app had less code as a result, but a little less flexible than TanStack/Start. But both seemed acceptable. Astro has been recommended so I will try it out next.
- nicce 2y agoRemix is getting renamed and merged into React Router.
- bhouston 2y agoI am confused because I was mostly able to replicate Remix 2 functionality in React-Router v7. What would Remix add to that?
- 0xblinq 2y agoThis is such a mess. These guys love to create chaos. We used to “joke” with the fact they change the way to do routing in each RR release, now they change the entire framework with each release.
- bhouston 2y agoThey did change it with React-Router v7. The built-in file/directory-based routing that was available in Remix 2 is not available in React-Router v7.
- dan_sbl 2y agoLike some other commenters here who started with Bootstrap/jQuery/etc., I feel stuck in the stone ages at times. My most recent content-based site uses Hugo (https://gohugo.io/ https://gohugo.io/), but I'm starting to tire of the magic and gotchas I keep running into. Can someone that has used Astro and an older static site generator framework explain the pros/cons of Astro in that context?
- radicalbyte 2y agoNext.js is like what you'd get if you didn't want to use Angular because it's not "cool", only you took the guy in the back of the class who spent all day smoking weed, pumped him full of Ritalin then told him he'd only get his weed back if he designed a new javascript framework. Only said dude also happened to be the son of the CEO so everyone was forced to use it and a large marketing team would be put together and bankrolled to make everyone else use it.
- lakomen 2y agoIt's not that Angular isn't cool, it's not productive and very cumbersome. Rxjs gets in the way and ngrx has too much boilerplate. It's for large teams and companies that can afford to move slowly.
- radicalbyte 2y agoIt depends on what you're doing. When I've used Angular I generated a lot of that boilerplate which reduced a lot of friction between frontend/backend. If you can't do that then taking a simple approach (pulling in the libraries you need) makes more sense My experience with Next.js is that it's an order of magnitude slower than Angular and makes it very easy to make massive security blunders (I have more than once found developers accidentality sending secrets to the browser).
- evilduck 2y agoWhat are you asserting that Angular is doing so special that it specifically prevents sending secrets to the browser in a way that NextJS doesn't already, or couldn't equivalently do?
- davepeck 2y agoI really like Astro: 1. It's the most flexible yet easily configured static site generator I've used to date 2. It's reliable. The docs are well maintained and, mirabile dictu, the real behavior of the system matches its documented behavior 3. It's stable. Lots of new features are getting added, but (so far) upgrades don't break things 4. It has good tooling for editors like vscode 5. Many of my current projects take the form of "big data pipeline, followed by intermittent job to rebuild a static site and push it live"; astro fits very nicely in this role Caveat: I use exactly none of Astro's backend features. I understand why they've added them but, for me, it's all about static site generation. About the only thing I don't like is the weirdness of the boundary between astro components and framework components. I get it, but still. It's something to carefully consider when building each new astro site.
- cpursley 2y agoThe docs are soooo good. Page speed and SEO scores for astro sites are off the charts. And Bolt.new and Cursor do really well with it.
- rogue7 2y ago> 5. Many of my current projects take the form of "big data pipeline, followed by intermittent job to rebuild a static site and push it live"; astro fits very nicely in this role You may be interested in Observable Framework [0] [0] https://observablehq.com/framework/ https://observablehq.com/framework/
- davepeck 2y agoYes! I’ve had my eye on it but haven’t had a chance to use it (yet).
- h1fra 2y agoI hope I will never have to write Server-Side generated application. I left PHP and Ruby a long time ago, and I don't miss this madness.
- lifesaverluke 2y agoEveryone has their own preference. Here it's exactly the other way around :-)
- bastardoperator 2y agoThis is how I see it. You need to be a nextjs expert to produce a nextjs website. Astro you just need to understand basic concepts and can produce a website. I tried nextjs, and the complexity for a SPA was off the charts. Switched to Astro and never looked back.
- ericmcer 2y agoNextJS isn't ideal if you just want a SPA, just stick any frontend router in if you want that. If you aren't using it for SSR/SSG then you probably don't need it. If you are writing a really dynamic app with a few thousand users you probably don't need it. It is crazy good for blending dynamic/static pages together, preloading data for page responsiveness and making dependency management less of a nightmare. Things like e-commerce are where it really shines because it can blend thousands of cached SSG product pages with dynamic elements and data in a relatively straightforward way. I would not recommend it for any project where you are going to have fairly few static pages and relatively few users, it isn't worth the complexity.
- ervine 2y agoYou can't even become a next.js expert because it is constantly changing. Even the devs involved don't have their heads around what they've built, considering responses in github issues.
- bastardoperator 2y agoI completely agree with this sentiment. I will say this, vercel was easy to use and v0 is pretty cool too. I can appreciate what they're doing, I just don't have time to become a nextjs expert.
- jokethrowaway 2y agoBoth vercel and next keep breaking APIs. I just blank out stopped touching anything coming from there. I still have a client on next + vercel/ai and it's a constant shitshow of broken updates. It's not an environment you can be productive with. I moved to solid from now on: they don't have as much money but applications built years ago still work today
- lenerdenator 2y agoFor all of the JavaScript frameworks/libraries/toolchains that were supposed to solve front-end development woes, we could have had a language that actually did that.
- te_chris 2y agoElixir
- skrtskrt 2y agoseriously Google probably put a couple billion person-hours just into V8 optimizations, we could have just had a language that makes sense, is efficient, and doesn't have endless footguns.
- tiffanyh 2y agoLua would be a strong contender.
- tmountain 2y agoI think a lot of people would reject any dynamically typed language at this stage.
- thiht 2y agoA few years ago before ES2015 sure. But JavaScript has come a long way, it’s a much more pleasant language to work with nowadays. Typescript also plays a strong role with that. Lua used to be marginally better than JS, now JS is better and it’s not even close. Also Lua metatables suck.
- tiffanyh 2y agoWould you mind giving examples of why. Genuinely curious. Would below be examples you were thinking of: https://stackoverflow.com/questions/1022560/subtle-differences-between-javascript-and-lua https://stackoverflow.com/questions/1022560/subtle-differenc...
- mehh 2y agonext.js reminds me of Ruby on Rails, main pain point is they keep changing how they do things, but docs, examples etc can't keep up so I'm constantly seeing the wrong answers to my problems. An example of this is how they implemented sitemap.xml, but half arsed doing a sitemap index properly (which really wasn't much work), so they will end up doing it properly in some version, in the mean time you have to work around the framework (it would be better if they didn't even have this feature), and when the release a proper implementation new users will struggle to find the answers on how to do it. This all adds friction to upgrade, I'd like to move to v15 as it has a feature I really need, but they have changed the bloody confusing caching system, not sure it's worth the work. Creating web frameworks that are volatile is fine if your just building short lived projects, but not anything more complex and longer lived, this is the same pain and why I gave up on RoR.
- radicalbyte 2y agoOnly Ruby-on-Rails was kinda good for some time. Next.js is one of those frameworks which put all of their stat points in Thought Leader Marketing and none in solving problems.
- herrherrmann 2y agoI would argue that Next.js pre app router was a solid and helpful framework for rendering React components on the server side (as long as your setup wasn’t too complex or you were using their own hosting service anyway). But in the recent years they really seem to have screwed up the ease of use and reliability. Nowadays, I wouldn’t recommend Next.js to anyone anymore.
- mattkevan 2y agoWhat would you recommend? I’m building a fairly complex app with lots of state management. Next seems to be a good way to go, but I’d be interested if there are any better alternatives.
- 2y ago
- cheema33 2y agoWe are doing something similar. Moving from NextJS to Vite. We export our webapp and get static assets that get cached by the web browser. When loaded the app makes a single GraphQL call that loads up all the data needed for the initial page. We don't do any SSR. We did not realize that NextJS isn't a good option for use case like ours. It does do static exports and you can do client side routing. But it adds a lot complexity to support SSR that isn't relevant to us. And DX compared to Vite is painfully slow. Annoyingly slow.
- codethief 2y agoYou could still decide to do SSR by "wrapping" your Vite project in Astro. Astro is basically "just" a wrapper around Vite with additional support for executing code (Astro files) server-side and some other neat features.
- doctorpangloss 2y agoRemember Meteor?
- deleted 2y ago[deleted]
- gr4vityWall 2y agoThey just had a new release a few days ago: https://dev.to/meteor/meteorjs-31-a-new-dawn-for-full-stack-javascript-development-4a13 https://dev.to/meteor/meteorjs-31-a-new-dawn-for-full-stack-... I think the work being put to modernize it is showing results, but it needs to catch up in a few areas. Integrating Vite on it would go a long way, even if their syntax for dynamic imports stops being supported in the browser. I still believe it's a very productive framework for building a B2B SPA with Node.js. It has an accounts system built-in. Reactivity just works and it's also built-in, and IMO it's way more useful for a SPA with a modest amount of users than SSR.
- niceice 2y ago(12 months from now) We switched from Astro to SkibidiJS
- oliwarner 2y agoMaybe, but that does that devalue the positive progress today? I understand what you're saying, people framework hop and what's popular does change frequently, but we're not all using Frontpage still, are we? That process of changing to something better (as evidenced by TFA) has value in itself.
- alabhyajindal 2y agoYes there's value in changing to something better. The frequency of change is the real issue here.
- elmerfuddwalz 2y ago[dead]
- pier25 2y ago> Next, Nuxt, and SvelteKit are built with complex, runtime browser rendering engines — a massive overhead for content-driven websites with minimal interactive elements. This 100%. I just don't understand why all modern frameworks aren't doing islands by now. Sending, parsing, and executing JS for non interactive components is a massive waste.
- cbovis 2y agoI'm not very familiar with Nuxt or SvelteKit but this is exactly what React and NextJS provide with server components. Any JS related to server components isn't shipped, only client components which effectively represent the islands. The only real difference is you're not mixing technologies, it's all React.
- richardw 2y agoFront end is a young person’s game because of the endless churn. It’s where I started and I love delivering a tight, next-level UX. But I’ve spent the last decade in enterprise distributed, microservices, integration, data etc with a ton of complexity but far less BS churn. Now I need to decide on a web stack and have been leaning TS, React, Next etc. But there’s no foundation you can rely on. It’s shifting as we speak, with the endless gyrations and new abstractions, and waves of complexity and simplification and breaking changes. I’ve never minded learning but in front end you basically zero your knowledge every few years. This is now an area I’ll happily delegate to an AI. Of course I’m heavily into LLM’s etc right now so maybe I should stop whining. That makes JS seem like a glacier.
- o_m 2y agoI have quit the React/Node/JavaScript ecosystem. I'm going all in on backend. I also feel all the time invested in front end has always wither and vanish. It is hard to accumulate knowledge in the front end field when it is always changing. I'm probably going to lose money on this bet (going from senior front end), but I'm already feeling a lot happier.
- lakomen 2y agoBut that's so ugh. Templates and the endless helper functions. No interactivity, all the if else blocks. No just no, not again.
- lakomen 2y agoRust, I've been experimenting with it, and (tutorial) code written a year ago doesn't compile anymore. If there's something you shouldn't use, it's Rust, at least for the time being. Maybe in 10 years.
- whytevuhuni 2y agoThat should definitely not be the case. Did you compile it with a different edition, or different 3rd party dependency major versions, perhaps?
- J_Shelby_J 2y agoAstro is simple and nice. I built a github sites blog template for my friends to use that you can run and publish fully in browser. [1] I also use it for my personal blog. [2] Astro made it simple for someone with little frontend framework experience (me) to get started and build something useful. The site itself only uses javascript for light/dark mode, but even that is optional. What Astro solves for me is best practices for the build step. [1] https://github.com/easy-astro-blog-creator/easy-astro-blog-creator https://github.com/easy-astro-blog-creator/easy-astro-blog-c... [2] https://shelbyjenkins.github.io/ https://shelbyjenkins.github.io/
- gatinsama 2y agoSvelte keeps getting mentioned as part of next/nuxt/svelte, but my experience with it has been great. I've used it for projects of varying complexity like a personal blog and a SPA. I believe much of the complexity fatigue the author described is more related to React and its woes than to frameworks and JavaScript in general. Not that JavaScript doesn't have its own set of problems.
- vanviegen 2y agoHave you looked at svelte 5 yet? Still happy with Svelte? https://svelte.dev/docs/svelte/v5-migration-guide https://svelte.dev/docs/svelte/v5-migration-guide
- gatinsama 2y agoI have looked at it but not updated yet, and I don't think I will. v5 looks more like React (effect, props), but it still keeps much of the simplicity from Svelte. I think they wanted to be more explicit so it better supports larger applications with fewer surprises. I don't love the fact that they are creating new abstractions to learn when everyone loved the previous ones, but I can see why they did that. And I think that I'll still have a pleasant experience with v5, but don't quote me on that.
- Pepe1vo 2y agoI've just spent past week building a medium complex web app for editing configs at $work, so I can chime on this. Having worked with earlier versions of sveltekit in the past, I have to say the new reactivity system is not that bad and pretty easy to wrap your head around. Once you're used to the runes (there's like 4 you have to remember) you can just focus on building stuff and it's really quite a pleasant and productive dev experience. I've gotten multiple compliments from people about the speed and quality I was able to deliver this with and that's in large part due to sveltekit. I do have to give a shout out to good ol' bootstrap for allowing me to build something that looks good, works on mobile and is just easy.
- rtrgrd 2y agoI've been working with svelte 5, and to be honest, I was also quite put off initially by the change in syntax. Over time though I feel like the changes are quite intuitive and helps remove a lot of complexity especially with stores etc. (Also thank god svelte 5 is cross comaptible with svelte 4)
- evtothedev 2y agoI love that they're using Kamal[1] outside of a Rails context. I've seen that promised in the docs, but hadn't encountered it in real life. [1] http://kamal-deploy.org http://kamal-deploy.org
- mat_jack1 2y agoFrom Datocms here :) We are also actively experimenting on porting our main app. We are doing progress, so far so good!
- satvikpendem 2y agoI wonder how Kamal compares to Dokploy or Coolify, both have GUIs as well in those times I don't want to mess with the command line just to fix something in production.
- interactivecode 2y agoI feel like astro needs some light state event handling. While building my site recently I wanted to filter & sort some lists and I either had to add in react or something or do a bunch of wrangling manually on the html.
- hasanhaja 2y agoYou can just sprinkle in some <script> tags and not have to rely on UI frameworks. I appreciate that Astro let's you do this rather than invent it's own way of doing things.
- interactivecode 2y agoFor sure, but there is room for improvement there. Similar to how the <style> tag has scoping built in. An integrated way to access the data objects directly and a way to reference elements and events would be ergonomic.
- dennisy 2y agoNuxt Content v3 is out, not tried it yet, but for those familiar mostly with Vue it looks pretty good: https://content3.nuxt.dev/ https://content3.nuxt.dev/
- lakomen 2y agoI've been getting into React recently, because of entgo and relay on the server. React with vite for SPA/PWA is lovely. React as a SSR with Next is a nightmare, because next auth. Graphql with GLUID aka Relay is awesome. React-oidc-context is awesome. It's all a joy to work with. Today I tried remix with remix auth. I have to manually check token expiration, do refresh, decode the jwt, can't seem to have optional auth routes it's all or nothing. I haven't tried Astro. And the article ended when it came to the "juicy bits" aka the interesting stuff. I tried Svelte with Houdini. Compared to React Svelte is so barebones. You have to do everything on your own, I mean compared it's just less comfortable, less developed, but it has come a long way, no denying that. Houdini in theory was great but in praxis, it can't do "on Query" fragments and the maintainer or developer didn't help, so I abandoned the project with Svelte kit and Houdini. I even added a repo for him to look at, just a link to the docs about fragments and nothing else. Yeah but on Query fragments are also a part of the Graphql spec. Ah well. Apollo, last time I used it, it was complicated, maybe it's different now that I have finished one project with Relay and understand more. Idk what graphql thing exists for Astro. I won't read the followup posts because I'll forget about it. So yeah, quite useless article tbh, no offense
- newusertoday 2y agoany recommendations for themes in astro? i want following landing page+blog+docs with toc and related content.
- 0xblinq 2y agoYeah, and we switched from all these meta frameworks that change their mind and get rewritten every Tuesday into using real full stack batteries included frameworks and then use React through Inertia.js. Best of both worlds, and a stable and proven foundation to build on top of. I don’t trust any of these meta frameworks anymore.
- quibono 2y agoCould someone give me a quick run down on what Astro is good for please? Looking at the website it seems to cater heavily towards "marketing sites, blogs, e-commerce websites". I'm wondering if this is reflected in the design and dev experience or if it could be used for "generic" websites too.
- aleksiy123 2y agoYou can use it for anything especially with its new server islands. https://astro.build/blog/astro-5/#server-islands https://astro.build/blog/astro-5/#server-islands So you can mix static rendered along with server side rendering pieces and get the benefits of both. Also it's frontend framework agnostic and you can mix and match. So you can have a dynamic react component, with a static Astro component, svelte component all in the same page on theory. https://docs.astro.build/en/concepts/islands/ https://docs.astro.build/en/concepts/islands/ Then for backend stuff it kinda depends on how you deploy it. It could just be a single monolithic server or serverless per API route and probably everything in between.
- bribri 2y agoI love Astro and I’ve tried every SSG. I use it for my personal site.
- hofstede 2y ago[dead]
- Pet33231 2y ago[dead]