FAQ
You can ask your question in our Telegram chat, Discord community, and GitHub Discussions.
Is there a toolkit or a linter?β
Yes! We have a linter called Steiger to check your project's architecture and folder generators through a CLI or IDEs.
Where to store the layout/template of pages?β
If you need plain markup layouts, you can keep them in shared/ui
. If you need to use higher layers inside, there are a few options:
- Perhaps you don't need layouts at all? If the layout is only a few lines, it might be reasonable to duplicate the code in each page rather than try to abstract it.
- If you do need layouts, you can have them as separate widgets or pages, and compose them in your router configuration in App. Nested routing is another option.
What is the difference between a feature and an entity?β
An entity is a real-life concept that your app is working with. A feature is an interaction that provides real-life value to your appβs users, the thing people want to do with your entities.
For more information, along with examples, see the Reference page on slices.
Can I embed pages/features/entities into each other?β
Yes, but this embedding should happen in higher layers. For example, inside a widget, you can import both features and then insert one feature into another as props/children.
You cannot import one feature from another feature, this is prohibited by the import rule on layers.
What about Atomic Design?β
The current version of the methodology does not require nor prohibit the use of Atomic Design together with Feature-Sliced Design.
For example, Atomic Design can be applied well for the ui
segment of modules.
Are there any useful resources/articles/etc. about FSD?β
Yes! https://github.com/feature-sliced/awesome
Why do I need Feature-Sliced Design?β
It helps you and your team to quickly overview the project in terms of its main value-bringing components. A standardized architecture helps to speed up onboarding and resolves debates about code structure. See the motivation page to learn more about why FSD was created.
Does a novice developer need an architecture/methodology?β
Rather yes than no
Usually, when you design and develop a project in one person, everything goes smoothly. But if there are pauses in development, new developers are added to the team - then problems come
How do I work with the authorization context?β
Answered here