Skip to main content


Additions and updates to Hex.


We've recently released several features in service of a broader vision to bring software engineering best practices for collaboration and peer review to data work. There’s been one last feature missing.

We’re really excited to show you the final piece of the Hex versioning suite: GitHub sync. Synced Hex projects will store every new version as a commit to a development branch in GitHub; the published app in Hex will remain in sync with the main branch.

As you build, save versions, and publish work, Hex will manage branches for you and automatically push to main when necessary. If you make changes to a project from outside of Hex, it’s easy to pull and sync them back into Hex.

You can also choose to require Pull Requests, which will add a step to the publishing workflow that requires a PR to be approved and merged on GitHub before a new Hex version can be published.

This unlocks a host of powerful abilities, allowing you to programmatically access and edit Hex projects. Some things you might find yourself doing:

  • Running a find & replace across all Hex projects to replace a table name that’s been changed.
  • Integrating with your project tracking tool to auto-close tasks when a project is published.
  • Enforcing some über-custom linting scripts on your Hex code for org-specific code rules.
  • Hooking up a printer to automatically spit out a hard copy of every Hex version so you can proudly send them to your family to stick on the fridge.

Read more on the Blog


We built a Text cell! It supports rich text editing with live preview, markdown syntax, and jinja parameterization. Don’t tell Markdown.

Look, we all love Markdown. Nobody loves Markdown more than me! I, for one, have never had even fleeting thoughts about a different text editing experience. Even when I handwrite letters to my pen pals, I make sure to write _ and ** for emphasis.

But I mean, sometimes it could be kind of nice to format a block of text without having to wrap it in special characters... Not usually, of course, but I suppose just between you and me it sounds a little dreamy to select some text and have a little toolbar that could change the formatting right there. But that’s probably crazy. Markdown! **It’s the best**.

So I know you all probably barely even want this, but we wanted to put it out there just to, you know, see if it's cool, almost as a joke. ha ha! rich text!? never even heard of it.

Enjoy :)


Admins can now upload a custom logo that will be displayed on published apps. Other parts of Hex, like the home page and logic view, will continue to use the default Hex logo.

We hope this helps make your published apps really pop and feel like key pieces of your organization’s knowledge.


  • Columns in the schema browser are now ordered by how they appear in your table, not alphabetical order. For existing tables, you’ll need to kick off a schema refresh to see this.
  • The dbt integration now works with Databricks connections.

  • Columns of type TINYINT UNSIGNED were causing SQL cells to error, but are now supported.
  • We’ve resolved problems that were causing some projects to be very slow to publish.
  • We found and fixed a sneaky race condition that occasionally led to blank input parameters in published apps.
  • Duplicating a metric cell now appropriately duplicates all formatting options.
  • We fixed an issue that caused multi-select inputs to sometimes display cached values that were no longer valid.

I was in the library the other day, in the Restricted Section, and I read something rather odd about a bit of rare product functionality. It’s called, as I understand it... Dark Mode.

You can enable Dark Mode from the new User Preferences section of the Settings, where Theme options reside. You can sync Hex to your system mode, or choose to always be Light/Dark.

Check out a demo here

Every single screen of Hex has been carefully themed, from dialogs to inputs and even charts. We'll be adding more themes in the near future, like a dimmed theme and colorblind friendly mode.


When publishing, in addition to the app preview you’ll now see a “Logic Diff” tab that tracks changes to outputs, code, and configuration on a cell-by-cell basis.

This means changes to backend logic are readily visible when publishing new app versions, even for cells that aren’t directly displayed in the app layout.

New cells, updated outputs, markdown grammar fixes, and tweaked SQL queries are all visible and easily auditable before publishing.


I only check my email every two weeks, on Thursdays when I send these release notes. Outside of that, it’s all Slack. This means I regularly miss important Hex notifications, like project access requests, comments, and new shared apps.

You can now choose to receive all or some notifications via Slack, in addition to (or instead of!) email. Head to your Settings > Notification preferences to authorize Slack and configure notification settings.


We once swore a vow to never add Pie charts to Hex, but we’ve listened to your feedback, put the user first, and... though it pains us to even say it...

released Pie Charts 🥧.

We’re calling them “Arc” charts though, which is both technically correct and protects our Unbreakable Vow.


We’re continuing to add polish to Chart cells with a couple of helpful improvements to standard chart functionality.

  • Area Charts are now supported, and pair especially well with Line layers when visualizing data that’s lightly related.

  • You can sort chart axes by the values of the other axis. This sounds weird no matter how you say it for some reason, so here’s a nice GIF example! PS: this only works for ordinal and nominal axis types.

  • Duplicate chart as Python cell now outputs a Python dict, not a JSON string. This makes custom chart configs a lot more readable, and more easily parameterized based on app logic.


Ever wonder if anyone’s actually looking at that app you built? We talk a lot about “turning data into knowledge” and making sure that your data work has impact— one of the simplest ways to do that is to just see if anyone’s picking up what you’re putting down.

Check out the Published App Views tracker in the bottom left of the sidebar, next to the memory indicator. You can click “See more” to get a detailed access log.


Hex now “soft deletes” projects rather than permanently (and slowly!) deleting them. You’ll select “Move to trash” instead of “Delete”, and have access to restore projects from the Trash for 7 days before permanent deletion.


We’ve already covered most of the contents of the User preferences page, but expect more configuration options to become available here as we build. In addition to Theme settings, Vim key bindings are now available for Code, SQL, and Markdown cells.


  • You’ll notice lots of visual polish around the app, from new icons to pixel perfect alignment.
  • We’ve added a “Contact an admin” option to several places where previously, we just informed users that only admins could take a certain action.

  • Some organizations were missing the default set of statuses and categories. We fixed this, and repopulated your empty lists. If you’ve suddenly had this feature appear, welcome!

  • If you were using $dollar sign math syntax$ in Markdown cells, you probably noticed some strange formatting behavior. We’ve fixed this, but now you have to use $$double dollar sign syntax$$ to achieve the same effect— just like Notion!

  • Multi-select parameters were accidentally able to reference their own output as input, which was fun but not that useful.


Last week I painstakingly constructed a “relative date input” using:

  1. A numeric input parameter (n_periods_ago)

  2. A text input parameter (period_grain)

  3. A python cell (to calculate the right start_date)

Today, I replaced it with a brand new relative date input parameter! When configuring a date input, you can allow relative date inputs and users will be able to choose “Today”, “Yesterday”, etc. instead of picking a specific date.

The best part of this is that relative dates will always be up-to-date, so if you write a query filtered on “Today” or “Yesterday”, every time that app runs the output will be accurate 🎉.




  1. download a Hex project as a portable .yaml file

"we hexported all of our favorite projects yesterday so we could put them on an SD card and bury them in permafrost for our great grandchildren."

If you’ve ever gone to export a Hex project, you’ll have found yourself with an old fashioned .ipynb that doesn’t elegantly handle magical Hex things like input parameters or SQL cells. It’s also easy to forget that these files include rendered cell output, which can sometimes contain sensitive data and shouldn’t be laying around in ~/Downloads.

So we decided to build a better export (hexport) experience to reflect the souped up state of Hex’s Logic View. We thought about making Yet Another Markup Language (.hex?!) but ultimately settled on good old .yaml to keep things simple.

The ability to open a raw Hex project in your IDE of choice unlocks a lot of neat power user workflows, like large scale find & replaces across multiple projects.

You can of course import projects back into Hex, both as completely new projects (from the home page) and as new versions of existing projects (from the History & Versions sidebar).

We hope this portability is both useful in your day to day, and symbolic of our aversion to vendor lock-in— you might build your projects in Hex, but they’re your projects, not ours. Watch this space! This is foundational work that will unlock some exciting things coming imminently down the pipe.


Hex now tracks and surfaces cell-by-cell runtime. You won’t notice anything until a cell’s runtime reaches 5s, upon which the current runtime will be displayed on the run status indicator.

After a cell has been run, you can always review its most recent run stats by opening the run mode dropdown.

We hope this helps with profiling large projects, where improving performance isn’t as simple as removing time.sleep(10) 😛.


We’ve improved Hex’s cartographic abilities, adding support for common mapping libraries like Folium, Pydeck, and Plotly+Mapbox. Many more complex or niche mapmaking libraries also depend on these for rendering outputs, so this adds a whole world of geospatial power to Hex!

See an example of a few different ways to make maps in this Hex project.


There’s a new tab in the home page sidebar called “Learn” that serves a dual function:

For brand new Hex users, the Learn tab guides them through their first steps in Hex from demo projects to sharing their first app. We hope this makes it feel more frictionless for you to invite teammates to Hex without having to sit them down and walk through it first.

For seasoned Hex veterans, the Learn tab catalogs an ever-growing list of tutorials and educational resources to help you get even better at using Hex. We’re always adding to this list, so check back every now and again!


  • The command pallette (cmd+p) has gotten a little smarter about fuzzy matching, which should spare you some occasional frsturation.
  • Multiselect input parameters have spontaneously evolved the ability to “Select All”, something that previously required some manual list editing and code cell intervention.
  • When creating a new project, you can now hit cmd+enter after adding a title rather than having to click on the Create Project button!

  • Sharp eyed users may have noticed that datetime values in table displays were automatically being converted to local time. We’ve fixed this by default, but also added the ability to turn conversion on again from the column format menu!
  • Publish previews for large Hex projects should now load much faster.
  • We’ve improved handling of floats in numeric inputs, so even a decimal-less float (1.) will show as a float, not an int.
  • We’ve resolved some issues with the Duplicate project workflow.

Just how big is your data? Two weeks ago we let you know about our new memory indicator to help you track just how much memory you have left, but sometimes, you just need more memory! We get it!

So, we’re introducing compute profiles in Hex — a new way to control the compute power of your Hex projects. Starting today, you can opt into more memory and processing power, depending on the needs of your project.

During the compute profiles beta phase (roughly until mid-April), we’re excited to give you free access to all upgraded compute profiles. This means you can use these compute profiles during the beta phase at no charge:

  • Medium (default): 8GB RAM & 1 CPU
  • Large: Equivalent to 2x Medium
  • Extra large: Equivalent to 4x Medium

After the end of the beta phase, we’ll move to a usage-based model: projects using larger compute profiles will cost a little extra (only for the time that the compute profile is being used).

We’ll notify you well ahead of charging for any upgraded compute usage and will not charge you retroactively for your usage during the beta phase (that’d be a real jerk move).


You didn’t really ask, but we delivered anyway.

Emoji comment reactions are here! Check it out next time you want to give someone some 🔥 feedback.

You can also now use :emoji: notation in Markdown cells to trigger an emoji picker❗


Remember when your tenth grade math teacher advised you to “show your work” when answering those algebra questions? Well now you can show your work in Hex too.

If you’ve got an app where you want to communicate how the output was created, you can show the code (aka the “source”) of any SQL or Code cell from the new “Element Display Options” in the App builder.


We’re excited to announce our partnership with Databricks! As of last week you can configure new Delta Lake SQL connections right from Hex (and much more coming soon!). Read more about it on our blog.


Need to create a new Hex project in a jiffy? Just type in in your browser and you’re off to the races.


Internally, we’ve been using statuses to track the lifecycle of a project: from draft, to production, to archived. But it bothered us that the drop down for statuses didn’t match this order, so we made them re-orderable!

If you’re a Hex admin, head to the Admin panel to reorder your statuses. We also added some descriptions so you can help your team understand the right way to use statuses (and categories too).


The Hex “zero state”, or what you see when you first create a new project, has gained some functionality. In addition to starting with a SQL or Code cell, you can now easily upload a CSV or add a new data connection right from the blank project.

It’ll even auto-run any CSVs you upload!


  • The folium package is now supported, unlocking many mapmaking workflows
  • Using the homepage search box will now search all projects, not just your recently used ones.
  • Embedded cells now resize their contents to better fit iframe dimensions.