Skip to main content
Latest release:

We’ve got some good ones this week: a brand new map cell, project-level search, and user directory sync.

🗺️ Map cell

We’ve added a map cell to Hex, so you can visualize geospatial data without writing a single line of new code. Find it in the Display cell tab, right next to charts and table display cells.

When you’re digging into a dataset, the last thing you want to do is muddle through confusing syntax for a geospatial Python library you don’t regularly use. You just want to see your data on a beautiful map.

et voila: https://app.hex.tech/hex/app/eb4f9bd1-6b05-414d-adf4-cb1aa55d9cf3/latest.

Feedback request: Maps can get pretty complex, so we’re shipping a more simple cell and will let user feedback guide our enhancements. Please reply and let us know what kinds of mapping features you’d like the map cell to support!

If you’re like me and spend a lot of time in VS code, you’ve instinctively tried to cmd+shift+f in Hex before, to search across an entire project. And like me, felt silly when it didn’t work.

Well if you can work up the courage, try it again! From anywhere in a project, you can now hit cmd+shift+f (or use the Search sidebar tab) to search for text throughout the entire project. Cmd+f still works as usual for find+replace within cells.

🔐 User directory sync

Hex can now sync users and groups directly from Okta, Active Directory, and pretty much every other directory under the enterprise sun.

This means you can easily manage users in bulk, configure complex group-based access policies, and only make user edits in one system.

This is an Enterprise feature. If you’re excited about it, please get in touch to set this up.

Other improvements

  • Pandas-generated pivot tables (or any multi-index dataframe) can now be rendered nicely in table display cells!

  • SQL cells have a new option to "Infer numeric datatypes", that lets you turn off automatic decimal → float casting when working with very high precision numbers. Learn more in the docs.

  • Metric cells (you know, the ones that display a single value in your app) have been renamed to “Single Value” cells (makes sense, right?).

We have some gems for you today: screenshots in scheduled emails, dbt Docs, a beautiful new Notion integration, and full-screen editing mode.

🖼️ Screenshots in scheduled emails

Scheduled runs in Hex now have a new option: to include screenshots of the app right in the email! We also gave the scheduled run dialog a bit of a makeover 💅.

Note: screenshots can only be sent to people and groups with App User permission or above on an app.

📑 dbt Docs in schema browser

Our dbt integration just got way better! Now we show all the documentation from your dbt project right in your schema browser, including column descriptions and column-level test information. They even support markdown!

In case you missed it, we shipped an awesome improvement to our Notion embeds: Link Previews! You can paste the link to a published app into any Notion doc, as a mention (one-line link) or preview (full interactive embed). Check it out:

You can read more about it on Notion’s blog here.

↔️ Full-width editing mode

You can now toggle a full-width editing mode! This is great for those of you with r e a l l y w i d e monitors.

Other improvements

  • The "upper left" logo will link to Hex home for apps with custom logos.
  • You can also now enable Dark mode from the command palette:

Bugs squashed

  • We made a bunch of fixes to our dbt integration under the hood.
  • Dark mode had some lingering light elements - now appropriately dimmed.

Welcome to another edition of ye olde Hexe Product Updates.

PS: We’re going to the Snowflake Summit in June, and we’d love to see you there! If you’re going too, drop us a line (you can just reply to the email) and we’ll pack something extra special in our bags for you 💜.

🔄 GitHub sync

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

📝 Text cell

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.

Admins can now upload a custom logo that will be displayed on published apps. Other parts of Hex, like the home page and Notebook 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.

Other improvements

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

Bugs squashed

  • 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 Single value 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.

This round of Hex updates includes some long-requested functionality, significant improvements to core Hex workflows that you use every day... and some dark, unspeakable magic. The usual!

🐍 Dark mode

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.

👀 Project view stats

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.

⚙️ User preferences (and Vim mode)

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.

🔔 Slack notifications

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.

🗑️ Move to Trash

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.

🥧 Pie charts

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.

🖍️ Notebook diff

When publishing, in addition to the app preview you’ll now see a "Notebook 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.

💅 Chart improvements

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.

Other improvements

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

Bugs squashed

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

Welcome back to another jam-packed edition of Hex Product Updates, featuring loads of improvements to core Hex workflows. We like to pretend we are clever product strategists, but actually every single feature shipped this round is the result of direct feedback from users like you 💜.

So please keep the excellent feedback flowing! We seriously talk about every single piece of user feedback. It makes Hex better for everyone, and it makes our jobs a lot more fun 🙂.

PS: In case you missed it, we raised a Series B the other week! That’s not a product update per se, but you can think of it as a good omen of more product updates to come.

📆 Relative Date input

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

⏳ Cell runtime

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) 😛.

🗄️ Hexport

verb

/heksˈpôrt,ˈhekspôrt/

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

🧠 Learn tab

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!

🗺️ Map support

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.

Other improvements

  • 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!

Bugs squashed

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

Did you celebrate Pi Day on Monday? We celebrated by building this app to explore all 146 (!) types of pie listed on Wikipedia. And don’t worry, if you missed Pi Day this week, you can always celebrate it on 22 July (22/7 for those outside the States) — any excuse to eat more pie.

🍟 Compute profiles beta

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

🚀 Emoji everywhere

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❗

👩‍🏫 Show code in app

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.

🧱 Databricks integration

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.

🆕 hex.new

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

🏃‍♂️ New zero state

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!

🔀 Re-orderable statuses

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

Other improvements

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

Bugs squashed

  • We fixed a bug where raw cells in uploaded .ipynbs were being imported as code, often causing errors. Now they are imported as Markdown, which is much safer (there was a reason you marked it as raw, right?)
  • Single value cells with very long numbers no longer overflow their boundaries.
  • Our ongoing quest to banish scrollbars continues— you’ll never see them on a slider input parameter again.
  • Clicking on a comment in an email notification will now take you right to that comment.