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.
Create a sound document outline: start with h1 and don’t skip levels.
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.
Use <button> if you need a button: they are focusable by default and support keyboard events.
Use fragments to avoid invalid HTML: <tr><div><td> → <tr><><td>.
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.
Make notifications accessible to everyone: use role="alert" or role="status" to make screen readers announce notifications.
Announce page changes: on single page applications screen readers should read the page title on navigation. Check out Reach Router.
Refactoring only temporarily helps with technical debt.
Second system effect: the tendency of small, elegant, and successful systems to be succeeded by overengineered, 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 copypaste.
Decoupled code is better than DRY.
Three constraints you can use today for more resilient frontend architecture:
Source code dependencies must point inward: don’t depend on other team’s code.
Be conservative about code reuse: avoid coupling code that diverges over time.
Enforce your boundaries: don’t let people depend on your code (with dependency-cruiser).