Skip to main content
Latest release:

All the features shipping today are highly requested— I’ve personally fielded many requests from you all for some of these, so I hope you enjoy! The Data Manager is a particularly impactful new feature, but I personally am irrationally excited for the CSV UPLOAD CELL!!!1111

📖 Data Manager public beta

Today we’re opening public beta access to the Data Manager, a metadata tool that’s purpose-built to enhance Hex Magic’s SQL writing skills and custom tune them to your organization’s data.

The Data Manager provides a nice, simple interface for you to access and edit four different kinds of metadata about your data connections:

  • Schema, table, and column information from your data warehouse.
  • All your dbt documentation, live synced from dbt Cloud or manually added from dbt Core.
  • Priority rankings that determine which schemas, tables, and columns should be included, excluded, or prioritized for Magic AI.
  • Any additional descriptions or custom metadata you want to provide.

Hex uses this metadata to create vector embeddings to power the semantic search algorithms that are the secret sauce in Magic’s SQL generation engine. Better metadata = better embeddings, and better embeddings = better SQL generation.

The coolest part is that you can provide really custom guidance using normal natural language. Magic is incredibly responsive to things like “only use this table if the prompt explicitly requires raw stripe data, otherwise use fct_orders”, or “this column contains a stringified array of items”. You can essentially educate it as you would a human member of your data team!

I spent about 10 minutes setting up the Data Manager on an internal connection yesterday, and was able to improve SQL generation success rates from 82% to a dazzling 96% on our prompt evaluation suite!

We just published a very detailed blog that introduces the Data Manager and highlights some real examples of using it to tune SQL generation, with specific advice on how to leverage it yourself.

Data Manager is available for workspaces on the Professional plan and above. Workspace admins can find the Data Manager from the bottom left of the homepage sidebar, or at https://app.hex.tech/your-workspace-id/data.

🆙 CSV upload input

The CSV upload input parameter… lets app users upload CSV files! Need I say more?

It also automatically parses the uploaded file and returns a DataFrame for use in downstream cells 🙂.

I’m willfully choosing to not look at the data and am just going off of ✨vibes ✨ here, but I think this has to be one of, if not the most requested feature in our backlog.

And I can see why! Letting end users of apps upload their own data lets you do some pretty cool stuff. A neat hack I threw together: If you pair it with a table input, you can even give app users a full spreadsheet editing experience that culminates in visualization, or data transformation / writeback.

Learn more in the docs.

💼 Presentation mode

Pop your app into Presentation mode to get a full screen experience that splits tabbed apps into individual slides that remain fully interactive.

For years now, we’ve run our regular metrics reviews and Board of Directors meetings out of Hex apps, rather than slide decks. Scrolling through an app always worked just okay. Tabs were a big improvement, but for a real deal meeting, you can’t beat a good old fashioned slide deck.

Unless, of course, you turn an interactive data app into a slide deck, while maintaining the ability to interact with and explore data live, right from the slides 😉. Next time you’re presenting complex findings or doing a metrics review, split your app into tabs and give presentation mode a spin!

Presentation mode is available for workspaces on the Professional plan and above.

🧟 Auto Archive

Workspace admins can now configure auto-archiving of projects based on time elapsed since they were last edited or viewed.

Auto archive settings

This is a pretty straightforward addition, and we hope it will help keep your workspace tidy. What happens when projects get archived?

  • They are excluded from search.
  • Any associated scheduled runs are disabled.
  • They are NOT deleted, and can be unarchived if needed.

This is a way to gain some ground back from all the Untitled projects and half-done explorations lying around your workspace, as well as old masterpieces that were useful at one point, but aren’t in active service anymore.

Auto archive is available for workspaces on the Team plan and above. Find the config in Settings > Organization.

Other improvements

  • Users that have the Slack integration installed can now respond to access requests to projects from within Slack! And if a coworker gets to the request before you do, the Slack message will be updated in-line to let you know. (Note: for now, this only works for users on our multitenant stack, i.e. if your Hex URL starts with app.hex.tech.)
  • We’ve improved how chart cells are displayed in the outline sidebar! They are no longer (quite as) squished.
  • Single value visualizations now support standard Python negative indexing, so you can select the -1th row to reliably grab the last row in a dataframe of dynamic length.
  • Assorted improvements and bug fixes to in app notifications.

Here’s one of the founding principles of Hex: You can do the best analysis in the world, but it won’t be useful unless the right person can see it.

Until they see it, it is Schrödingers data analysis. Useful? Not useful? A radioactive, poisoned cat? It is actually all three.

There’s no way to know for sure until someone sees your work, understands it, and makes a decision based on it. This is why Hex lets you turn your notebooks into reports that others can see, understand, and action off of.

And today we’ve got a bunch of improvements to the way you and your team consume data from those Hex apps you build! Caching, filters, notifications, exporting projects— it’s all a little bit easier now.

⌛ App freshness

You can now set a cache timeout for entire published apps. When a viewer opens a “stale” app, it will automatically begin refreshing in the background, and alert the viewer when the new results are available.

The new app freshness indicator.

Previously, updating results in an app required a scheduled run. With the new “Rerun app if stale” setting, any time a viewer opens an app, Hex will check if the results are fresh or stale. If they’re stale, Hex will automatically start refreshing, and let the viewer know when there’s new data.

This means less configuration, fresher data for everyone, and no scheduled runs on that app people stopped looking at months ago— potentially saving you some warehouse $$!

Editors can configure the time-to-stale and refresh behavior from the App settings sidebar. We’ve defaulted the "Rerun app if stale" setting to off, but we recommend you enable it for apps going forward!

Learn more in the docs.

🔍 Project filters

Project filters make apps dynamic without the need to parameterize SQL and Python by hand. Just create a new filter, attach it to app elements and dataframes by pointing & clicking, and you’re done.

We teased Project filters last month, and they are now fully available for everyone to use! You can get started by choosing “Add project filter” from the notebook or app builder in any project.

Project filters work especially well on apps with many tabs, or in complex projects where parameterizing tons of SQL queries would be a chore. They also make it easier for viewers to reason about how apps are being filtered, and they work seamlessly with the cross-filters that viewers can configure themselves!

Looking for more guidance on how to use project filters alongside filter cells and input parameters? Check out the docs, or watch this 5 minute Loom video where I explain the difference:

🔔 Notification center

Editors and viewers can now manage all Hex notifications and access requests from one central place.

This new notification center is available in the sidebar of every page in Hex, so you can easily triage failed runs, project access requests, and new comments without having to slog through your email or Slack.

📜 PDF export

You can now schedule PDF captures of an app, and viewers can export PDFs right from the published app.

You know who you are, PDF lovers. And I know you have your mysterious reasons. Presumably with this feature you are now one step closer to global domination. I just hope you remember me when you seize control.

Quick facts: PDFs are exported with the visible app layout at time of publish, so build your apps for export if you know they’ll be consumed that way! Anonymous users (if your project is shared publicly) cannot export PDFs.

PDF Export is available for Teams + Enterprise customers.

🤳Mobile improvements

We heard you, subway riders, busy parents, and the rest of the diverse compulsive Hex app checker community. We’ve updated our mobile styles to make Hex apps nice to use on your phone!

Me and my nan checking our latest MRR numbers.

These improvements only apply to the published app view for now, and we know there’s a lot more work to do on the homepage and list views.

Other improvements

  • We’ve patched up some issues with the dbt integration in the data browser not showing column-level information.
  • Tidied up some of the styles on table display cells on large screens
  • We removed the 'day' option from the chart cell Time Unit picker. This is a tiny thing, but it always peeved me to click it and get the Day of Year 😑. You always want 'date' instead, trust me!

The Hex team was at dbt Coalesce in San Diego last week, and I had the tremendous good fortune to meet a ton of you in person! Thank you so much for coming by and saying hello 🙇.

Also at Coalesce:

  • Hex won dbt’s Innovation Partner of the Year Award for our Semantic Layer integration (blog).
  • Me and my colleague Matt spoke about the metadata architecture behind Hex Magic (recording).
  • Amanda from our data team gave a fantastic talk about how we do marketing attribution (recording).
  • Honestly just a ton of great talks that have nothing to do with Hex! They’re all on Youtube— binge away.

But that was last week, and I think we agree: the past is over. This week, I’ve got some lovely new Hex features for you across the entire platform, from dbt to debugging. Read on for the updates!

📏 dbt Semantic Layer Cell

Hex’s integration with the dbt Semantic Layer makes it easy to bring trusted metrics and dimensions into your Hex projects, with a drag & drop UI that now features metric search and a snazzy improved layout.

We’ve completely overhauled this cell to support the new v1.6 of the Semantic Layer and use the new dbt Discovery API. We’ve also opened this integration up to more data connections: It’s now available for BigQuery, Redshift, Databricks, and Snowflake connections!

With this cell, technical users can have confidence that the foundational data for their analyses are standardized and approved, and less technical users can use the simple UI to explore company data without writing any code.

Check out the docs to see how to set it up.

☃️ (even more) Native Snowpark DataFrames

Hex already had the best environment for Snowpark work, with one-click sessions and the ability to initiate Snowpark workflows from a SQL cell. Now, Snowpark DataFrames in Hex have the same level of support as pandas DataFrames, fully supporting:

  • Chart and Table display cells
  • Pivot, Filter, and Writeback cells
  • Polyglot SQL → Python → SQL workflows. Just like other DataFrames, now you can query a Snowpark df with SQL, operate on it in Python, query that output df in SQL, and so on.

To answer your first question: We’re not just doing a df.toPandas() in the background! When you use a Snowpark DataFrame in a native Hex cell, the full results are still not pulled into memory— Hex pushes down any chart aggregations, transformation logic, or writeback instructions all the way down to Snowflake, and only fetches that operation’s results into memory.

🐛 Debug mode

Using debug mode to fix a published app.

It can be hard to figure out what’s wrong with a broken Hex app! You can’t be sure if changes have been made to the notebook since it was last published. You restart & run all, but don’t see the problem— wait, what input parameter values were you using? It can be a total slog.

Debug mode fixes that. Now, if you get an error in a published app, you can enter Debug mode. This gives you a side-by-side view of the app version that’s erroring (with all the input parameters and filters that might be causing problems) and the notebook that reflects that specific app state.

I debugged four old broken apps to test this, and it felt so natural! It was so easy I was actually sort of unimpressed, until I turned the feature off and went to try the old way— and genuinely couldn’t figure out the problem with an app.

Other improvements

  • We’ve made improvements to workspace search to better support partial matches. “Rev” is now more likely to match “Revenue”, and so on. We’re continuing to work on improving search!
  • We now have multi-tenant HIPAA compliant hosting! Previously you had to be a single-tenant customer to get this, which can come with a lot of baggage. We’re proud to now offer it in a more standard multi-tenant environment.
  • Last week was “Hack Week” for the Hex team… so expect lots of interesting little things coming down the line. If you can guess which items from the next couple product updates are the results of Hack Week and not regularly scheduled product programming, I’ll mail you some Hex swag.

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