Hey! Scheduled Functions are cool! Think of them like a CRON job. I want this code to run every Monday at 2pm. I want this code run every hour on the hour. That kind of thing. Why would you want to do that? There are tons of reasons! Perhaps something like “send my newsletter” where you write it on your site in Markdown, it gets processed into an email template and sent out via a Netlify Function. Now you could make that happen on a set schedule. Or something like “send all my new blog posts out, if there are any.”
This is pretty near and dear to me, because I’ve reached for paid outside services to do this for me in the past!
See, I have a little mini site right here on CSS-Tricks that is very time-based in that it lists upcoming conferences. It’s a totally static site, so once a date is passed, it, uh, kinda doesn’t matter, the site just stays how it is. But there is code that during the build process, it only builds out conferences in the future, not the past. So the trick is to run the build process every day.
Before Scheduled Functions, I used Zapier to do this, which has been humming along doing this just fine for years:
But the knowlege of how that works is basically locked up in my head. Plus, I’m doing it on a non-free third-party service, and there is always a little bit of Rube Goldberg-y technical debt to that.
I’m literally switching up how I’m doing it right this second as I type out this blog post. I’m just going to write the dumbest function ever that kicks a POST request to the URL that Netlify gives me to trigger builds and do it once a day. That’s it.
With this in place, I’m gonna switch off my Zap and just rest easy knowing all this functionality is now shored up in one place.
This is a Beta feature, for the record. Netlify doesn’t recommend it for production just quiiiiite yet, as per the Labs documentation. But my thing isn’t super mission-critical so I’m giving it a shot.
What else might you use them for? The blog post about the new feature has some ideas:
• Invoke a set of APIs to collate data for a report at the end of every week
• Back up data from one data store to another at the end of every night
• Build and deploy all your static content every hour instead of for every authored or merged pull request, or
• Anything else you can imagine you might want to invoke on a regular basis!