Electron NextJS Boilerplate: A Developer's Guide to Efficiency

published on 07 December 2023

Most developers would agree that building desktop apps with JavaScript can be challenging and time-consuming.

Leveraging an Electron NextJS boilerplate allows you to build cross-platform desktop apps incredibly fast, while still taking advantage of the latest web technologies.

In this comprehensive guide, you'll learn all about Electron NextJS boilerplates - from exploring popular GitHub templates to optimizing and deploying your boilerplate-powered apps for efficiency and scale.

Introduction to Electron NextJS Boilerplates

Electron and NextJS boilerplates provide developers with pre-configured project templates to accelerate building desktop applications using web technologies. Rather than starting from scratch, boilerplates have folder structures, workflows, configs, dependencies, and code samples already set up according to best practices. This allows engineers to skip repetitive project initialization tasks and directly focus on writing application logic.

Specifically, Electron boilerplates make it easier to develop cross-platform desktop apps using JavaScript, HTML, and CSS. And NextJS boilerplates provide optimized React framework tooling for server-side rendering and static site generation. By combining these two technologies in a boilerplate, developers can quickly build high-performance desktop apps leveraging the power of React and Node.js.

In summary, boilerplates boost productivity by facilitating project kickoffs. And Electron + NextJS is an ideal combo for crafting desktop apps with React's component model. This guide explores open-source boilerplate options and development efficiencies afforded by this stack.

Exploring the Electron-Boilerplate Github Ecosystem

GitHub hosts thousands of open-source Electron and NextJS boilerplates to choose from. Developers can browse by stars, forks, keywords, topics, and more filters to find well-tested templates aligned to their needs. Some top Electron boilerplate GitHub repos include:

  • electron-react-boilerplate: A popular boilerplate with React and Redux configured out the box. Over 18k stars.
  • electron-next-boilerplate: Combines Electron with NextJS for SSR React desktop apps. 100+ stars.
  • electron-forge-react-boilerplate: Scaffolded using Electron Forge and TypeScript. 600+ stars.

The open-source nature allows developers to browse boilerplate source code before using. They can check coding styles, fork as a starting point, submit PRs, and get involved. These communities accelerate Electron + NextJS learnings and best practices.

NextJS: The React Framework Supercharging Electron Apps

NextJS is an open-source React framework for production web applications. It introduced key innovations like server-side rendering and static site generation to improve performance. When leveraged in Electron apps, these features boost initial load time since first page HTML is generated at build time rather than client-side.

Additional NextJS capabilities like simplified routing, API endpoints, TypeScript support, Sass compilation, and more reduce boilerplate code in Electron apps. Developers can focus on building features rather than wiring up configurations.

Overall, the NextJS framework enhances developer experience. Its tooling helps manage common complexity points in web projects elegantly and enables engineers to build JavaScript desktop apps faster alongside Electron.

Why Marrying Electron with NextJS Leads to Development Nirvana

Electron is already a proven platform for building cross-platform desktop apps using web languages like JavaScript, CSS, and HTML. It opens access to native desktop capabilities via Node.js APIs otherwise unavailable in the browser.

Pairing this technology with the NextJS React Framework unlocks an even faster and full-featured development workflow. NextJS hot reloading saves developers seconds on every code change iteration. And capabilities like server-side rendering, static site generation, TypeScript support, API routing, and Sass compilation reduce boilerplate code even further.

On top of faster builds and reduced complexity, the true nirvana is in developer experience. Electron + NextJS apps retain the comfort of coding with web technologies while also accessing native desktop features. The combo enables teams to build production-ready desktop apps incredibly quickly leveraging skills they already have.

In summary, integrating the capabilities of Electron and the NextJS React framework creates a streamlined path to shipping high-quality desktop applications. And boilerplates that combine these two technologies provide the perfect kickstart template for this development nirvana.

Can Nextjs be used with Electron?

Yes, Next.js can be used with Electron to build cross-platform desktop applications. Here is an overview of how to use Next.js with Electron:

Creating the Next.js App

First, create a Next.js app as usual with npx create-next-app. Build out the app components and pages you need for your desktop app.

Make sure to add an .env file to configure environment variables and enable server-side rendering:

ENV=production
NODE_ENV=production

Configuring the Build

Next, adjust the next.config.js file to specify a build output directory called out:

module.exports = {
  output: 'out'
}

This builds the Next.js static files to the /out folder instead of .next.

Creating the Electron Project

Initialize an Electron project in the root folder with npm init electron-app.

Install production dependencies like electron and electron-builder.

Modify electron-builder.yml to specify the app build:

files:
  - out/**/*

This will copy the Next.js build from /out to Electron's /dist folder.

Bringing Together Next.js and Electron

In main.js, import app from electron and specify the build path:

const app = electron.app
app.on('ready', () => {
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 800  
  })

  mainWindow.loadURL(`file://${__dirname}/dist/index.html`)
})

This launches the Electron window loading the Next.js build!

With the power of Next.js and Electron combined, you can build cross-platform desktop apps using React and Node.js.

What is Electron boilerplate?

Oct 23, 2023. Electron boilerplate is a template or a set of standard files and directories that developers use as a starting point for creating an Electron application.

An Electron boilerplate can save developers significant time by providing a basic project structure, configuration files, dependencies, and scripts out-of-the-box. This allows the developer to avoid repetitive setup tasks and instead focus on building the unique aspects of their application.

Some key components of a typical Electron boilerplate:

  • Project scaffolding - The basic file and folder structure needed for an Electron app. This includes a main process folder, renderer process folder(s), and common folders like assets and build.
  • Configuration files - Such as package.json with defined scripts, .gitignore, ESLint configs, etc.
  • Dependencies - The boilerplate comes with Electron and other libraries like React or Vue JS already installed and configured.
  • Build scripts - Scripts to run various tasks like launching the app, building installers, linting, testing, etc.
  • Docs - Readme file explaining how to use and customize the boilerplate.

So in summary, an Electron boilerplate kickstarts development by providing an Electron app skeleton that developers can simply clone, customize, and build upon. The boilerplate handles the repetitive setup work so developers can focus on the app functionality rather than build configuration.

Some popular Electron boilerplates include Electron React Boilerplate, Electron Vue Boilerplate, and Electron Forge. They provide varying configurations to suit different frameworks and needs.

Using a boilerplate can greatly accelerate building Electron desktop apps. Developers can conveniently customize the boilerplate code rather than starting from absolute scratch. The boilerplate handles the complex work behind the scenes so developers can focus on the app.

Is Electron js still used?

Electron continues to be widely used for developing cross-platform desktop applications with web technologies. Its convenience for reusing code across different operating systems and ability to leverage existing JavaScript skills have made it a popular choice.

Some key reasons Electron retains its popularity:

  • Portability: Apps built with Electron run on Windows, MacOS and Linux with minimal additional effort. Developers can write the app once and distribute it across platforms.
  • Use of web technologies: Electron apps are written using HTML, CSS and JavaScript. This allows web developers to build desktop apps without learning new languages.
  • Abundant modules/tooling: The npm ecosystem provides a vast array of readily available modules and tools for Electron apps. Things like build systems, UI frameworks etc. help accelerate development.
  • Backed by large tech companies: Companies like Microsoft, Slack, Discord and Visual Studio Code use Electron. Their investment in the platform indicates Electron will continue to be supported.
  • Thriving community: Electron has an engaged open-source community constantly working to improve it. The frequency of new releases and bug fixes provides confidence in Electron's vitality.

Some popular apps built on Electron demonstrating its current relevance include Microsoft Teams, Skype, Slack, Discord, Visual Studio Code and GitHub Desktop. While alternatives do exist, Electron's advantages have ensured it remains a solid option for developing cross-platform desktop apps with web technologies. Its convenience, portability and rich ecosystem continue to drive adoption.

What is the difference between Electron builder and Electron forge?

Electron Builder and Electron Forge are two popular build tools that help automate the process of packaging and distributing Electron apps.

Key Differences

Some of the key differences between the two tools include:

  • Scope - Electron Forge is a complete solution for creating, developing, and packaging Electron apps with features like project scaffolding, live reload etc. Electron Builder focuses specifically on handling the build and packaging process.
  • Configuration - Electron Forge uses a simple "forge.config.js" file for configuration while Electron Builder has more configurable options through its builder.js file.
  • Customization - Electron Builder offers more customization options for builds like defining multiple application targets, different build types etc. Electron Forge conventions may be harder to modify.
  • Plugins - Electron Builder supports third-party plugins to enable additional functionality. Electron Forge plugins are more limited currently.
  • Usage - Electron Forge is simpler and easier to get started with through its generators and conventions. Electron Builder has a steeper learning curve but enables more control.

Key Similarities

Despite their differences, the tools share some common ground as well:

  • Both tools can produce cross-platform builds for Mac, Windows and Linux.
  • They rely on the same underlying Electron packager library to handle packaging of the app.
  • Each tool can integrate with CI/CD pipelines for automated build deployments.
  • They help avoid needing to write complex build configuration code manually.

So in summary, Electron Forge offers a smoother onboarding with more baked-in features while Electron Builder provides more customization and control over builds at the cost of added complexity. Choosing one over the other depends on specific project needs and developer preferences.

sbb-itb-5683811

Top Electron NextJS Boilerplates

Electron and NextJS are powerful frameworks for building cross-platform desktop apps. Pairing them together provides a solid foundation to develop rich applications using web technologies. In this section, we'll explore some of the top open-source boilerplates that combine these technologies for streamlined development workflows.

Unpacking the Electron-Forge-React Boilerplate for Streamlined Development

The Electron-Forge-React boilerplate offers a lightweight starter kit for crafting apps using React, Electron, and Electron Forge. Forge handles many complex configuration tasks so developers can focus on coding.

Key features of this boilerplate include:

  • React front-end with Hot Module Reloading
  • Utilizes Electron Forge for simplified building/distribution
  • Supports auto-updating via providers like GitHub
  • Backed by the Electron userland organization

Forge removes the need to manually define build steps or maintain a complex webpack config. Its configuration-based approach and sensible defaults help accelerate the development process.

Some usage examples:

// Importing necessary Electron APIs 
const { app, BrowserWindow } = require('electron')

// Creating browser window 
let win = new BrowserWindow()

// Loading index.html 
win.loadFile('index.html')

Since Forge handles packaging and shipping, developers can concentrate more on crafting high-quality experiences rather than build tooling. For rapid prototyping or hackathons, this boilerplate is hard to beat.

Building with the Electron-React-Boilerplate JavaScript Foundation

Electron-react-boilerplate provides another popular starting point for Electron + React projects. It uses JavaScript for the React web app and TypeScript on the Electron backend.

Benefits include:

  • Linting with ESLint and Prettier
  • Testing via Jest, Enzyme, and CircleCI
  • State management with Redux and Redux-Saga
  • Pre-configured build scripts powered by Webpack
  • Support for DevTools extensions like Redux DevTools

Since React utilizes JavaScript while Electron leverages TypeScript, developers get the best of both worlds. Type safety prevents bugs on the backend while JavaScript offers React flexibility.

Example usage:

// Front-end React component

const Counter = ({ value, onIncrement, onDecrement }) => (
  <div>
    <button onClick={onIncrement}>+</button>
    <span>{value}</span> 
    <button onClick={onDecrement}>-</button>
  </div>
)

// Interacting with Electron APIs

ipcMain.on('ping', (event) => {
  event.sender.send('pong', 'hello!') 
})

This foundation works well for rapidly building cross-platform desktop apps. The webpack configuration helps optimize production builds while facilitating an efficient dev workflow.

Leveraging TypeScript with the Electron-React-Boilerplate

From the same developers as the previous boilerplate, electron-react-boilerplate-typescript provides an alternative using TypeScript for both the React application and Electron backend.

Advantages include:

  • End-to-end TypeScript for type safety
  • Linting via ESLint and TSLint
  • Jest testing with Enzyme and CircleCI
  • State management via Redux + Redux-Saga
  • Webpack setup for dev and production

Since TypeScript is utilized throughout, developers gain enhanced autocompletion, refactoring, and other editor features. Bugs can be caught early before making it to production.

Example usage:

// Strongly typed React component

interface CounterProps {
  value: number
  onIncrement: () => void
  onDecrement: () => void
}

const Counter: React.FC<CounterProps> = ({ 
  value,
  onIncrement,
  onDecrement
}) => (
  // ...
)


// Interacting with Electron in TypeScript

ipcMain.on('ping', (event: Electron.IpcMainEvent) => {
  event.sender.send('pong', 'hello!') 
})

For teams or developers that prefer TypeScript, this boilerplate delivers an end-to-end type safe environment. The configuration builds upon the other boilerplate but with TypeScript instead of JavaScript.

In summary, these open-source Electron and NextJS starters provide solid foundations for crafting desktop applications using modern web technologies. They help kickstart development while optimizing workflows. Expect rapid iteration coupled with enhanced quality through type safety and testing. By leveraging these boilerplates as a baseline, teams can build, ship, and update cross-platform apps faster than ever.

Diving Into a Sample Boilerplate

The electron-react-boilerplate provides an excellent starting point for building cross-platform desktop apps with Electron and React. Let's do a deep dive into its structure, customization points, and extensibility options.

Project Layout and Architecture

The boilerplate uses a straightforward layout separating Electron and React code into src-electron and src-react folders respectively.

Within src-react, component files are organized by feature following a domain-driven design. For example, all UI components related to the application sidebar are located under src-react/ui/Sidebar.

The entry point for the Electron main process is `src-electron/main.js` which launches the app window. The React UI gets bootstrapped from `src-react/index.js` which renders the `` component.

Communication between the two happens through the IPC Main and IPC Renderer modules to send synchronous and asynchronous messages.

Overall, this promotes separation of concerns and modular code organization. Customizing one layer in isolation gets simpler without impacting the other.

Configuration and Dependency Management

electron-react-boilerplate uses Webpack for bundling along with Babel, PostCSS, and other compilers. The webpack.common.js file contains shared webpack config used across development and production.

The boilerplate is preloaded with base dependencies for React, Redux, React Router, and Electron. Additional dependencies can be installed normally through npm or yarn which get saved to package.json.

For customizing bundler output, tweaking Babel transforms, adding more postcss plugins etc, modify the respective config files in config/. This allows adapting the build setup to your specific needs.

Customizing the React UI Code

The React Router is preconfigured for declarative navigation between pages. To add a new page, simply create a component file under pages/ like:

// pages/About.js

export default function About() {
  return <div>About Page</div>; 
}

Then import and add it to the `` menu in `App.js`:

// App.js

import About from 'pages/About';

<Switch>
 <Route path="/about" component={About} /> 
</Switch>

That's it! The boilerplate is built to make UI changes rapidly. You can customize or add SASS styling, Redux reducers and sagas for state management as you build out the app.

Overall, electron-react-boilerplate kickstarts development with its superbly organized structure, build setup, dependency management and ability to tweak every aspect from UI to build tooling. Add your own secret sauce on top to build performant, customizable cross-platform desktop apps with Electron and React!

Optimizing the Boilerplate Code

The Electron React Boilerplate provides an excellent starting point for building performant, offline-capable desktop apps with Electron and React. However, for even greater optimizations, here are some best practices to consider when extending the boilerplate.

Code Splitting and Lazy Loading

One of the easiest ways to improve initial load times is to split your bundle into separate chunks, and lazily load non-critical ones. The boilerplate is configured for this out of the box.

You can use dynamic imports to lazy load additional pages and components:

import("./Component").then((Component) => {
  // Use Component here
});

And React Suspense to control the loading state:

<Suspense fallback={<Loader />}>
  <LazyLoadedComponent /> 
</Suspense>

Chunk splitting works seamlessly with the boilerplate's routing system.

Enabling Service Workers

Thanks to Electron's use of Chromium under the hood, you can leverage powerful features like service workers for offline support.

The boilerplate has offline-plugin installed. To enable:

// Enable offline-first service worker
OfflinePlugin.install();

Now your app will reliably load, even without a connection. All necessary assets are cached on first load. The boilerplate handles cache invalidation too.

Tree Shaking and Minification

To reduce bundle size, unused modules can be "shaken" out into a separate file not shipped to users. The boilerplate supports this via:

// Config snippet
optimization: {
  usedExports: true
}  

Additionally, enabling TerserPlugin minifies and compresses output:

// Enable minification
optimization: {    
  minimize: true,
  minimizer: [new TerserPlugin()]
}

Combining both techniques significantly cuts down on unused and duplicate code for smaller builds.

By following these tips when building upon the robust Electron React Boilerplate foundation, you can optimize performance, enable offline functionality, and reduce JavaScript payload size. The boilerplate gives you a head start, but also room to customize as needed!

Publishing and Deploying Boilerplate Apps

A guide to shipping and updating Electron React apps built on the boilerplate to users on Mac, Windows, and Linux.

Electron-Builder: Your Partner for App Packaging and Distribution

Electron-builder provides an efficient way to package and distribute Electron applications for Mac, Windows, and Linux. Some key features include:

"build": {
  "appId": "com.example.app",
  "mac": {
    "category": "public.app-category.utilities"
  } 
}
  • Platform-specific settings like app category, icons, etc.
  • Auto-updating using Electron Release Server or custom endpoints
  • Code signing and notarization for Mac apps
  • NSIS and InnoSetup installers for Windows
  • DEB and RPM packages for Linux
  • Publishing to GitHub, Amazon S3, etc.

By handling mundane packaging tasks, electron-builder allows developers to focus on coding. Its deep customization options cater to various project needs.

Ensuring Your App Stays Up-to-Date with Auto-Updating

Electron apps can configure auto-updating to ship updates directly to users. This removes the need to manually distribute new versions.

"build": {
  "publish": {
    "provider": "generic",
    "url": "http://example.com/updates"
  },
  "appId": "com.example.app"
}

The boilerplate uses Electron Release Server for updates by default. Alternatively, you can setup a custom endpoint and host new versions yourself.

Additional tips:

  • Use semantic versioning for smooth upgrades
  • Notify users of changes in update logs
  • Test autoupdating early in development

Auto-updating is vital for sustainable long-term apps that users can rely on.

Efficient CLI Tools for Electron React Boilerplate Deployment

The boilerplate offers scripts to simplify release management:

npm run release // prepares app 
npm run publish // ships to users

You can configure these scripts or add custom ones in package.json:

"scripts": {
  "local": "ebr electron .",
  
  "prepare-foo": "ebr prepare -p foo",
  "release-foo": "ebr release -t foo" 
}

Additional features like publishing to multiple channels help streamline complex workflows.

Overall, electron-react-boilerplate provides robust tools to build, package, and ship cross-platform Electron apps with ease. Its modular structure makes customizing any part of the process simple.

Electron-React-Boilerplate Tutorial: From Setup to Deployment

Electron-React-Boilerplate is an open source boilerplate that combines the power of Electron, React, and Webpack to build cross-platform desktop apps using JavaScript, HTML, and CSS. This comprehensive tutorial will walk you through setting up, developing, and deploying an app using this useful boilerplate.

Installing and Setting Up the Boilerplate

To get started, install the electron-react-boilerplate module using npm:

npx create-electron-app my-app --template=electron-react-boilerplate

This will scaffold a new app called my-app using the boilerplate. Next, navigate into the app directory:

cd my-app

And install the dependencies:

yarn install

From here, you can launch the boilerplate app in development mode to see it running out of the box:

yarn dev

This will open a development instance of your Electron React app using hot module replacement for rapid development.

Developing Your App

With the boilerplate installed, you can now start building your app's features by editing the source code.

The main entry points are:

  • ./src/main/main.dev.ts: Main process code executed in the main Electron process.
  • ./src/renderer/index.tsx: Entry point for the React renderer process.

Some key things to know:

  • Use React and modern JavaScript to build your app's UI components in ./src/renderer.
  • Access Node.js API in the Main process through ./src/main.
  • Shared code can be placed in ./src/shared.

For example, to add a new page:

  • Create a new React component in ./src/renderer/screens.
  • Add a route for it in ./src/renderer/router.tsx.
  • Import and render the page component.

Leveraging this boilerplate structure allows you to build complex, engaging cross-platform Electron apps using latest web technologies!

Deploying the Final App

Once your app is ready, you can generate distributables for macOS, Windows and Linux using Electron Builder:

yarn dist

This will package the app into an installer for production. Configure builder options in electron-builder.yml like icons and metadata.

Finally publish updates using auto-update for seamless delivery. Configure this in the Main process code.

Conclusion

Using Electron-React-Boilerplate kickstarts building cross-platform desktop apps with React and Electron quickly. It handles complex tooling and configs for you so you can focus on development. This guide covered setting up the boilerplate, giving an overview of the structure, and finally deploying the app for distribution. Check out the docs for more!

Conclusion: Mastering the Art of Electron NextJS Boilerplates

Electron NextJS boilerplates provide an excellent starting point for developers looking to build cross-platform desktop applications with React and Electron. By handling much of the initial project configuration, they allow developers to skip repetitive setup tasks and focus their efforts on actually building the app.

However, boilerplates are not one-size-fits-all solutions. Developers still need to customize and extend the baseline code to suit their specific project needs. When used properly though, boilerplates can significantly accelerate app development without compromising code quality or product vision.

Main Reasons for Using Boilerplates: A Recap

Some key benefits boilerplates provide include:

  • Faster project spin up: By eliminating the need to configure build tools, folder structures, etc. from scratch, developers can start writing actual app code almost immediately. This saves dozens of hours early on.
  • Proven code architecture: Following the conventions used in boilerplates, which are created by experienced developers, helps avoid rookie architectural mistakes that can slow development velocity long-term.
  • Built-in app distribution: Boilerplates have out-of-the-box configurations for bundling, packaging, and shipping cross-platform desktop apps using Electron. Developers can leverage this instead of figuring out complex build processes themselves.

Areas Requiring Customization

However, some app areas will still require customization, including:

  • UI/UX design: The visual presentation and user flows need adaptation based on the specific app concept and target audience.
  • Core business logic: The algorithms, data models, and backend integrations that bring the product vision to life must be implemented from the ground up.
  • 3rd party API integrations: Connecting to external platforms via API calls is an app-specific concern, beyond the scope of what a generic boilerplate can provide.

The Bottom Line: Focusing on Value Delivery

By providing a solid app foundation with Electron and React already configured, boilerplates handle the tedious grunt work, allowing developers to focus their efforts on end-user value delivery. They transform the development process from a painful sequence of setup tasks to an enjoyable experience of turning imagination into reality.

Leveraged properly, Electron NextJS boilerplates help developers bypass the friction of building an app from absolute scratch and instead spend their precious time and energy on the functionality that truly matters to users. The end result is higher quality, more polished apps that can delight target audiences by solving real problems.

Related posts

Read more

Make your website with
Unicorn Platform Badge icon