Skip to main content
Latest release:

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 🖖.

🧮 Parameterized Calculations

Input parameters can now be referenced in calculations using standard {{input_name}} syntax.

We built Calculations to let business users dive deeper into data and answer their own “what if” questions without constantly tapping the data team on the shoulder. Now those same users can write calculations that respond to user input, building entire interactive reports end-to-end without writing a single line of SQL or Python.

Here’s a short video where I build a what-if scenario modeling tool. I rely on parameterized calcs and don’t write a single line of SQL or Python code— and the end product is linked here for you to explore.

Building these kinds of custom reports has traditionally required data team support, and now it’s well within the reach of any data-curious explorer.

Learn more in the docs.

🔢 Single Value Aggregations

Single Value cells can now calculate totals, averages, and other column aggregations.

Aggregating a column from the single value cell config

Can you imagine a world so cold, so savage, so brutal that you’d need to use an intermediate Python cell to sum a column for single value display?

Let that world be nothing but a forgotten memory, an ancient myth.

Just like parameterized calculations, this removes one of the last bits of friction preventing no-code users from building rich, custom apps in Hex. It’s now possible to go from the data browser, to a table display, to a single value cell showing a column’s average without writing any code.

You can even turn any total from a Table Display into a standalone Single Value with just a click:

As part of this upgrade, Single Value cells also accept Query objects in addition to Dataframes, which lets these aggregations run on datasets of any size without pulling results into memory.

🐍 AI Autocomplete for Python

AI powered code completion is now in beta for Python.

Hex gives you fast, relevant AI code suggestions as you type, based on context from your entire notebook— not just the cell you’re working in. All you have to do to accept is hit Tab.

This feature is in private beta as we iterate on accuracy and the completion UX. Reach out to [email protected] if you’d like to be added to the beta!

🧙 Magic UX updates

You can now test run AI edits before choosing to accept code or keep iterating.

Previewing results of a Magic edit

This tightens the feedback loop of working with Magic and lets you edit with more confidence. Rather than have to accept AI edited code in order to evaluate whether or not it actually does what you want (and then potentially revert or edit it after), you can run the response in a sandbox, and decide whether to keep it or continue iterating.

Magic will also let you know when it can’t help with something. Some functionality isn’t supported by Magic yet, like writeback cells and input parameters, and now Magic can politely let you know when something’s beyond it’s current capabilities.

💬 Hex in the Slack App Directory

Hex’s Slack integration is listed in the official Slack App Directory, which unblocks access for some workspaces due to security policies.

We heard from some customers that their infosec rules prevented installing Slack integrations that weren’t in the official Slack App Directory. Now those customers can use the Hex integration!

Learn more in the docs or get right to installing.

Other improvements

  • Date diff functions have arrived in Calculations 🎉. You’ll find DiffDays, DiffHours, Diff…. you get the picture. Enjoy!
  • Charts will now attempt to cast columns automatically when needed. For example, if you choose a string column for a y-axis that has numbers represented as strings (“1”, “2”, “3”, etc.), Hex will cast them to numbers and show a continuous axis, not a categorical one.
  • When picking columns from a multi-select, you will no longer be auto-scrolled back to the top of the list.
  • “Copy link with inputs” now includes filter selections as well as input parameters.
  • When removing a data connection within a project, you now have the option to replace all instances of it with another data connection.
  • There are new filters on the Projects page, including a filter for whether projects require a review, whether they are scheduled, and which collections a project is currently in.
  • If your workspace uses auto-archive, we now exclude any projects that have been manually restored from future auto-archiving, so you don’t have to keep whacking moles. Or un-whacking moles? Whatever. You don’t have to worry about moles at all, for any reason.

This month we’ve got some really useful new tools for keeping your Hex workspaces organized, and two simple but impactful updates to AI workflows.

We also published a blog post about these new organizational tools with a lot more in-depth example videos and details. Check it out!

🌪️ Find and organize your projects

We’ve added more filtering options to project lists, and you can now select and take action on multiple projects at once.

Above, I'm using filters to identify some loose demo apps that were shared publicly, and then quickly adding them to a collection with bulk actions.

From any project list, use checkboxes or shift+click to select multiple projects. Once you've made a selection, you can add to collections, change statuses, add categories, and archive or delete in bulk.

You can also now filter project lists by title, status, category, ownership, and permissions — and sort by all of these, and more.

Here, I'm combining filters to find obsolete duplicates of projects that were meant to be shared externally, but never made it out of the exploratory phase:

Read the blog post for a look at all the new features and some specific recommendations on how to use them to tidy up!

🤝 Transferable project ownership

Ownership of projects can now be changed over time as teams and responsibilities change, to prevent permissions confusion.

The new transfer owner action in the bulk actions bar

Just like bulk actions and filters, this is a tool to keep your workspace tidy. As teams change, sometimes you need to change ownership of important projects. Now you can make those transfers with just a couple clicks (and it can be done in bulk, too!).

I assume my keen-eyed data audience will immediately realize that this introduces some new metadata... Indeed, every project now has both a Creator and an Owner. Creators are immutable, but Owners are designed to change over time. Both are of course available for filtering and sorting!

Learn more in the docs.

🤖 Smarter, faster AI edits

Magic AI edits now make line-by-line changes to SQL and Python instead of rewriting everything.

You can also continue editing without accepting or rejecting, and edit conversationally with improved message history.

There's two changes on display in that gif: diff-based editing and continuous editing.

Diff-based editing means Hex returns only the specific line edits necessary to achieve your request, making it faster to work with large queries and complex code using AI. Now, no matter how big your query or code gets, AI edits will return lightning fast.

Continuous editing lets you keep editing without accepting/rejecting the most recent AI response. Combined with a new context memory of your requests, this means you can more naturally iterate on changes with Magic.

I use this all the time now, most commonly to make an edit to one part of some code and then say “awesome, now do that for all the remaining functions”.

The fact you can say “do that” and it knows what "that" means from the prior context seems trivial, but is an absolute game changer for efficiency and flow.

🛡️ Workspace API Tokens

Admins can now configure workspace API tokens that do not expire.

Configuring a permanent API token

Hex has always had personal API tokens, with an expiration policy to ensure they're rotated frequently. We’ve heard lots of requests for permanent API tokens. This makes total sense: you don’t want your orchestration flow breaking every 14 days when a token expires.

So we’ve added the ability for admins to set up special workspace tokens that don’t expire! Unlike personal tokens, these can be centrally managed and revoked by any workspace admin, so you don’t lose track of them. We do still recommend you periodically rotate workspace tokens!

Learn more in the docs.

Other improvements

  • Schema Refresh Control: Admins can now restrict who is allowed to manually refresh connection schemas in the data browser. This change, especially combined with our existing refresh-on-a-schedule feature, is a nice way for workspaces to regulate when a schema gets refreshed, and by who!
  • We fixed an issue with IsNull() previews in Calculations.
  • We are knee deep in some frontend performance work to make big notebooks faster, which you'll hear about later in the summer.