The Architecture Decision
Custom Shopify functionality can live in theme code or in apps. The choice affects maintainability, performance, and capability. Making the wrong choice creates problems later.
Theme Code
What it is
Liquid templates, CSS, and JavaScript that live in the theme. Modified through theme editor or direct code changes.
Good for
- Presentation and layout
- Simple client-side interactivity
- Theme-specific customization
- Quick changes by theme developers
Limitations
- Cannot access external APIs server-side
- Cannot store custom data
- Lost when theme changes
- No admin configuration UI
Apps
What they are
External applications that connect to Shopify via API. Include backend logic, database, and optional storefront components.
Good for
- External integrations
- Custom data storage
- Complex business logic
- Admin interfaces
- Functionality that survives theme changes
Trade-offs
- More complex to build
- Requires hosting
- Ongoing maintenance
- Separate deployment from theme
App Extensions
Middle ground
App extensions (theme blocks, checkout extensions) provide app functionality integrated into themes. Portable across themes, maintainable by app developers.
Use cases
- Custom sections that should survive theme changes
- Checkout customization
- Widgets that need backend data
Decision Framework
Needs external API?
App. Theme code cannot reliably call external APIs server-side.
Needs custom data storage?
App with database, or metafields if data fits Shopify's model.
Should survive theme changes?
App or app extension. Theme code is theme-dependent.
Purely presentational?
Theme code is simpler and faster to implement.
For development guidance, see custom Shopify apps.
Working with LiftKit Digital
LiftKit Digital advises on architecture for custom Shopify functionality. We choose the right approach for your requirements.
To discuss, get in touch.