New Year, New Code

Illustration by Jesse. (Our Jesse.)

Part of what we love about WorkFlowy is its old-school charm. But you may not know that the code on the inside has a well-worn patina to match. The aging technology at the heart of WorkFlowy has been holding us back. No longer. Today we are releasing a rewrite of the core product that takes care of this.

Ten years in review

WorkFlowy development first started almost 10 years ago. In web time, that’s 427 years. Back in those days, web-based apps like WorkFlowy were built in ways that we’d now consider barbaric. Many of the tools that we take for granted today (for the initiated: Node, Webpack, ES6, TypeScript, React) didn’t even exist.

On top of that, WorkFlowy has always had a small team. Until very recently, there have only been two engineers, at most. That meant that bringing the code up to code was never the top bullet in the list.

Progress so far

When I joined the team a few months ago, I set out to bring WorkFlowy up-to-date, inside and out. I wanted to meet – if not surpass – the standards of quality and developer productivity that I’d experienced at other great Silicon Valley companies.

We’ve made progress. We redesigned the app. We added types to all our code to make it more robust. We cleaned up a lot of old, complex, brittle – or broken – logic. With the help of our community, we started working on a way for people to build apps and features on top of WorkFlowy. Along the way, we broke some things (sorry), but we also fixed some long-standing issues, and we now feel more confident than ever that we can fix more while breaking less.

A new resolution

However, maintaining and refining existing features is not enough. Our users (you!) have been waiting too long for important features. We (mostly Jesse) have tons of ideas for features and improvements that would enable new ways to use WorkFlowy. We want to take WorkFlowy to the next level while staying true to its nature.

To achieve that with such a small team, using the best tools is essential. React, a web framework developed at Facebook and announced in 2013, has since become the tool of choice for building web sites and apps. (I was lucky to be a UI Engineer at Facebook when React was being introduced.) If you visit a web site, chances are it’s built with React: AirBnB, Reddit, Netflix, Dropbox, The New York Times, Facebook, Instagram, Pinterest, and Slack all use it. We knew we wanted to take advantage of the new programming style that React enables, which means improved productivity for us, and a better experience for you. While newer parts of WorkFlowy – headers, menus, dialogs, and most of the mobile app – were already written in React, the core of the product (the list) had largely been untouched since the dark ages of web development.

We knew we needed to rewrite the list code. The only question was whether we could do it without stopping all new feature development for months and then breaking things for everyone. So we found a way to do it in steps.

What’s new today

Today we are releasing a rewrite of the list code, using React. It is the largest and most complex step on the way to a modern WorkFlowy. We were able to write this new version in only a couple of weeks, but we’ve allowed a couple of months to test it and fine-tune it. I’d like to give a shout-out to all our amazing fans who have helped us test! (If you ever used beta, or the beta app, you are one of them. Thank you!)

What this means for you

What does this mean for you? Hopefully not much, for now. If we did our job, everything should work pretty much like it did before.

One change you might notice is that things are faster – especially if you have long lists or often search across large documents. We took the opportunity to optimize our new code so that, in most cases, everything should feel more responsive.

But the biggest change is that we can now respond to feedback quicker, fix bugs more promptly, and develop new features faster. Everybody has a favorite thing they‘d like WorkFlowy to do better. We know, we have some too! Well, now everything is possible. (Don’t worry, we will keep it elegant and simple.)

As with every big change, some things are bound to be a little bumpy for a little while. Thankfully we have the most loyal and forgiving users (you!). If you do notice something off, please let us know and we promise to fix it quickly.

(One of the things that did not make the cut for this week is the animations when you zoom in and out of a bullet. We found that some people miss them and some people are glad they’re gone. How do you feel? Let us know!)

A toast

While the largest and hardest hurdle is out of the way, we are not done. But it will be much smoother – and faster – sailing from now on. I’m excited about all the cool things we can build now that this is over with. Here’s to a very happy new year, full of new WorkFlowy features!

PS – If you haven’t gone to the Apple or Play stores and given us a review, we would love if you could do that (5 stars would be greatly appreciated, but only if deserved).

69 thoughts on “New Year, New Code

  1. Great job guys. This is the one program that for me is still faster than using a notebook. All others fail in that regard. I look forward to future updates. You have made my life better.

    My vote: KEEP THE ZOOM ANIMATION!

  2. Would love to have the option that makes the toolbar only appear when hover over it and when you hit “escape” to searching for something (for now I can only do the first part with a CSS code using Stylus)

  3. I LOVE this program, have been using it for a few years and it makes my life SO much easier!! Both for work and personal tasks, notes, etc!! Basically, it serves as my To Do list and contains Notes and Tips on projects that I’ve made along the way.

    I love the search feature… just need it to take me to that section when I delete the search word(s) from the field, like it used to. Currently it takes me to the very top of the Workflowy list.

    Thanks a bunch for all your hard work on this program!!

  4. Thanks for being transparent with your past and future. Love the app. So many uses. Looking forward to dates, reminders, and the ability to insert URLs as text (cmd-k). Well done!

  5. Wonderful! I have been using this software for 1 and half years. I love this one. hope you guys
    will keep all this things going well!

  6. I noticed that now there’s no “…” when you have text in the second line and foward of a note, so now I can’t know in a glance where there’s a text burried in a note’s bullet. Please, come back with this visual cue if possible

    1. Yes, please restore the “…” in the notes field. That is a vital visual clue to using Workflowy for me.

      Thanks.

  7. Amazing job guys – thank you for something that I use so many times every day, and something that makes my life better.

  8. Workflowy reflects the way I organise and think. Every now and then I have to examine how I approach things. It is no different for an application such as Workflowy.

    Workflowy is where I spend most of my work day. I am by no means a ‘power user’. I am not for lots of tweaking but am willing to explore when there is an issue to be overcome. I use it simply because it works. I am delighted when I learn something that makes the workflow simpler, easier and more efficient.

    The efforts to improve are greatly appreciated.

    p.s. I favour the animations

  9. I’m very happy to hear this. And now that the list code is so much easier to work with, how about quickly fixing a longstanding irritant: When I hover over a bullet that’s low on my screen, the menu that appears is partly or even entirely off the bottom of the screen! In this situation displaying the menu above the bullet, instead of below it, would fix this.

  10. I can’t export parent topic which has a lot of children topic by OPML format.
    I can’t also use ”export all” on setting.
    When use it, workflowy only show header as below.

    ******@**.co.jp

  11. I would be extemely grateful for a way to clean up search output, and likely speed, via a max columns style flag in the output. I often paste in decent size text amounts into subtext in bullets. This is both convenient and lets me access the full text via mobile app where copying multiple bullets is challenging. Right now one word includes the whole string in the search results.

    Modern search tools do an awesome job at this already, and provide a good template.
    See the discussion here for example:
    https://github.com/BurntSushi/ripgrep/issues/129

  12. Perhaps there is a typo there….’Tis the season for exciting changes! ‘ –> ‘T[h]is the season for exciting changes! ‘ ? Thanks for effort to make Workflowy much better.

  13. Great product!
    However please consider implementing these features:
    * Ability to see history
    * Attach dates to items (can be used for things like due dates, etc.) and ability to filter by date ranges

  14. As much as I appreciate another update that great things are coming, I’m dying for new features that make Workflowy a better alternative to other players in the market, whilst keeping Workflowy’s beauty & simplicity.

    I plead with you to introduce sortable flattened lists for tags & search 🙏🙏🙏

    And my vote is definitely for keeping the animation.

  15. Great news! In terms of features I’m still waiting for the ‘virtual’ dots – the possibility to include existing dots in another dot (I never had time to do it myself but it seems to be a very exciting idea).
    Regarding animations it doesn’t matter for me, I already disabled them ages ago. 😉 I just hope that the service API didn’t change too much because I’m still using the old chrome app with many custom features which I have developed over time – it’s been 5 years since I’ve started to use this app. Keep up the good work!

    1. Soft copy nodes? Please!

      New favourites no longer preserve last view (mourning forever caret+collapse focus) temporarily, so this would be groundbreaking awesome. How to manifest though? In a way simple and easy to current workflowy and layout? Would simply “Copy/Copy to send/Send node to..” suffice? The previous concepts of autocompleting node text or some id etc, seems almost clunky now. With how slow autocomplete and editing can be with larger number of tags in same node or note. Imagine the lag with a new type of “tag” ie virtual-nodes via autocompletion and all..

      Therefore, what about descendant-node exclusions? Ie like duplicate does currently but soft copy would allow re-formatting of duplicate text in different nodes, simultaneously. Great for DIY taglists, instructionals and references, warnings and disclaimers etc. Positioned as parent/title nodes in unrelated outlines. If this is somehow added, then nifty derivations like toggling in and off exclusions per virtual instance also seems possible.. ..i is getting stupidly complicated/demanding/inspired again.

      Still, if only some sort of title could be auto-added to current copypaste of node links, that would be useful enough. More than likely what most are doing anyway; shared nodes in particular: A link to read and a separate link to write and read. Per node. Can never stop taking enough care with accidental edits. And deletes. Would loading titles into tooltips (preferred to messing with text itself, ala markdown or readmore paste triggers on old, too-intuitive newsites) per link, be too much server side..?

      +1 re-adding creation date for nodes. If possible, a way to reset to current/lc time eg old node recyling..

      Additionally and almost reasonless-ly, ++1 of bringing back the footer. If more than one, maybe choose/generate from a list or have a small feedback section that lists them all with options to suggest, upvote and then have machine aggregate top-voted. Or as OP said, contest, even regularly for a bit of community meet community. Or just that old one for legacy. Yeah. You are missed much, quirky noobie-flowy.

      Not to say any little of newly-flowy — Such eyecandy progressions! Great thanks for another full year. Rest well and deservedly for christmas, fam.

  16. All those changes sound good and were probably hard to do.
    Where are the download links for updates for iOS, MAC, and the Windows 10 versions?

    Dave

  17. Bring back “clickable” phone numbers without the need for dashes and parentheses!

    i.e. 1234567890 instead of 123-456-7890

    Also, I did enjoy the zoom animation although it’s not a deal breaker for me 😛

    Love and use Workflowy everyday for personal lists and as a business CRM. Thanks guys!

    1. Interesting. People with long file numbers begged us to take away phone hyperlinks on 9 digit numbers. Our compromise was to keep it with dashes and parentheses. A tricky balance of 2 important use cases!

  18. I totally don’t mind losing the zoom animation.. in fact I love that it’s gone. I can move around faster and my workflowy is soooo much faster now. Thank you ❤ ❤

  19. Been using Workflowy every day for over a year and can’t remember what “animation” was. I checked just now and expand/collapse seems perfect like it is- so I guess that’s one for the status quo.

  20. Great post. Can’t give a 5-start to mobile app yet. Sorry. You have plenty of work to do. How about autosuggest hashtags ?

  21. A convenient way of using starred page is a tree on the left of the page. That tree is shown constantly and you can click any point Current way is not convenient.

    1. A lot of apps do it this way and I find it to be a distraction if it’s always present. Always get sucked into another page from the sidebar instead of focusing on what I’m already drilled down into. Perhaps making it a slideable drawer like the shortcuts would be an alternative.

  22. Since comments seem divided on whether animation should be present (or not), would it not be simpler and more flexible to have a preferences option labeled “Use Animation when Zooming”? so everyone will be happy?

    Personally, I’m holding out for Siri support to add new items so I can drop the Apple Reminders application!

  23. I love workflowy. One minor comment about the new version. The cursor disappears at the commencement of a new paragraph. If I do something else and move the cursor it still does not appear. Only after I start typing does the cursor re-appear. Sometimes the cursor moves and I end up typing elsewhere and have to delete that content. So, when I begin a new and blank paragraph, I need to see the cursor when I touch the pad. Thanks.

  24. Great story about the rewrite. Indeed I noticed a faster search 😉 Congratz on conquering the tech debt!

  25. Just found out about you and began using you a couple of months ago – right after we were hit with a tornado. No computer for a week but when I was finally back up and running – glad to have Workflowy! I keep more in my computer than on any note pad (and I have tons of note pads), but the best part is that I don’t have to worry about where I left my list. Its all there and sync’s beautifully! Great job guys – so glad I found you!!!!

  26. User since 2013. It’s definitely snappier. I didn’t notice the zoom was missing but now that you mention it. I miss it. Keep the zoom. I’m grateful to know you are planning and working on the future of workflowy. I miss the “Make lists not war.” Tagline. Perhaps you can have a contest for the next tagline? “Make cooler lists not warmer planets.”

  27. Thank you for making such a great application! It has basically replaced all other forms of note taking for me and is my brain in my pocket that remembers every thought I have.

  28. The changes were mostly transparent, however, if you’re using Frank.dg’s excellent color highlighting and bullet styles in Chrome, there’s now an annoying flickering (colors switch on and off and line height changes) when hovering over the item bullet. This only started after the new code was implemented. It’s annoying enough where I may have to disable the styles altogether, which I hate to do.

  29. One more suggestion: When dragging an item into a collapsed list, provide a setting option to append it to the bottom of the list rather than the top.

  30. iPhone app request – incorporate Stylish styles. Or incorporate options for modifying what italic, underline, etc. do. Love the underline actually appears as highlighted text ‘hack’. MemoFlowy had that option a long time ago, not sure if it still works as I haven’t used their app in some time – testament that Workflowy app is better than it was.

  31. User since 2012. Good to see the recent investment, and looking forward to the new features!

    I notice now that searching via Ctrl-F (which is sometimes a handy alternative way to search compared to using the Search box) no longer finds all the visible matches on the page. I assume since switching to React you are using virtualised lists to increase performance and so only the items visible in the viewport are rendered to the DOM, which explains this behaviour.

    I didn’t find it all that slow before, and my workflowy.txt export is about 2.5MB. Don’t suppose virtualisation could be disabled with a flag? 🙂

  32. Hello! I recently migrated my whole List Base from Google Tasks to Workflowy, because they dicontinued support for the very best feature I was using it: nested lists. After a quick search (using google, harhar) I stumbled upon this website and quickly got facinated by the simplistic but powerful idea behind it. The ability to zoom in and out of nested lists feels even better now than Google Tasks ever could (and please stay WITH the animation, because the right amount of it makes a software come alive!). One thing I am missing now is a way to add structured temporal information to an item and to show all such items in a timelike fashion – speaking of a of calendar or something like that (but just now I discovered they are in the making 🙂 so keep Workflowy as simple as possible but gently add the right amount of features to increase our productivity even further! Thank you very much.

    1. Hey there, Are you certain a Calendar is in development for Workflowy? That would be a huge huge time saver. I’m having to use Wunderlist in conjunction with Workflowy, just for the sake of its calendar feature. It would be great if there was a Calendar view that you can “activate” and have lists sorted by their assigned dates. Of course as long as its simple and not disruptive.

Comments are closed.