ODR2: Building dynamic web frontends using Webflow

Status: (draft) accepted

Deciders: Adi Eyal, JD Bothma, Lunga Mthembu, Matthew Stark

Date: 2019-10-?

Context and Problem Statement

We build many fairly simple but often at least slightly interactive or data-driven tools for the web.

Convenient, usable interfaces are critical to most of our projects. The friction stopping a user from completing their task must be minimised.

We usually ought to iterate towards an ideal solution since it is hard to predict what the right tool is to build, or what users will find challenging to use.

We have found iteration with the typical designer + frontend developer(s) arrangement frustrating, since frontend developers struggle to implement the design and struggle to communicate what can be compromised in the design, while designers struggle to communicate what the essential aspects of the design are.

Decision drivers

  • The designer must be able to rapidly iterate on the design in a tight loop with feedback from users

  • We do not have the massive budgets industry dev teams like e-commerce have to push pixels to perfection

  • The design process must be informed by real or very realistic data

  • The design must be aesthetically pleasing - this promotes trust and confidence in a tool, as well as excitement and enthusiasm for using a tool

Considered options

  • Webflow with custom javascript to manipulate the page content based on data from outside webflow

    • Perhaps hosted by webflow with custom javascript linked from elsewhere

    • Perhaps exported and hosted as a static site or as django templates

  • Hand-written html with a css framework like bootstrap, ES6 and/or jQuery

    • Perhaps react for particularly interactive components

    • Perhaps a component library with hand-written HTML like Materialize CSS

  • React full sites, e.g. with frameworks like Gatsby

Decision outcome

Chosen option: "Webflow with custom javascript to manipulate the page content based on data from outside webflow" because in trials we found it effective at meeting the above requirements in our context.

Positive consequences

  • We have been able to build and iterate on beautiful interfaces rapidly with a very small team of skilled developers, even though they are not CSS experts.

  • We have been able to continue building user interfaces despite our frontend lead developer leaving the organisation.

  • There's no styling step for frontend developers. We can rapidly prototype design options in-browser with working HTML and CSS, and then the it's built - there's no re-implementation step after design. Only Javascript needs to be written if the new component needs dynamic data in production.

  • Webflow developers can build fun or helpful interactions which often work without additional dev effort in the final page.

Negative consequences

  • This approach requires strict discipline from the webflow developer and javascript developer to adhere to conventions that keeps a site built using this approach maintainable.

  • There is very little existing awareness of this approach.

    • We have to discover and codify the conventions ourselves.

    • Every new developer working on our projects has to learn this approach and the required conventions

  • Every dynamic/data-driven component requires javascript to be written - e.g. we have to build our own library for populating and responding to user interaction of a dropdown.

    • We might be able to build a reusable library of this code

  • Webflow does not lend itself to branching in the development process as is important when

    • two or more changes are being implement

    • one has to be released without the other

    • it is not clear at the outset which will be released first

    • e.g. the main menu is being changed in a way that requires javascript changes, but we can't make the javascript changes yet because we need to fix another bug more urgently, but the main menu has already been changed in webflow.

    • This becomes less of an issue

      • the more established the webflow component library (and its accompanying javascript) is

      • and the more you use cloned components over in-place components

  • You can't upgrade your component library quite like a typical one. You can backport features to old sites though, and manually fix conflicting styles.

  • It's hard for other organisations to build on such user interfaces, even though they can clone the webflow project.

    • Webflow Lite $16/month or Team $70+/month is needed to be able to update and export the design or components, which impacts on other organisations' willingness to build on as open source.

    • Upstreaming improvements, or merging in upstream changes, is less controlled and well-defined than coded interfaces.

  • We often have to stop and think whether an interaction should be built in webflow or javascript/css

    • This might still be cheaper considering that we often don't have to build those interactions outside webflow.

  • Repository history of CSS and HTML files become useless due to Webflow not necessarily respecting consistency and order when exporting.

Last updated