Sitemap
component-driven

Component-driven design & development for the modern web

React Finland 2019

5 min readMay 2, 2019

--

A conference was held on April 24–26 in Helsinki, Finland. I was there with a workshop on design systems for React developers and a talk. Check out my notes on the last year.

Press enter or click to view image in full size

The conference

React Finland is one of my favorite conferences. It was my second time and both times I felt good as a speaker. Talks were great: two days with big breaks to have enough time to talk to your friends. I liked the selection of talks: design systems, animation, architecture. The venue (a building with a tower on a photo above) was also good.

The talks

MobX — The Journey by Michel Weststrate

Slides, video.

  • If you can’t sell the library, sell the problem.
  • “MobX […] tries to enable you to go home early each day.”
  • Always keep learning: stay slightly out of your comfort zone.
  • Open source good parts: learning, happy users, core contributors, beautiful conferences, awesome people, video tutorials, workshops, book, getting a raise, seeing others succeed.
  • Open source bad parts: making your library work with all other libraries, no holidays, now you have two jobs.
  • When filing issues, remember: you are asking for free help on something you are being paid for.
  • Guard your heart and live a balanced life.

Append-only development with React: An intro to Behavioral programming by Luca Matteis

Slides, video.

  • “Programming language are practically irrelevant in making products.”
  • Code maintenance is the root of the problem.
  • Make changes without having to read and maintain the code.
  • Newly added code can change how old code is executed.
  • Behavioral programming for JavaScript.

Mind-Reading with Adaptive and Intelligent UIs in React by David Khourshid

Slides, video.

  • Adapt to people, not just devices.
  • Microsoft Clippy is the first adaptive UI.
  • A/B tests are ineffective.
  • Collect stats on state changes and optimize flows.

A Common Design Language. Let Designers and Developers talk to each other by Andrey Okonetchnikov

Slides, video.

  • Design: typography, color and spacing.
  • Developers talk in code.
  • Designers talk in UI primitives.
  • Design tools talk in shapes, like arrow and triangles.
  • Common language: UI primitives.
  • component-driven.io: component-driven design & development for the modern web.

A practical guide to building your design system infrastructure by Varya Stepanova

Slides, video.

  • Design system is shared practices, tools, processes and community.
  • Living style guides: React Styleguidist, Storybook.
  • Visual regression tests.
  • Uses Styleguidist to document plain HTML components.
  • Design system site: single source of truth.
  • Automate everything.
  • Welcome contributions: edit on GitHub button, list of contributors.
  • Blogging with WordPress as a backend and Gatsby.

12 Tips for More Accessible React Apps by Manuel Matuzovic

Slides, video.

  1. Create a sound document outline: start with h1 and don't skip levels.
  2. Hide content correctly: display: none, visibility: hidden and hidden are hiding content from screen readers, use a combination of CSS properties that hides content only visually or VisuallyHidden component from Reach UI.
  3. Use <button> if you need a button: they are focusable by default and support keyboard events.
  4. Use fragments to avoid invalid HTML: <tr><div><td> → <tr><><td>.
  5. Take care of focus management: can be a problem for modals, put focus inside a modal on open and don’t let it leave the modal.
  6. Make notifications accessible to everyone: use role="alert" or role="status" to make screen readers announce notifications.
  7. Announce page changes: on single page applications screen readers should read the page title on navigation. Check out Reach Router.
  8. Test your React code automatically: use React-Axe and eslint-plugin-jsx-a11y.

Get Artem Sapegin’s stories in your inbox

Join Medium for free to get updates from this writer.

Delightful UI animations by understanding the brain by Bruno Lourenço

Video.

  • Animation — an illusion of movement.
  • React Morph: morphing UI transitions.
  • Creates a clone of an element and uses FLIP technique to do the morphing animation.

Custom CSS is the path to inconsistent UI by Artem Sapegin

Slides, video.

  • We use custom styles mostly for typography, whitespace and layout.
  • This leads to inconsistent UI because CSS is too expressive.
  • Design tokens are the first step to achieve UI consistency.
  • But not all combinations of design tokens are good: you may create unreadable text for example.
  • UI primitives (primitive components) is the solution.
  • Text and Heading components to render all text in an application.
  • Box, Flex and Grid (Stack) components to define whitespace and layouts.
  • Use styled-system to create such components: works with any CSS in JS library.

Creating layouts that last by Artem Zakharchenko

Video.

Scalable (Design) Systems with TypeScript by Tejas Kumar

Slides, video.

  • TypeScript is a good choice for design systems: enforces contracts, confidence to make changes, allows you to scale.
  • Uses React Styleguidist and TypeScript for their design system.
  • Hacked Styleguidist to use TypeScript and Monaco editor in component examples.

Building resilient frontend architecture by Monica Lent

Slides, video.

  • Refactoring only temporarily helps with technical debt.
  • Second system effect: the tendency of small, elegant, and successful systems to be succeeded by over-engineered, bloated systems because of inflated expectations and overconfidence.
  • “‘Legacy code’” often differs from its suggested alternative by actually working and scaling.” — Bjarne Stroustrup.
  • The real cost of software is not the initial development, but maintenance over time.
  • Architecture as enabling constraints: constraints about how we use data and code that help us move faster over time.
  • Shared dependencies: add them to the design system or copy-paste.
  • Decoupled code is better than DRY.

Three constraints you can use today for more resilient frontend architecture:

  1. Source code dependencies must point inward: don’t depend on other team’s code.
  2. Be conservative about code reuse: avoid coupling code that diverges over time.
  3. Enforce your boundaries: don’t let people depend on your code (with dependency-cruiser).

“Intuitive” Tooling by Carolyn Stransky

Slides, video.

  • Hard to learn things: TypeScript, Redux, GraphQL, Gatsby, Flexbox.
  • “We mistake familiarity for simplicity” — Jim Fisher.
  • Spiral of silence.
  • Empathy matters more in education.
  • Start an internal mentorship program.
  • Ban words like “easy” from your vocabulary.
  • Just because you understand something doesn’t mean that someone else will too.

Links

Subscribe to my newsletter: https://tinyletter.com/sapegin

--

--