Lucky Logo
APRIL 12, 2021

Lucky v0.27 Brings compatibility with Crystal 1.0

Crystal 1.0.0 is out! 🥳 And Lucky 0.27.0 is fully compatible with it.

We want to first congratulate the Crystal team for their long awaited release of 1.0! 🎉 This is a huge milestone for not only the language, but the whole community. Read the release post here.

We’re sure the next question on your mind is “When will Lucky hit 1.0?”. Don’t fret! We’re working towards that, and with each release we get closer and closer. To set some expectation, the actual answer is “When it’s ready”, but to give a little direction, the next release (or two) for sure won’t be 1.0 for us. We want to ensure we have a solid 1.0 release, and we feel it’s better to take our time, and do it right 💪

Lucky v0.27 is officially out. It’s a smaller release, but brings some pretty big steps. We hope you’re as stoked about the progress as we are!

# How to upgrade


Or you can view the changes using LuckyDiff. This tool helps see what has changed between versions and will be included in upgrade notes from now on.

# Here’s what’s new

# Crystal 1.0 Support

For the most part, Crystal 1.0 worked with Lucky 0.26 with the exception of cookies. For the Crystal 1.0 release, there were a few changes around cookies:

These changes mean that, with Crystal 1.0, cookie values that contain certain characters like \n, ", ;, and a few others, are no longer valid.

Prior to Lucky 0.27, Lucky session cookies were encoded using Base64.encode (which adds a newline character). This was patched in Lucky 0.27.1.

# Introduction of Breeze

Breeze is a new development dashboard system for Lucky apps. It allows you to get a higher overview of each request you make in your app. See which queries ran for a specific request, as well as which pipes, cookies, sessions, and headers all interacted for that request.


Breeze also allows you to create your own extensions. It comes with a built-in extension for viewing Carbon Email previews. This makes designing your emails a lot easier, and all right in your browser.

We are still working on Breeze, but feel free to watch the repo, and even give it a shot in your app. Let us know what you think!

# LuckyTask

This was originally called LuckyCli::Task which existed in the lucky_cli shard. LuckyCli was required in any shard that included custom tasks. (e.g. Avram, Lucky, Breeze, etc…)

By abstracting this out to a separate shard, we gain about ~17% (or more) speed in compilation time. This is mainly on cold cache, but it means your apps won’t sit in the CI as long as they were!

Who doesn’t love a little speed up? 😄

# And more

The bulk of the updates have been mostly internal. Removing deprecated methods, code organization, fixing some bugs, and making some compile-time errors a bit more user friendly.

# Parting words

As more people use Lucky, we are able to solidify what a Lucky 1.0 will look like. The goal will be with the release of 1.0, we won’t need major breaking changes to how the framework functions.

If you haven’t had a chance to try building an app, now’s the perfect time to do so!

Thank you so much for the support!

# Follow and spread the word

If you haven’t already, give us a star on GitHub, and be sure to follow us on Twitter.

Learn tips and tricks with LuckyCasts.

For questions, or just to chat, come say hi on Discord.