Skip to main content
Latest release:

Today, we’re introducing a new version of Hex, and buckle up, because this release has everything. Cutting-edge AI features? Check. Big foundational re-writes? You bet. Shiny new design? Of course! It’s a whole version number – what’d you expect??

If you missed the live event earlier, you can watch the replay and read our blog post here.It has tons of exciting, high quality graphics that explain these features really well, so I really recommend you check it out!

This changelog entry will walk through the greatest hits— but fair warning: this is still by far the longest changelog in Hex history!

Buckle up.

🔮 Magical AI assist features

🤖 Magic Analysis

Hex can now kickstart a whole analysis for you with AI.

Enter a prompt, and Magic Analysis returns chains of cells – including queries, explanation, and visualization. Hex’s notebook format really shines here, combining the best of a chat UI with a powerful, functional editing experience.

This is in private beta today. To get more of a sense of what it can do, you can watch a detailed demo at hex.tech/magic!

📊 Magic Charts

Magic Charts make it effortless to build and edit beautiful visualizations— the name says it all! Type a prompt, get a chart.

I personally love using this to make bulk edits to charts, changing 10 things about the config without having to navigate any menus.

🗃️ Data Manager

The Data Manager lets you control all the metadata that powers Magic for your workspace. It shows you all the information Hex automatically pulls from your dbt docs and warehouses, and lets you add further context, guidance, and prioritization.

This lets you dial in the behavior of Magic to be just right for your team. Speaking from our internal experience, a little work here can have a tremendous impact on the quality of AI results.

The Data Manager is currently in private beta.

🏗️ An all-new app builder

🎨 New layout engine

The new App builder is now a full editing experience in its own right. You can add new elements directly from here, drag/drop and resize with more fidelity and even – yes! finally! – edit text directly in-line.

I still love my notebook, but I know there are many of you that are really excited to be able to build whole projects right from the app builder!

🌪️ Powerful, automatic filters

Hex 3.0 includes huge improvements to filtering workflows. When building an app, editors can tie multiple app elements to one globally accessible filter, so that end users can more easily slice and dice reports in specific ways.

These are super easy to configure. Select a few elements, and just click one button to add a new filter.

And filtering works for end users too, with zero config required. Viewers can visually filter any chart in any app, and automagically cross filter other elements without any backend mapping.

Filters are rolling out over the next week.

🧭 Explore & View

Astute readers will remember this as a sneak preview from last release notes, but it's also a key part of the Hex 3.0 package.

Every chart and table in a published Hex app is now a fully interactive, drillable, filterable, and explorable jumping off point for end users to answer their own questions.

Click in to any element to remix the data just how you want— change how it's sliced, add filters, or even drill down into each of the underlying data points.

💅 New coat of paint

Our team has also redesigned the entire core workspace with an eye towards making it cleaner, simpler, and less cluttered (but no less powerful!). You’ll find a cleaner UX, with some new styles, and little surprises.

We’ve been using it internally for a few weeks– it’s a little bit of adjustment, but then feels super natural.

🏎️ Powerful new compute model

👯 An all-new, parallel compute engine

Hex 3.0 leverages our past work on the dependency graph to become the first notebook to support parallel execution. We use the project's DAG to determine which cells must be run sequentially, and which ones can be safely run at the same time.

This is a night-and-day performance difference, especially in complex apps with lots of warehouse SQL queries.

This works for SQL cells starting today, and we're expanding support to most cell types soon.

🐍 Native Python dataframe pushdown

Cloud data warehouses have made it really easy to work with data of tremendous scale, pushing any analyst's SQL compute from their laptop into an unimaginably powerful warehouse backend. Python... has remained trickier at scale, still requiring a lot of manual gymnastics and hand-rolled connections.

Now, Hex 3.0 makes it just as simple to push down Python to the warehouse! This means you can run massive data workflows and ML pipelines in Hex, using the leading cloud data infrastructure solutions, as seamlessly as if they were local dataframes.

We are launching this with two great partners— Snowflake and Google BigQuery— and we’ll be adding full Spark support as well.

You made it to the end! I am so excited for you to get your hands on the new Hex. Let us know what you think of it 🙂.

Today we’re shipping some huge improvements to make building and sharing beautiful, interactive experiences in Hex even better.

App viewers can now View and Explore the underlying data of charts and tables to quickly investigate an anomaly, look in more detail at a trend, or start their own downstream analysis— without having to start from scratch or make new data requests.

We’ve also updated our compute engine, so that all these app interactions are more performant and intuitive.

👀 View underlying data

App viewers can now see the underlying data behind charts by clicking the “View data” button.

View includes all columns in the underlying data, not just the ones being visualized! This lets you build beautiful, focused charts without worrying about how to provide access to the entire dataset.

This is only available to app viewers with “Can View” permissions, so you don’t need to worry about exposing raw data to everyone.

For charts that use aggregation or datetime truncation, View data gives you drill-down access to the unaggregated raw data. This means users can find a particular row, download the entire dataset, or use it to… drumroll please… Explore!

🧭 Explore

Every chart and table is now an interactive jumping-off point for app viewers to explore and answer their own questions.

Users with editor seats will see a new Explore icon on published charts and tables. This opens a powerful exploration interface that lets you access the raw underlying data, add your own filters, and completely reshape and rebuild visualizations.

At first glance it looks like the standard Hex chart editor, but I guarantee you will be amazed at the kinds of questions you can answer with just this interface.

Found an interesting thread to pull on? Any exploration can be promoted to a full-fledged project with one click, so you can go as far down the rabbit hole as you need to.

Users must have a Hex editor seat as well as “Can view” permissions on an app to Explore.

🏃‍♀️ More intelligent re-runs

When you change multiple inputs in an app, Hex’s compute engine will now prioritize the last selection, and cancel the other queued runs.

Previously, if you made several input changes in an app, Hex would queue up one run of the project for each permutation of inputs. This meant you’d have to wait for all those runs to finish, bashfully flickering their already-outdated results at you until they were replaced by the final one.

Now, Hex is clever enough to cancel all outdated runs and just run the final version. This makes for way snappier interactivity, and lets you build apps with lots of inputs without worrying about the user experience.

Bonus: The compute engine also now ignores any SQL cells in your project that aren’t necessary to power the published app. Made possible by a little DAG magic, this means your leftover scratch queries won’t accidentally make an app slower for end users— and hey, you might even save a few bucks on your warehouse bill 🙂.

📰 Edit from app layout

We’ve improved the cell editing experience you get on the App Layout page.

Text and markdown cells can now be inline edited right from this view, so you don’t have to go back to the Notebook view to edit that placeholder text.

We’ve also made improvements to other cell types: Inputs and Single Value visualizations can also be edited inline, and all other cells can be edited in a full screen popup by clicking the ⚙️ icon.

Other improvements

  • It’s now possible to publish a project right from the scheduled run dialog, instead of getting an unhelpful “You need to publish this app first” message.

  • The history sidebar can be filtered to only show saved versions, making it easier to revert or browse past work.

One of the best parts of this job is seeing all the amazing, creative, beautiful things people build and share in Hex. You all put a ton of energy and love into your work – and you want it to look great!

So today, we’re rolling out a couple of big improvements to your apps that’ll help you make them snazzier than ever. You can add tabs to better organize complex projects, and our drag-and-drop layout engine has a bunch of improvements to make it even easier to make pixel-perfect reports.

We’ve also made massive improvements to SQL typeahead and schema search speed. It feels great, and you’ll notice the difference right away.

🗂️  Organize apps with tabs

Hex is great for building complex projects with lots of inputs and outputs – but when it comes time to share, the single scrolling container isn’t always the best way to lay things out.

Now, you can use Tabs to organize your outputs into, uh... tabbed pages… or “tabs”, for short, to help folks navigate your more complex apps.

You can add, re-order, and name tabs from the top of the editor, or via the redesigned App sidebar on the right.

Configuring a new tab.

It’s easy to drag-and-drop cells across tabs, and you can even add cells to multiple tabs. For example, if you have a filter that affects a bunch of downstream charts, you can add it to multiple tabs and it’ll be synced automatically, just as you’d expect.

Configuring a new tab.

🎨 More layout improvements

We’re also upgrading the core report building experience!

We updated the layout engine powering all your apps to make it easier to create pixel-perfect layouts, including adding new guides for re-sizing and drag affordances.

Finally, all settings relevant to your published app have been consolidated into a single sidebar. you can adjust settings for runs, layouts, and – yes – tabs.

Here’s a one minute clip from Melissa, the engineer who worked on this, showing off the improvements!

🚅 SQL autocomplete speed

If you’ve noticed snappier autocomplete and schema search lately, no, you didn’t just get lucky. Over the past few weeks we’ve been rolling out an architecture change that makes this MUCH faster.

We’ll let the data tell the story (can you tell what day we cut over?!):

p95 times for autocomplete

The larger your database, the more likely you’ll be to notice this speedup – our data team certainly has!

Happy data team :)

This applies to both in-cell SQL autocomplete, and the schema search in the side bar. Oh, and now autocomplete matches any part of the object, so you can just type name  and get first_name  as a suggestion.

Editors note: Once upon a time I attempted to make this change myself, but literally gave myself a migraine trying to understand the codebase and had to go to bed early, without any supper. Will stick to marketing 👍.

We’re also progressively rolling out changes to make schema browser refreshes actual orders of magnitude faster — if this hasn’t hit your workspace yet, you can expect it in the next week or so. You'll know when it lands for you because you'll see one initial refresh that will actually take longer than usual, and then subsequent ones will be lightning quick.

I hope that this all helps you feel… complete. I certainly do.

Other improvements

  • We fixed an issue that caused private slack channels to not show up as scheduled run destinations.

  • We fixed some errors that were appearing when chart cells were ejected to Python. Custom SQL formatting was temporarily disabled while a security patch was applied to the open source library we use. It’s now re-enabled!

  • We pulled some strings, called in some favors, and now dataframes printed with a custom df.style() can display emoji 🤪 .

There’s two main feedback loops that data folks spend most of their time in:

The core analytical feedback loop: ask question of data -> improve understanding -> ask a better question -> repeat until satisfied.

The stakeholder feedback loop: stakeholder asks question -> data team builds report to answer it -> stakeholder requests changes → repeat until satisfied.

Almost every feature we add to Hex aims to make those feedback loops quicker and more delightful. Today, we’re making some big improvements to chart cells that make both these feedback loops way faster!

🌀 Filter charts by… filtering in charts!

Chart cells in Hex are now fully interactive, both in the Notebook view and in published apps.

Hover over a chart legend to highlight a series. Click the legend, or click and drag directly on the chart to select data. Then choose to keep or remove your selection to filter the chart.

How does this improve the core analytical feedback loop?

Working on an analysis in Notebook view, you can rapidly iterate and explore data visually without rewriting SQL or running new queries. You can also use the filtered data in downstream cells to see different dimensions of the data with just one quick brush gesture.

How does this improve the stakeholder feedback loop?

Viewers of published apps can customize and drill into specific aspects of reports to answer their questions without having to ask for help from the data team. No more “this looks great, but can you also make a version with just the last 30 days?”

Depending on how you set up your app on the backend, you can give end users a ton of interactive latitude in reports:

Sharp-eyed users will recognize that an opt-in version of this has existed for a couple of months, under the moniker “Visual filtering”. We’ve taken the foundation of visual filtering, improved on it, and enabled it by default with this release. You can find information on the specific differences in the docs.

⌛ Scheduled schema browser refreshes

You can now refresh the schema browser’s metadata for any data connection on a schedule. Pro tip: schedule this for after hours so that by the time you sit down at your computer to write some world changing SQL, you’ve got up to date metadata at your fingertips.

The new schema refresh options

📊 More chart improvements!

While we were making our chart legends interactive, we also fixed some UX issues with them. Series names that truncate too early, or entries that scroll off the page are a thing of the past Legendary.

Improved chart legend wrapping instead of truncating

Chart cells have more helpful error states: if a column that was being used in a chart is removed from your dataframe, we’ll let you know that the column no longer exists rather than printing a gobbledygook error. Even if you swap dataframes entirely, we’ll try to preserve as much of your chart configuration as possible.

Improved chart cell error state

And one more fix for chart cells: charts that have more than 20 series in the legend now have a more useful tooltip! Since we can’t fit all 20 series in the tooltip, we’ll show you the closest series value to your cursor 😮‍💨.

💫 Hex Magic now incorporates dbt Metadata

If you’re using the dbt Cloud metadata integration, we now use the descriptions from your dbt project to help generate better Magic responses.

If you haven’t enabled this yet, you can configure the dbt integration by adding the details directly on your data connection, from the Data sources page of the admin panel.

⚡ New connectors: Materialize & Starburst

We now have a dedicated connector for Materialize, for those of you present in the here and now… and a dedicated connector for Starburst, for those of you living that lake life.

Other improvements

  • We fixed a bug that meant the font sometimes changed as you were typing code. One of those bugs where once you saw it, you couldn’t unsee it. Well, until now, cause we just fixed it. So you won’t ever see it again. Is that the same thing as unseeing?

  • When setting up a scheduled run, we’ve added a handy little “Test scheduled run button” so you don’t have to wait until your next run to see what it looks like

We’re shipping some great improvements to scheduled runs and notifications today, making it easier than ever to integrate data from Hex into your core workflows. We’ve been testing this internally for a little while, so before I explain the specifics, here’s a peek at how some of the Hex team has been using it:

Tahlia, lead product expert: “I've scheduled a weekly run of our team metrics project so that everyone can get a peek into trending ticket volume/rates etc. Love that everyone can get the tl;dr without having to remember to go seek out that information one-off!”

Caleb, data analyst: “I have an app that allows us to see if data enrichment is working properly. It’s scheduled so we can take a quick peek at the screenshot and make sure everything is on track. It's a big workflow enhancement to keep slack as the central place for alerting and communication.”

Andrew, head of sales: “first thing I do every morning is open up #daily-mrr-updates"

I'm excited for you all to get your hands on this 🙂

🔔 Slack channel notifications for scheduled runs

Need to keep your team in the loop on the latest insights from Hex? It’s now easier than ever with scheduled run Slack notifications!

You can now configure a notification to send to a Slack channel upon completion (or failure) of your scheduled run, including an app screenshot.

A Hex app scheduled to Slack

🗓️ Revamped scheduler

We’ve also made scheduled runs easier to configure, and given you much more fine-tuned control over notifications. For each notification, you can now individually select sending criteria, recipients, and whether to include a screenshot.

It’s also a lot easier to temporarily enable/disable notifications, with a simple toggle switch on each.

The new schedule modal

🤖 Trigger notifications via the Hex API

And for those using orchestration tools or other API based methods to keep projects fresh, we’ve updated our RunProject API so you can send notifications to users, groups, or slack channels upon completion! Just add a notifications param with your configuration— see the docs for details.

We’ve also updated our managed airflow and dagster packages to support this functionality.

Trigger a notification from the RunProject API

Other improvements

  • Better Screenshots: We’ve updated the screenshot service powering all those notifications to improve image quality, and fix some bugs with sizing.
  • Magic project names: Sometimes, inspiration just wont strike when you need it. Add description... got you down on Untitled project? Magic is here for you! Go ahead and click those Magic icons next to the Project title or description to automatically generate helpful text based on the entire project’s contents.

📊 Upgraded SQL cells – now with charts!

We’ve made it easier to explore the results of a SQL query visually:

You can now create a chart directly in the SQL results section by clicking the creatively titled “Chart” button in the top right! These charts operate just like a standalone chart cell, so you can even drag them directly into the app builder.

While we were here, we also gave SQL cells a small makeover, cleaning up some of the buttons and simplifying the layout 🙂.

... and a revamped filter UX 🕶️

We’ve overhauled Table display filters to make removing nulls, outliers, or your own company’s email addresses a breeze. You can now filter data using the “Filter” bar, any column header, or even by right clicking on a value of interest. These filters remain visible at the top of the table so they can be easily reviewed and removed.

Table filters now also apply to the returned dataframe, so downstream cells will use the filtered data. If you were using table filters prior to this, you’ll have the opportunity to opt into this new behavior.

We also added the “Filter” bar to our Chart Cell to make them work seamlessly when switching between the results of a query and a chart, and to provide a unified UX across the product.

Bonus: these filters support Jinja inputs too (learn more).

… and a bunch of other improvements to tables 🏓

We also snuck in a few extra goodies to Table displays:

JSON columns got a glow up

Columns that contain arrays or objects now have a useful “Expand” button, so that you can view the contents of the column without having to scroll or copy paste into a text editor.

📋 Copy to clipboard

If the table you’re rendering is greater than 50MB, you can now copy the contents directly to your clipboard with a handy button.

Please be aware that every time you copy data from Hex directly to Excel, my company-mandated neural lace hits me with 10,000 volts. I’m not saying don’t do it, I just want you to have all the facts.

For real, though: If you find yourself frequently copying data out to another tool to do something, please don’t hesitate to let us know how we can make that something easier to do in Hex!

Copy to clipboard

↕️ Vertically resizable tables

You can vertically resize Table display cells (or SQL cells in Display mode), and then scroll within the configured height to view your results. This also works in the app builder, making it a lot easier to build neatly organized table/chart grids.

We’ve also changed the default number of rows to 50 for new cells 🎉.

📌 Column pinning

You can now pin a column in a table, to make it stay on screen as you scroll horizontally. Especially if you are on team OBT (see: ship logbook data from the intro), this makes life a lot easier.

Pinning a column in a table display

🔢 No more row numbers in CSV exports

We had a few customers share that they didn’t love that our exported CSVs includes row numbers in the file. We also asked our internal data team for their thoughts, and they didn’t hold back: “Frustrating AF”, “hate them”, “unprofessional”, “I always delete the row numbers”, and “no row nums. not ever”.

So uh, we went ahead and removed those pesky row numbers from CSV exports. They’re technically still generated, but at the last second before export we divert them to a nice big spreadsheet in the cloud where they can run and play together all day long.

Other improvements

  • Snappier chart edits: Hex now detects whether the changes you’re making to a chart affect the underlying data, or is purely a visual change (for example, renaming an axis, or changing a series color). If it’s the latter, we skip the data processing step, resulting in faster edits.

  • Snowpark is now enabled in Python 3.9 and 3.10 images. On the Snowflake side, this is still in private preview, so reach out to your Snowflake account rep to get it enabled.

  • Published app actions: We’ve added a cute lil button to make it easier to comment and share links to elements in a published app.

    The new action button