Skip to main content
Latest release:

This batch of features falls into the category we like to call “pixel-light, impact-heavy”: chart reference lines, a fresh new outline, dropdown display labels… and they’ve just been delivered into your Hex notebooks with laser precision. Hope you enjoy!

📊 Add reference lines to charts

You can now add vertical and horizontal reference lines to x- and y-axes in charts to indicate targets, thresholds, or important points in time. Want to add a super thick, greenish-brown line with a label at a 90-degree angle in the bottom-right corner? You’re free to style as you please (but we can’t save you from the critiques of that one stakeholder who’s really into color theory).

Adding vertical reference lines to a chart

📔 Redesigned notebook outline

In November, we released collapsible sections, which make it easier to organize your most complex projects — thanks to all of you who wrote in with some love!

We got hooked on the fan-mail dopamine hit and kept going by building an all-new “compact” outline with a mini overview and condensed summary for easier navigation and search within your notebook:

We've been using this internally for a few weeks now, and it’s changed the game — making it easier to navigate and work with big, gnarly projects. We also made some improvements to sections, including the ability to drag into a collapsed section.

Excited to hear what you think!

🔑 Dropdown display labels

Note: This feature will be enabled and generally available starting on February 7, 2025.

Some input values are not user-friendly. There’s always that one person on the team who knows user #14925300281 is Jeff, but for the rest of us, displaying the name or email is way more helpful.

With dropdown input parameters, you can now select a display column to render (e.g., email) but still have it return the underlying value (e.g., User ID).

Other improvements

  • Faster first run for published apps: We reduced the number of cells that need to run for you to get your answer by only running upstream dependent cells. (Before this update, first runs for published apps ran all the cells — even if they weren’t in the dependency line.)
  • Component upgrade notifications: Now when you publish a new version of a component, you can (optionally) notify all the folks who own projects consuming your component that a new version is available.
  • Db2 data connection: We recently built a new data connection to support Db2. This feature is currently in private beta, so reply to this email if you’re interested in testing it out!
  • Native decimal support for Snowflake: We now support larger numbers using the Python Decimal data type. In the Snowflake configuration panel, you can toggle on "Native decimal support" for up to 38-digit integers.

At Hex, December is a time for connecting, reflecting, and shipping! Others may slow down for the holidays, we cannot, we literally do not know how to do it, so here’s a tree full of presents we got for you, with much more on the way.

This week’s release has a bunch of improvements to much-used features like SQL and charts – but first, our most-requested feature…

🧮 Advanced compute profiles, now in GA

They’re finally here: more powerful compute profiles and GPUs 💪

Our new compute profiles give you access to more memory and compute power, allowing Hex to meet the challenges of your most demanding workloads. Choose from a variety of amazing acronyms like 4XL (16CPU, 128GB RAM) and V100 GPU (6CPU, 56GB CPU RAM, 16GB GPU RAM).

These advanced compute options can handle any compute-intensive Python task, whether that’s offline-training for your fraud detection model, fine-tuning an OCR transformer with GPU’s, or just working with a massive dataset. Now you can do it all, right in Hex.

Advanced compute profiles in action

Advanced compute is billed per-minute of usage, and we’ve included admin controls for cost observability and management, including spend limits, access controls, and usage logs. Check out the blog to learn more.

🧭 Explorer workspace role

When we introduced our “Explore” UI a few weeks ago, the first thing we heard was, “this is awesome, is there some way I can get this turned on for stakeholders?”

Well, the day has arrived: you can now provision users as “Explorers”. This allows them to start new Explores, Explore-from-Here in published apps, and subscribe to metric notifications (but not start full projects or write code).

Provisioning an Explorer role

This role is perfect for the data-literate folks in your organization who want to be able to slice-and-dice data or get updates, but don’t need the full firepower of a Hex Editor seat. Our product team wrote about the new Explorer workflows in a blog early this week - take a look!

Interested in getting this turned on for your workspace? Get in touch.

🫶 One-to-many and many-to-many no-code joins

No-code joins in Explorations now support one-to-many and many-to-many join relationships.

Hex will automatically detect duplicate rows that arise as a result of your join, and using the unique keys specified in the join configuration, accurately calculate aggregations on both the base and joining table. Plus, Magic can now intelligently generate joins when you ask questions, making data exploration even simpler.

One-to-many and many-to-many no-code joins

Don't worry about keeping track of these join relationships yourself - Hex will warn you if the join you've configured will lead to inaccurate results!

📈 Smarter chart labels

One of you (not naming names!) sent some feedback calling our chart labels “trashy” because of their tendency to overlap and… honestly, you had a point!

As part of our never-ending quest to make charts in Hex beautiful, we’ve improved the way labels and axes are rendered including:

  • Labels not showing in vertical bar charts if they don't fit vertically in their parent bar
  • A new "auto" position option for line and area charts which will automatically layout the labels so they don't overlap with any lines or other line/area data labels
  • We’ve also introduced a new “minimum tick step” setting on the y-axis.

Take a look.

The evolution of chart labels

We have many more improvements for charts on the way – including support for “wide” data and some nice performance boosts!

✍️ Better SQL autocomplete

Speaking of things we’ve heard from you all about – SQL autocomplete. We’ve made some big improvements here:

  • Autocomplete now activates for column names after a .
  • Automatically re-open autocomplete panel after a previous activation – for example, if you select a schema name to autocomplete, we then re-open autocomplete with table names
  • More consistent capitalization, using the previous alphabetic character in the SQL cell if there haven’t been characters typed

Our internal data team is loving the upgrades, hopefully you do too!

Better SQL autocomplete

⤴️ Visualize pivot values as rows

In the olden days, you used to only be able to visualize pivot values as columns, but now, in December 2024, we live in a miraculous future where you can view them as rows, too. What a time to be alive 🌅

It’s now easy to make pretty links in tables with automatic hyperlink rendering. When your data includes markdown-style links like [Hex](https://hex.ai), we'll automatically transform them into beautiful, clickable links - no more messy URLs cluttering up your tables!

Other improvements

  • You can now cancel queries fired off from explorations, so if you accidentally kick off a bigger-than-expected task, you can shut it down before it runs up your warehouse bill
  • We now support relative line numbers in SQL and code cells, which will come as a delight for y’all nerds that have Vim key bindings enabled. To use, open the command palette (cmd+p) and choose “Toggle relative line numbers”

We’re turning on our new “Ask Magic AI” responses for data questions for all Team and Enterprise plans. Plus, embedding is coming to Hex! And for those of you who find yourselves in long, scrolly projects, we’ve got a brand new Marie Kondo-esque improvement to help you keep things tidy.

✨ Ask Magic - now with support for data questions

Ask a question from the home page and get pointed to an existing app or a new Explore.

Magic now works outside of projects. Ask Magic a question and it will recommend existing published apps - a powerful new feature that “deflects” questions to trusted analyses. Say you want to know “what campaign is performing best this quarter?” Magic will point to the “Campaign Impact Dashboard” or whatever the relevant app is.

If the answer isn’t in an existing app, Magic will offer to create an Explore so even your no-code users can see, understand, and trust the response to their question. Not sure where to start? Try one of Magic’s suggested questions custom-created to your team’s data.

💡 Data Curation Suggestions

Admins get suggested tables to endorse in a new area of the data browser called “Curation.”

Magic is really smart about SQL, Python, and analytics, but it can lack business context - like a new hire. You can help Magic the same way you can help a new team member, by curating the data in your workspace. With our new curation suggestions, Magic helps you help itself (and others). Curations automatically surface popular tables and datasets that Admins may want to endorse.

Curations can be accepted or dismissed. Magic will prioritize using endorsed tables when answering questions and generating suggested prompts in Ask Magic - helping your non-data team users ask the right questions and explore the right data.

Want a deep dive on how to best optimize your workspace for LLM's? Join our upcoming Magic & Data Curation conversation on Wednesday, December 4th or learn more about curation in our docs.

Our Magic team is looking for design partners! If you’re a workspace admin or leader excited about using Magic to help enable your team to ask and answer data questions we want to talk to you. Reach out to [email protected]

📊 Embedded Analytics (Beta)

Embed a Hex App into your secure website with pass-through auth and row-level security.

Securely embed data apps with Signed Embedding

By popular request, we’re bringing advanced embedding capabilities to Hex, so you can securely embed content for your customers. The beta includes pass-through authentication to allow your users to view embedded content without a Hex login, and row-level security to customize the data per user.

We have lots more on the roadmap, but if you’re interested in learning more about embedding, including questions about pricing, reach out to: [email protected].

🔄 Recent Explorations

See and browse your history of Explorations so you can start up where you left off.

The recent explorations table

If you haven’t tried Explorations yet, this is your sign. If you have tried Explorations but didn’t bookmark one you meant to, accidentally closed your browser tab, or your cat walked on your keyboard, this is your solution. Now you get a 14-day history of explorations you created so they are easy to recover and re-open.

Find them in the Recents tab of your Explorations page.

🗂️ Collapsible Notebook Sections

Group cells into sleek, nested, beautiful sections that collapse to keep your notebook organized.

People build some amazing – and long! – projects in Hex. And those super scrolly projects can get... a bit unwieldy. Many (many) of you have reached out asking for a better solution, and today is your day. Sections are groups of cells that can be labeled and nested within a project. Grab one cell at a time or select multiple. Move them in and out of sections with ease.

Your projects have never looked so put together.

Other improvements

  • The share dialog got a makeover. We simplified the buttons, tucked away some text and overall made it a whole lot cleaner.
  • Data connections now have a new permission, Can view results, that can be used to limit who can view the results project that use sensitive data. This feature is available on Enterprise plans. Learn more in the docs.
  • Magic now recognizes Snowpark data frames and will automatically include them in suggestions.

Today we're launching Explore — a powerful new way for anyone to analyze data in Hex without writing code. This release brings drag & drop analytics to Hex, along with major improvements to Magic AI, new semantic layer integrations, and data-driven notifications.

🔍 Explore: Visual Analytics for Everyone

Build complex analyses by dragging dimensions and measures onto a visual canvas — no SQL or Python required.

Our new drag & drop interface lets business users answer their own data questions without constantly tapping the data team. Explore brings together several powerful capabilities:

  • Visual Builder: Drag dimensions and measures to create detailed visualizations and tables
  • Spreadsheet Calculations: Build custom logic using familiar spreadsheet formulas
  • No-code Joins: Merge tables with automatic key detection and fan-out deduplication
  • App Integration: Drill directly into the underlying data of any Hex app
  • Notebook Chaining: Connect Explores with SQL, Python, or other Explores to build complex analyses

Explore is available as a cell in notebooks on all plans and as a standalone UI on Teams and Enterprise Plans.

🪄 Enhanced Magic AI

Magic AI now helps anyone find the right data and start new analyses.

Ask Magic questions like "Which launch emails had the highest engagement?" and it will:

  1. Recommend existing, endorsed analyses that might answer your question
  2. Offer to start a new Explore to build the analysis from scratch

Enhanced Magic AI capabilities are currently in private beta. Email [email protected] to join.

📚 Semantic Layer Integration

Sync your existing semantic definitions directly into Hex's data browser and Magic AI.

Your semantic models can now guide users to the right data across Hex:

  • Import measures and join relationships
  • Surface semantic concepts in Explore and the data browser
  • Enhance Magic AI's understanding of your data

LookML sync is in private beta today. dbt MetricFlow integration coming soon.

🔔 Conditional Notifications

Set up alerts when metrics hit milestones or encounter issues.

Users can now configure their own data-driven alerts:

  • Set conditions based on metric values
  • Receive notifications via email or Slack
  • Choose between scheduled or data-triggered alerts

📅 Upcoming Explore Events

Want to learn more about these new features? Join us for these upcoming sessions:

  • Wed, Nov 13: Data Teams & Business Users: A Match Made in Hex - with CEO Barry McCardel
  • Wed, Nov 20: Explore the New Frontiers of No-Code in Hex - with PM Sarah Tayeri
  • Wed, Dec 4: A Little Magic, A Lot of Data, and Trusted Answers for All - with PM Olivia Koshy

Sign up through your Hex workspace or contact our team for registration details.

🔒 An update on Hex project permissions

An important change is coming to Hex's project permissions

Previously, Viewers in a workspace could be given one of two different project permissions:

  • Can view: Allows users to view the published app and the notebook of a project, including unpublished projects. This permission also allowed users to view data powering a chart, or explore charts and tables included in a published app if the user has an Editor seat.
  • App Only: allows users to view and comment on only the published app.

We're updating these project permissions to the following on December 2.

  • The Can view permission is being relabelled to Can explore to better reflect the capabilities included in this project role. Can explore permissions are only available to Editors.
  • Viewers in a workspace can only be granted the Can view app project role, to ensure they are viewing work that has been marked "ready for consumption" by being published.
CapabilityCan exploreCan view app
Previous nameCan viewApp only
Required workspace roleEditorViewer
Create and view saved Explores from Published App
View Data from Published App
View and comment on Notebook view (including unpublished projects)
View, comment, and use inputs on Published App
Download data from published table displays
Receive scheduled deliveries set up by someone else

There are two consequences of this change for Viewers in a workspace:

  1. Viewers will no longer be able to view the Notebook of a project. If a Viewer relies on unpublished notebooks as a source of information, consider publishing the project to give them access.
  2. Viewers will no longer be able to use the View Data feature on a published app. If a Viewer relies on this feature to access a tabular version of a chart's data, consider updating the app to include a Table display cell

Until the changes take effect on December 2, we'll notify Viewers in-product if they are taking actions that will no longer be available.

I’m always showing off cool, flashy projects and visualizations in these updates. But the reality is that most of the hard, time-consuming stuff in data is a lot less glamorous! Access control, governance, keeping things tidy, doing a hundred find & replaces… you know how it is.

Today we’re shipping some new tools to make that governance and organization a little bit easier for admins and editors, as well as one little long-requested power user feature!

🎃 Big Release Alert 🎃

On October 30th, we’re releasing some seriously exciting new drag & drop exploration features that I cannot wait for you all to see. I’ll be hosting a special How to Hex to walk through everything in depth:

Sign up here!

🪪 OAuth pass-through for data connections

Snowflake, BigQuery, and Databricks connections can now be configured to require users to sign in via their data warehouse, instead of using a service account.

This makes for tighter security and easier auditing — no one can get data they haven’t been explicitly granted access to, and it’s easy for warehouse admins to see which users are running which queries.

When you set up an OAuth connection, you can choose how you want credentials to be shared. Disabling credential sharing will require every user accessing an app or notebook to authenticate with their own credentials (like in the video above), but you can choose to share the project publisher’s credentials in the app, notebook, or both.

Switching credential sharing options

OAuth is available upon request for workspaces on the Enterprise plan. Reach out to [email protected] to get started, or check out the docs.

🧹 Schema filtering

Admins can keep Hex tidy for users by filtering which databases, schemas, and tables appear in the Data Browser.

Connection schema filtering

You’ve got dev schemas. Us too. You’ve probably even got dev_user_1017_oneoff schemas. Us too!

It’s now super easy to exclude this kind of clutter from the Hex data browsing experience —and Magic AI completions— without having to mess around with warehouse permissions or access grants. Schema filtering lets admins use exact matches or regex rules to include/exclude specific warehouse objects from Hex.

Excluded objects can still be queried with SQL, but won’t appear in the data browser, autocomplete, or Magic AI responses. To fully remove access to certain objects, you’ll want to set up role permissions in the actual warehouse.

🗃️ Magic data sources

We now display which tables Magic AI considered using for a query, and let you switch tables with one click.

Just like humans, AI sometimes has a hard time deciding between dim_orders, orders, all_orders, analytics.orders, and so on. We’ve given users new tools to inspect the data sources Magic considered using when writing a query— and swap them out instantly.

Pro tip: this can be a great nudge to add documentation or endorsed statuses to improve responses! If Magic considered analytics.orders and analytics.dim_orders but incorrectly chose orders, being able to see that and throwing a Blessed status or specific data browser docs onto dim_orders can prevent the issue from happening again.

🔡 Multiline text input

Text inputs can now be made

multiline.

Multiline text inputs open up a whole new category of apps you can build in Hex: chatbot Q&A, data entry and annotation, complex natural language processing workflows, and more. Many of you were already building these kinds of apps, but now they can be much more beautiful and user-friendly with nice, spacious text inputs.

🔎 Project find & replace

The project search sidebar now supports find and replace across entire projects.

Project search also gives you control over which type of cells to search over, making it easy to find specific parts of complex projects. You can replace text for individual matches one-by-one, within cells, or across an entire project with one click.

Open project search by hitting Cmd+F twice, or clicking “Find” in the sidebar.

Other improvements

  • Slider intervals have been made more regular
  • Projects page has a new “created by you” quick filter
  • There’s a new command palette action to collapse/uncollapse all cells in a project
  • You can now rename and delete snapshots 🤯 (this has actually been my personal white whale. If you haven’t tried snapshots, now you should.)

Today, we’re excited to share initial results from some big performance initiatives we've been working on, including 90% reductions in frontend page load time for large projects, up to 10x improvements to execution speeds for projects without Python code, and more!

These are meaningful improvements, but we know there’s a lot of work still to be done. We deeply understand this and have entire teams internally that continue to be dedicated to making Hex faster 🫡. 

😴 Lazy Dataframes

Certain types of projects now execute up to 5-10x faster by skipping unnecessary pandas DataFrame creation.

Our new lazy architecture for data storage

We’ve rolled out a complete overhaul of the fundamental data interchange format cells in Hex use to store and manipulate data.

Instead of materializing slow, inefficient pandas DataFrames into memory to power our no-code cells, our new lazy loading architecture stores data as Arrow files in S3 and provides a lightweight “Lazy Dataframe” stub for cells to reference and pass around. When cells need to run operations on a dataset, they issue SQL queries directly against the remote arrow files using DuckDB.

This means data is never sent to the Python kernel unless it’s required by a Python cell. No slow, unnecessary dataframes are created, and most importantly: everything still works exactly the same way with no noticeable changes for users.

Well, other than speed! This new architecture has massive performance benefits, specifically for large projects that operate on large datasets without Python. Across three test projects, we saw average runtimes go from:

  • Specific performance test project: 12s → 1s
  • Real internal project: 15-20s → 3-5s
  • A critical customer report: >2min → 30s

The under-the-hood details are pretty neat here! Read all about them on the blog: Optimizing Multi-Modal Analysis by Lazy Loading Dataframes

🫥 Frontend Virtualization Improvements

Big projects (100+ cells) load and render up to 90% faster.

This video shows a project with 1408 cells (!) scrolling quickly and behaving normally. This wouldn't have been possible with our previous system!

We’ve made significant updates to the virtualization engine that powers large projects, to keep the UI snappy and quick even when projects get up to hundreds of cells.

Testing against a particularly large Hex project, our updated virtualization method resulted in:

  • 90% reduction in initial notebook render time
  • 33% reduction in UI interaction lag
  • 14% reduction in render lag during scrolling
  • 10% reduction in overall memory usage

🍿 Fast Kernel Startup

tl;dr: Fresh project runs are up to 10s quicker, thanks to major optimizations on kernel startup time.

We’ve made many improvements to the way we initialize Python kernels for projects, bringing p95 kernel startup overhead from 12s down towards 1s.

Many of these fixes were little optimizations on already fairly quick workloads. For example, we reduced the time needed to locate a particular kernel in our network from 200ms → 10ms. We also found some big wins though, saving up to 8s on every kernel initialization by optimizing the way we spun up their initial code.

We’ll keep looking for improvements big and small here!

🧭 Faster Explores

Exploring from charts is 5-10x quicker, unburned by the weight of ...the ancestors?

When you Explore off a chart, we used to obtain and execute all of the “ancestor cells” of that chart in order to create the data needed to power the Explore. This could make exploring really slow, depending on how a particular project was structured.

We can now instantly fetch just the immediate dataset required to power an explore, rather than derive it on the fly from all the ancestor cells.

The impact of this is variable depending on how slow or numerous those upstream cells are, but it can be quite significant. On a real internal project I used for testing, my explore load time went from 30+ seconds to around 5 seconds.

🏎️ Advanced Compute Profiles (beta)

We’ve done a lot of work to make our code run faster, but unfortunately we can’t make your code run faster. Oh wait, no, we totally can— if you’re willing to pay for it!

We have two new heavy duty compute profiles available in closed beta, with usage-based billing:

2XL: 8 CPUs, 64 GB memory 4XL: 16 CPUs, 128 GB memory

Our new compute profiles in the profile picker

These larger profiles will let you work with larger datasets and parallelize heavy workloads. We will be experimenting with other profiles in the future, including GPUs.

If you’re interested in joining the beta, please fill out this form. And if you are a Hex user, but still have to run a workload in another environment because of compute requirements, please let us know! We want to meet all your compute needs.

📊 Run Stats (beta)

Detailed execution data is now available for projects, so you can easily identify bottlenecks and slow queries.

The run stats profiler in action

You’ll find Run Stats in the Run dropdown menu, where you’d go to stop or restart a kernel. It gives you detailed execution timing for every cell and the entire project, as well as some of the internal things I’ve mentioned above like kernel initialization.

This should make it a lot easier to pluck out slow queries, long Python blocks, or anything else that seems out of sorts.

Pro-tip: Combine this with the graph viewer to get a really detailed sense of a project’s execution flow and performance!

🚀 Onwards

We’re really excited about the headway we’ve made so far, but our quest is not even close to over. Perf work is like whack a mole, or maybe an ultramarathon. Perhaps one of those bootcamps where you have to crawl in the mud under barbed wire while someone hollers at you.

Either way, we’re committed to keep improving Hex’s performance on all fronts, from tiny kernel initialization gains to major execution overhauls and frontend rendering improvements.

Please continue to report places where things feel sluggish, because it’s our best data for making improvements. All the things you just read about are directly based off of example projects sent in by users! 

Until next time 🖖.