Introduction
The past and the future of #CraftCMS, loads of Craft tips, plugins, and more.
Hello Craft friends. I hope this finds you doing well. We've got another collection of interesting posts. I haven't said it recently, but this is due to people just like you creating and sharing great tips, posts and plugins for Craft. Do you have something to share with the Craft community? Head over to the link submission page.
This issue starts with the present and near-future of Craft with Brandon and Leah on devMode. We’ll look further into the future with milestones for Craft 5. In the title of the issue I hinted at "the past"; that was my attempt at being clever with the Craft docs now getting a changelog, which will be helpful as the docs continue to grow and evolve.
We've also got Ben Croker on devMode talking about Sprig and cool things it enables you to do in your Twig templates. There's a new Craft Coding Challenge, and, as usual, there are Craft tips, plugins, and other webdev goodies.
Thank you to the sponsors of this issue.
Fortrabbit is a preferred hosting provider for Craft CMS, offering a modern PHP application platform tailored for Craft, with Git deployments and Composer support. Try fortrabbit today.
Freeform is the feature-filled form plugin for Craft CMS that includes ready-to-use templates to get you up and running quickly. Learn about the power of Freeform.
Let’s hit the links.
-John Morton
Top Stories
devMode.fm // What's new in Craft CMS 3.5 & what's coming in 4.0! ⭐️
Brandon Kelly & Leah Stephenson from Pixel & Tonic join the devMode crew to talk about all the fancy new features in the recently released Craft CMS 3.5. Ryan Irelan also joins to talk about what’s coming in Craft CMS 4 (or is it 3.6?).
News
Craft 3.5.7 released.
- 😅 More helpful CLI warning when Craft “isn’t installed yet”
- ⚙️ Query sharing for GraphiQL
- ⌨️ Improved keyboard controls
- 🐪 Improved project config workflow + new comparison view
- 📎 Include CSS/JS files with the {% css %} and {% js %} tags
- 💾 New autosaveDrafts config setting
Laravel in a future version of Craft?
To access the link above you'll need to be part of the Craft Discord community. The message you see there is just a single message in a larger conversation in the extending-craft channel about the unlying framework that Craft is built on. As you probably know, Craft is built on Yii 2. What about going forward? Always in motion is the future.
Craft documentation has a changelog
We've mentioned the improving Craft documentation previously. Another sign of the care the docs are receiving is that they now have a changelog. You’ll easily be able to see the news stuff you should check out.
Featured Sponsor

Craft CMS Hosting Partner
We like to automate ALL THE THINGS — except customer support.
Get started with a free trial today! And ask whenever you have any questions.
Tools, tips, and fundamentals
devMode.fm // Sprig brings Reactivity to Twig ⭐️
Ben Croker from PutYourLightsOn joins the devMode crew to talk about his new plugin for Craft CMS, Sprig. Sprig brings reactivity to your Twig templates, by allowing you to do what are effectively dynamic includes of familiar Twig templates.
If you're into Sprig, Ben wants to find out what sort of resources will make Sprig even more useful. Head over to his Twitter poll today to cast your vote. ☑️
3 Craft tips from Piotr
- A handy little twig Macro that makes a URL pretty - Why would you use this? An example: "Buttons where users only need to input the target url. Button text = pretty, anchor = full url."
- Use the Verbb Navigation plugin multi-level menu structure as URL structure for your entries
- Make Neo plugin fields more readable when working with "matrix within a matrix"
Browsersync Proxy URL from DOTENV file | Caffeine Creations
Sean Smith shows how to get BrowserSync to pull the proxy url from your dotenv file using Laravel Mix.
Using Local Volumes for Development | Craft CMS
If your assets are stored in remote volumes, such as Amazon S3, Google Cloud Storage, or DigitalOcean Spaces, you may wish to use a local volume for your development environment.
This is possible using Yii’s dependency injection container, a powerful tool that can give you fine-grained control over how each system component is initialized.

Organizing Fields
Lindsey Diloreto shared a control panel organizational tip recently. If you've organized your fields by section and still lost track of them in a large site, Lindsey suggested organizing them by the type of field instead. He suggested that this organization also "sheds some light on how the fields can be reasonably reused." 😮
Lindsey told me that this tip originated in some past DotAll presentation - cheers to whoever that person was! 🍺
Jason Lee wants to help you...
Jason shared this very specific tip on Discord. It's definitely going to help someone sometime somewhere.
I don't know who needs to hear this, but for the person searching this thread for keywords
phpSessionName
orCraftSessionId
orphpsession
:Your session cookie isn't getting set because your php
session.save_handler
and/orsession.save_path
are wrong. Could mean they are set to redis and you don't have redis installed, for example.
See Andrew's The Case of the Missing PHP Session for more info.
Perfecting your technique

Challenge #9 – Roman Numerals
The Craft Coding Challenge is back! Given a number, calculate its corresponding Roman numeral using a twig macro. (I think you get a bonus point if you know why Edna Krabappel is on the challenge page.)
Craft CMS Docker images
These images are provided as a starting point for your Docker-based Craft CMS deployments. They’re discrete, lightweight, and preconfigured to meet Craft’s requirements in production and development environments.
nystudio107 | Creating a custom field in Craft CMS
Learn how to create a custom field in Craft CMS, writing as little code as possible by leveraging the platform.
Terminal application on macOS | Multipass documentation
How to make Multipass (and Nitro) use iTerm instead of the default Terminal on a Mac.
Warmer
David Kerns shared a solution "for pages with some form of lazyloading / async content pulled from a CDN or a CMS where the first request can take an unacceptably long time to fulfill."
Matrix within a Matrix - possible solutions for Craft CMS | Craft Snippets
In this Craft Snippets article, Piotr explores options for how to use the Matrix field within other Matrix fields.
Prism Syntax Highlighting for Craft CMS
John Henry Donovan has written a tutorial for using Prism syntax highlighting on your code blocks in Craft CMS.
Why you should forget about SEO and focus on HEO instead
This article is a short primer on enhancing people’s understanding of your business by creating better content.
How to best design large queue jobs
This Craft CMS Stack Exchange post from about a year ago came up in Discord last week. It's an evergreen 🌲 question.
Making backups a part of your Forge deployments | Feral
Timmy O'Mahony shows how to make a database backup when you deploy Craft (or anything, really) using Forge. The API and Backup features apply to business plans, not the basic plan.
Indianapolis Public Library
TrendyMinds posted about the Indianapolis Public Library site they recently completed, built on Craft. The article includes a list of the plugins they used.
Sponsor

Effortlessly build beautiful forms in minutes with Freeform!
Freeform is by far the most intuitive and reliable form building plugin for Craft! The elegant form builder has been expertly designed to minimize mileage on your mouse. Effortlessly create simple or complex multi-page forms, choose from 27 field types, and connect your forms to over 22 popular API integrations. Templating is easy and highly customizable. No other form plugin even comes close to comparing!
Plugged In
Turbo
This plugin adds some boost by using the Yii2 framework's PageCache. On the first load of the page, it stores the most used pages as static HTML. No extra code needed. Just install, turn it on and enjoy the speed.
Router
A Craft CMS plugin for using URL segments as filtering criteria on an entry query. (This problem this plugin is trying to solve is a little tough to summarize. Read the full description on the plugin page for a more complete description.)
Jokes
Jokes is a simple Craft CMS widget to start your Dashboard-day with some jokes using the JokeAPI.
Avataaars
With Avataaars you can create avatar icons by combining clothes, hair, emotions, accessories, and colors.
Imager X Rounded Corners Effect
This plugin adds an effect to Imager X for rounding image corners. It's also an example of how to make a custom effect for Imager X.
Youtube Channel Feed
This is a Craft CMS plugin for outputting a Youtube channel feed as a widget, or in your templates via a variable.
The Craft Advantage
Yii, Twig, PHP & More
It’s not Craft, but it’s interesting.
Increment: APIs
This issue of Increment, a print and digital magazine about how teams build and operate software systems at scale, explores all things APIs—from their prehistory to their future, their design, and development to their opportunities and impacts.
Summarize colors, fonts, media queries and unused declarations
Chrome dev tools keep getting better.
CSS to make counters less jumpy, and values nicely aligned
In all browsers except for Internet Explorer 🙄, the font-variant-numeric
and font-feature-setting
CSS properties allow activating same-width numbers for a font.
Composerize
Composerize turns docker run commands into docker-compose files. Find the git repo for this project here.
NGINX Config | DigitalOcean
This tool from Digital Ocean promises to be "the easiest way to configure a performant, secure, and stable NGINX server."
content-visibility: the new CSS property that boosts your rendering performance
The content-visibility property, launching in Chromium 85, might be one of the most impactful new CSS properties for improving page load performance.
How to Use AVIF: The New Next-Gen Image Compression Format
AVIF offers significant file size reduction for images compared with JPEG or WebP; ~50% savings compared to JPEG, and ~20% savings compared to WebP.
Chrome 85 now supports AVIF.