Introduction
Updating to 3.5, the release schedule, Nitro 1.0, and more.
Hello, Craft friends. Welcome to another issue of Craft Link List. This issue covers a lot of topics specific to Craft 3.5: upgrading tips, new features, and more. What else is in store for issue 118? Nitro has been officially released. Piort has an email templating solution to share. Plus, there are other Craft tips, plugins, and web dev goodies.
If you've been a CLL reader for a while, you may know each issue has two sponsors that help keep this newsletter going. For the first time, both sponsors have plugins that overlap in what they offer. I view this as a sign of a vibrant Craft ecosystem. Thank you to both sponsors.
Formie: Client-focused forms plugin for Craft. Learn more.
Freeform: Effortlessly build beautiful forms in minutes. Learn more.
Let's hit the links.
-John Morton
Top Stories
Upgrading to Craft 3.5
This Knowledge Base article covers Craft 3.5 and new features and changes to be aware of, including an update on how Project Config works. (Don't miss the Project Config Caveats later in this issue.)
Related to this KB article, but not part of it is a collection of tips from discussions in Discord:
- "Using Composer to update one plugin at a time," separate from any Craft updates, will help isolate problems with an individual plugin. (h/t Andrea)
- Speaking of Composer, "a lot of issues come from updating within the CP, which is much more likely to run into resource limits." So use the command line (i.e., using your terminal and the
craft
command or thecomposer
command) instead of the update mechanism in the control panel. Updating within the control panel will probably go away eventually due to how resource-intensive it is. (h/t Brandon) - If an update fails, your best bet is always going to be to restore the DB backup. Otherwise, you are reapplying migrations on a half-updated database. (h/t/ Brandon)
News
Craft 3.5 with Brandon Kelly | CraftQuest
Brandon joins Ryan and Andrew to discuss Craft 3.5, including how 3.5 caches templates and GraphQL requests, updates to project config, a variety of user questions, and more.
Craft 3.5.5 released
Along with bug fixes, notable additions since the initial 3.5.0 release:
- Lightswitch fields now having an “ON Label” and “OFF Label” setting.
- You can now hide field labels from within the field layout designer.
- Input fields in the control panel now use the
inputmode
attritube (learn more here). - You can now easily see and copy field handles.
Read the full changelog for details.
Introducing the new Craft Documentation
The Craft documentation has been getting a lot of attention. The content has been improving steadily, and now it has an updated layout and URL. Update your bookmark to the Craft documentation: https://craftcms.com/docs
Nitro 1.0 Released
Nitro, the official "best way to develop Craft sites locally," developed by the Craft team, has officially launched. "We’ve added Windows support, fixed some bugs, and added several new commands that make working with Nitro a joy."
Commerce 3.2 Released
Craft Commerce 3.2 has been released, with a few improvements for store managers. At the time I write this, we're now at 3.2.2.1. See the changelog for all the details.
Redactor v2.71 released
The Redactor fieldtype received several new features with the 2.7 release, including the ability to select image transforms within the field.
Feedback requested on the Craft release schedule
Craft 3.5 was released a couple of weeks ago after over three months of being in beta and then a two-week release candidate phase. That didn't mean the 3.5 release went smoothly for everyone. Brandon and the Craft team want your feedback on how future Craft releases happen. Below are links to two Tweets from Brandon. Reply with your thoughts or reach out to the Pixel and Tonic team directly. There's also been an ongoing discussion in the #extending-craft Discord channel starting on August 16, 2020.
Featured Sponsor

Formie: Client-focused forms plugin for Craft
It might be the new kid on the block, but Formie's carefully crafted user-experience means creating forms are a joy for your clients. Packed full of features with 25+ fields, multi-pages, custom field types, bundled CSS/JS, Freeform/Sprout Forms migration and much more. Read more about why we created Formie in our blog post, or download it on the plugin store.
Tools, tips, and fundamentals
Project Config Caveats ⭐️
In the Upgrading to Craft 3.5 Knowledge Base article mentioned above in the "Top Stories" section, there is an area on the Project Config Workflow. Here's a quick excerpt:
The
useProjectConfigFile
config setting has been deprecated. Craft will now always store a copy of the Project Config in a config/project/ folder for safekeeping, regardless of whether you want to actually keep your database in sync with its changes.
That link is supplemental reading to the actual link to the Project Config Caveats, which is part of the official documentation. It's essential reading, but the basics are that you should be aware of is that sensitive information could leak into your project config file (and into your Git repo), so use environment variables for that type of info. Also, know how to do that properly, as shown by this example:
// Bad:
'secret' => getenv('SECRET_ACCESS_KEY'),
// Good:
'secret' => '$SECRET_ACCESS_KEY',
Another highlight is the change from a single project.yaml
file to a folder of multiple files.
There's more important stuff to be aware of, so be sure to read this article.
Lastly, Team Workflow with Project Config in Craft CMS 3, mentioned previously in issue 88, might be helpful to read or read again.
Resolving "Access denied; you need (at least one of) the PROCESS privilege(s) for this operation"
Have you run into the error above when using MySQL 8.x? This article might help you out.
Switching from Craft Local Assets Volume to S3 | CraftQuest
Do you need to switch a local Assets volume to remote? Here's how you do it using Amazon S3. These steps will help you make a clean cutover from local to remote without any missing images on your site. This lesson does require a free Amazon Web Services account.
Perfecting your technique
Universal email template for Craft CMS | Craft Snippets
Piotr Pogorzelski shows how to use the Postmark Transactional Email Templates "as a base for universal email Template for Craft CMS." He shows how to set up your template and then easily customize the content inserted into the emails.
The page builder dilemma
Last week there was a great discussion on the topic of clients and designers wanting "page builder" style control within their CMS, whether that was Craft, WordPress, something else. If you're a member of the Craft Discord, you can catch up by starting here. If that link gives you trouble, go to the #general channel on August 13, 2020, and look for "create a large number of bespoke pages with different layouts".
Can you call a controller method from within a plugin/module in Craft 3?
The short answer is, yes, you can call any controller's method from a plugin/module like this:
Craft::$app->runAction('users/save-user');
The longer answer is available by reading the full StackExchange post.
Using Twig Templates in the Field Layout Designer | CraftQuest
Ryan and Andrew discuss the new Template option in the field layout designer in Craft 3.5. I'll spoil it a little bit and tell you the following snippet plays a role.
{{ dump(_context | keys) }}
Running Gatsby.js Sites with Craft CMS | Aaron Bushnell
Aaron Bushnell shares his perspective on developing sites with Craft CMS and Gatsby.js after having built some himself. The post may help you decide if this solution would work for your next project.
Ephemeral File Systems and Exploits | CraftQuest
Matt Gray of Servd joins the livestream to talk about ephemeral file systems and how they can help you recover faster from an exploit.
devMode.fm // A peek behind the iron curtain of building a GraphQL API
Tim Kelty from Fusionary Media joins the devMode crew to discuss the origins of a GraphQL API for Craft CMS, how test driven development factored into it, and what it was like behind the scenes architecting this API layer.
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
Rename Multibyte Filename
When a file whose filename contains a multibyte character is uploaded, the filename will be renamed to ASCII character automatically. Three types of filename format are available.
Groupie
Assign users to specific user groups upon registration. Especially useful for front-end signup forms.
Connect
Connect allows you to connect to external databases of any format that Yii2 supports and perform db queries using a query builder, right from your Twig templates.
It’s not Craft, but it’s interesting.
Good Work webdev series on YouTube
Every Tuesday the good folks at Good Work are publishing new webdev videos. Check it out.
What I Learned by Fixing One Line of CSS in an Open Source Project
When something breaks, enjoy the journey of learning the system. You’ll gain valuable insights into why that thing broke and what can be done to fix it. That’s one of the awesome benefits of contributing to open source projects and why I’d encourage you to do the same.
Scrapy | A Fast and Powerful Scraping and Web Crawling Framework
An open-source and collaborative framework for extracting the data you need from websites.
Tip: Emulate vision deficiencies in Chrome Dev Tools ⭐️
See how users who experience color blindless or blurred vision might see your site.
Monokai Pro
Monokai Pro is a color scheme and customized user interface theme for code editors. It has been designed with beautiful functionality in mind. Carefully selected shades of colors are the foundation of an uncompromising, non-distractive user interface.
How to clear HSTS settings in Chrome and Firefox
HSTS, HTTP Strict Transport Security, see the MDN article on the topic here. ells a browser "that an HTTPS connection should always be in place."
If your browser has stored HSTS settings for a domain and you later try to connect over HTTP or a broken HTTPS connection (mismatch hostname, expired certificate, etc) you will receive an error. Unlike other HTTPS errors, HSTS-related errors cannot be bypassed. This is because the browser has received explicit instructions from the browser not to allow anything but a secure connection.
This post will show you how to delete the HSTS settings in your local Chrome and Firefox.